Skip to content
MacClearings

How to delete iOS simulators and free CoreSimulator space

By Updated 5 min read

Short answer: Run xcrun simctl delete unavailable to remove simulators whose runtime is gone, delete others by ID with xcrun simctl delete, and remove runtimes you don't use in Xcode > Settings > Components. Don't empty ~/Library/Developer/CoreSimulator/Devices by hand: it holds every simulator and the apps and data on it.

On this page
  1. What's in CoreSimulator
  2. See what's using the space
  3. Delete unavailable simulators
  4. Delete or reset specific simulators
  5. Delete simulator runtimes you don't use
  6. Clear simulator caches
  7. SwiftUI previews have their own simulators
  8. Keep simulators from piling up
  9. What's safe to remove, and what isn't
  10. How MacClearings does it

What's in CoreSimulator

Simulator data lives in two places, and they're managed differently.

In your home folder, ~/Library/Developer/CoreSimulator holds:

  • Devices: one folder per simulator, named by its ID (a long UUID). Each contains everything installed on that simulator: apps, their documents, photos, keychain items and settings.
  • Caches: data simulators build from their runtimes so they start faster.

Outside your home folder, the runtimes are the iOS, watchOS, tvOS and visionOS versions the simulators run. Xcode downloads them as disk images and stores them under /Library/Developer/CoreSimulator or /System/Library/AssetsV2, so they don't show up when you look through your home folder.

~/Library/Developer/CoreSimulator/Devices

Simulators

Made by
Xcode
What it is
Every simulator you've created, with the apps and data installed on each.
Does it come back?
Doesn't come back
Without it
Every simulator, and the apps and data on them, would go with it. Xcode creates new default simulators as needed.
How to manage it
Xcode → Window → Devices and Simulators
From the MacClearings field guide, as it appears in the app.

Simulators accumulate because Xcode creates a set of default simulators for each runtime you install and keeps them until you remove them. When you remove a runtime, its simulators stay in Devices but can't boot anymore. Apple's tools call those unavailable.

See what's using the space

Measure the home-folder part first:

du -sh ~/Library/Developer/CoreSimulator/*

To see which simulators are biggest, measure the device folders, largest last:

du -sh ~/Library/Developer/CoreSimulator/Devices/* | sort -h

The folder names are IDs, not device names. Match them with:

xcrun simctl list devices

Each line shows a simulator's name, its ID in parentheses and its state. Simulators that can't run anymore are listed separately:

xcrun simctl list devices unavailable

If one simulator is unexpectedly large, an app on it is usually storing data. To find a particular app's data folder on the simulator that's running, use its bundle ID:

xcrun simctl get_app_container booted com.example.MyApp data

Open the printed path in Finder with Go > Go to Folder, and use File > Get Info to see its size. Deleting the app from the simulator, or erasing the simulator, clears it.

Runtimes are listed with their identifiers by:

xcrun simctl runtime list

Delete unavailable simulators

This is the safe first step, and the one Apple's developer support suggests for clearing out simulators that no longer have a matching runtime (Apple Developer Forums).

  1. Quit Xcode and the simulators

    Quit Xcode, and close any running simulator so none of the devices you remove is in use.

  2. List the simulators that no longer work

    In Terminal, run xcrun simctl list devices unavailable. These are simulators whose runtime isn't installed anymore.

  3. Delete them

    Run xcrun simctl delete unavailable. This removes them permanently; they don't go to the Trash.

  4. Delete other simulators you don't need

    Run xcrun simctl list devices, copy the ID in parentheses for each simulator you want to remove, and run xcrun simctl delete followed by those IDs.

  5. Remove runtimes you no longer test on

    In Xcode, choose Xcode > Settings, click Components, click the Info button next to an old runtime, and click Delete.

The simctl help describes unavailable as "devices that are not supported by the current Xcode SDK." To read it yourself, run xcrun simctl help delete.

xcrun simctl delete removes simulators permanently. They don't go to the Trash and can't be undone, so check the list before you run it.

Delete or reset specific simulators

To remove simulators you created and don't use, pass their IDs:

xcrun simctl delete 1A2B3C4D-0000-0000-0000-000000000000

To keep a simulator but clear everything on it, erase it instead. This is the simulator equivalent of Erase All Content and Settings:

xcrun simctl erase 1A2B3C4D-0000-0000-0000-000000000000

xcrun simctl erase all resets every simulator, and xcrun simctl delete all removes every simulator. Both are permanent, and both take the apps and data on those simulators with them. Xcode creates new default simulators when it needs them.

In Xcode, the place to manage simulators depends on the version. Xcode 26 and earlier have a Simulators list in Window, then Devices and Simulators, where you can Control-click a simulator and delete it. Xcode 27 moves this to Device Hub, where Control-click and Remove takes a simulator out of the sidebar (Apple Developer Documentation). Apple's documentation doesn't say whether Remove also frees the simulator's data, so use simctl when disk space is the goal.

Delete simulator runtimes you don't use

xcrun simctl runtime list shows each runtime's size, and they're easy to overlook because they live outside your home folder. Remove them in Xcode, then Settings, then Components: click the Info button next to a runtime, then Delete. Apple's documentation describes exactly this for "components you no longer use" (Apple Developer Documentation).

From Terminal, list the runtimes and delete one by its identifier:

xcrun simctl runtime list
xcrun simctl runtime delete 5E6F7A8B-0000-0000-0000-000000000000

Replace the identifier with one from your own list. In Xcode 27.1, xcrun simctl runtime also offers options such as --notUsedSinceDays and --dry-run. Run xcrun simctl runtime without arguments to see what your version supports.

/Library/Developer/CoreSimulator/Images

Simulator runtimes

Made by
Xcode
What it is
The iOS, watchOS, tvOS and visionOS versions simulators run, downloaded by Xcode.
Does it come back?
Comes back when it's needed
Without it
Simulators for those versions won't start until Xcode downloads the runtimes again.
How to manage it
Xcode → Settings → Components
From the MacClearings field guide, as it appears in the app.

Don't drag runtime disk images to the Trash or unmount them in Disk Utility. Apple's developer support says not to use Disk Utility for these and to use simctl or the Components settings instead (Apple Developer Forums). If you need a runtime again, Xcode downloads it from the same Components settings.

Clear simulator caches

~/Library/Developer/CoreSimulator/Caches is safe to clear while no simulator is running. Simulators rebuild what they need, so the next launch of each one is slower.

~/Library/Developer/CoreSimulator/Caches

Simulator caches

Made by
Xcode
What it is
Caches simulators build from their runtimes so they start faster.
Does it come back?
Comes back when it's needed
Without it
Simulators rebuild them the next time they start, so the first launch takes longer.
From the MacClearings field guide, as it appears in the app.

On macOS 15 and later, the built-in trash command moves the contents to the Trash instead of deleting them:

trash ~/Library/Developer/CoreSimulator/Caches/*

This space comes back as you use simulators. It's worth clearing when a simulator misbehaves, less so as a way to keep space free.

SwiftUI previews have their own simulators

Xcode runs SwiftUI previews in a separate set of simulators that doesn't appear in xcrun simctl list. They live in ~/Library/Developer/Xcode/UserData/Previews, and they're set up again the next time you open a preview.

~/Library/Developer/Xcode/UserData/Previews

SwiftUI preview data

Made by
Xcode
What it is
Simulators and build data Xcode uses to show SwiftUI previews.
Does it come back?
Comes back when it's needed
Without it
Xcode sets them up again the next time you open a preview.
From the MacClearings field guide, as it appears in the app.

If previews are stuck or that folder has grown large, quit Xcode and move its Simulator Devices folder to the Trash. The first preview afterwards takes longer while Xcode rebuilds it.

Keep simulators from piling up

A few habits stop the problem from coming back:

  • After each Xcode update, run xcrun simctl delete unavailable. Simulators for runtimes the new Xcode no longer supports show up as unavailable.
  • Remove runtimes below your deployment target. If every app you work on requires iOS 18, an iOS 17 runtime has nothing left to test.
  • Erase instead of creating new simulators when you need a clean state. xcrun simctl erase keeps the simulator and clears its contents.
  • Check the total now and then with du -sh ~/Library/Developer/CoreSimulator and xcrun simctl runtime list.

What's safe to remove, and what isn't

Safe:

  • Unavailable simulators (xcrun simctl delete unavailable). They can't boot anyway.
  • Simulator caches, while no simulator is running.
  • Runtimes you don't test on, removed through Xcode or simctl. You can download them again.

Think first:

  • Simulators you set up by hand. Test accounts, sample data and installed builds go with them.
  • delete all and erase all. Fine for a fresh start, but they're all-or-nothing.

Don't:

  • Empty ~/Library/Developer/CoreSimulator/Devices in Finder while Xcode is running.
  • Remove runtime images in /Library/Developer/CoreSimulator or /System/Library/AssetsV2 by hand.

Simulators are one part of Xcode's footprint. For the rest, see why Xcode takes up so much space.

How MacClearings does it

MacClearings has two Suggestions rules for simulators, in its Xcode group.

The first finds unavailable simulators. It asks xcrun simctl list devices unavailable for them, a read-only command, and lists each one by name and runtime with its size. They're checked for you, because they can't boot anymore.

Suggestions rule · Xcode

Unavailable simulators

Simulators for runtimes that are no longer installed. Xcode can't boot them anymore.

Checked for you, because it's safe to lose and doesn't come straight back.

The second covers simulator and SwiftUI preview caches, which are rebuilt on demand.

Suggestions rule · Xcode

Simulator and preview caches

Caches the iOS Simulator and SwiftUI previews rebuild on demand.

  • ~/Library/Developer/CoreSimulator/Caches/*
  • ~/Library/Developer/Xcode/UserData/Previews/Simulator Devices
  • ~/Library/Caches/com.apple.dt.Xcode

Checked for you, because it's safe to lose and doesn't come straight back.

MacClearings doesn't run simctl delete. It moves the folders you've reviewed to the Trash, so a simulator you moved by mistake can be put back from History with Undo or Put Back while it's still in the Trash. Before anything moves, it checks each folder again and skips any that changed since it was measured or that a running process has open. MacClearings never empties the Trash, so the space comes back when you empty it.

MacClearings Suggestions: developer files, caches and logs grouped with their sizes and checkboxes, and 14.5 GB staged for review.
Suggestions in MacClearings. Unavailable simulators and simulator caches are in the Xcode group, checked for you, and wait in the Cleanup tray until you review them.

Runtimes are handled differently. Breakdown lists each installed runtime with its size and the date it was last used, read with xcrun simctl runtime list, and points you to Xcode's Components settings to remove it. No MacClearings rule moves runtimes: Xcode keeps track of them, so removing them through Xcode or simctl is the safe way.

The developer page lists every rule MacClearings has for Xcode and simulators, with the exact paths.

Questions

Can I delete ~/Library/Developer/CoreSimulator/Devices?

You can, but every simulator goes with it, including the apps, files and settings on each one. Xcode creates new default simulators when it needs them. Deleting specific simulators with xcrun simctl delete is the safer way to get the same space back.

How do I delete an iOS simulator on my Mac?

In Terminal, run xcrun simctl list devices to find the simulator's ID, then xcrun simctl delete followed by that ID. xcrun simctl delete unavailable removes every simulator whose runtime is no longer installed.

How do I clear the cache in the iOS simulator?

To reset one simulator to a clean state, run xcrun simctl erase followed by its ID, or erase all for every simulator. The shared caches in ~/Library/Developer/CoreSimulator/Caches can be moved to the Trash while no simulator is running; they're rebuilt on the next launch.

How much space does the iOS Simulator take up?

It varies with how many simulators and runtimes you have. Check with du -sh ~/Library/Developer/CoreSimulator for simulators and caches, and xcrun simctl runtime list for the runtimes, which are stored outside your home folder.

Why are iOS files taking up space on my Mac?

In Storage settings, iOS Files means iPhone and iPad backups and firmware, as Apple describes it, not simulators. To remove old backups, select your device in Finder and click Manage Backups.

Find out what's filling your Mac.

MacClearings explains your disk in plain words and moves only what you review to the Trash, with Undo. Paid once, every update included.

Get it at launch

$12.50 launch price for the first 25 buyers, then $25.

macOS 15+ · Apple silicon and Intel