MacBook App Cleaner
HomeBlog › How to Delete Xcode Simulators on a Mac

How to Delete Xcode Simulators on a Mac

Published August 7, 2026 · 6 min read · By the MacBook App Cleaner team

In short: Old iOS simulator runtimes quietly eat tens of gigabytes on any Mac used for development. This guide shows you how to delete Xcode simulators the safe way, and what to do when the delete option is grayed out or simctl refuses to remove a runtime.

If you build iOS or watchOS apps, Xcode simulators are one of the quietest storage hogs on your Mac. Each simulator runtime is a full copy of an OS image, and Xcode keeps old ones around long after you have moved on. It is common to find 30 to 80 GB tied up in runtimes and device states you will never boot again. The good news: you can delete Xcode simulators cleanly, and every method below is reversible in the sense that runtimes can be re-downloaded from Apple at any time.

Before you start, it helps to understand what you are removing. A simulator device is a saved configuration (an iPhone 15, an Apple Watch, and so on) plus its data. A runtime is the actual OS image that device boots. Deleting a device frees a little space; deleting an unused runtime frees the most. You almost never need both an old runtime and the current one, so old runtimes are the first thing to clear.

See What You Actually Have

Open Terminal (Applications > Utilities > Terminal) and list your runtimes and devices. This is read-only, so nothing changes yet:

xcrun simctl list runtimes

That prints every installed runtime with its version and identifier. To see the individual simulator devices grouped by runtime, run:

xcrun simctl list devices

Look for runtimes flagged as (unavailable) and for long lists of duplicate or half-configured devices. Those are your best cleanup targets. Previewing before you remove anything is the whole point here: you decide exactly what goes, rather than trusting a tool to guess for you.

Delete Simulators From Inside Xcode

The friendliest route needs no Terminal at all. In Xcode, open the menu Window > Devices and Simulators, then click the Simulators tab. You will see every simulator device in the sidebar. Right-click any one you no longer need and choose Delete, or select it and press the Delete key. This removes that device and its data.

To clear old OS images, open Xcode > Settings (or Preferences on older releases), go to the Components or Platforms tab, and you can delete simulator runtimes you are not using. On Sonoma and Sequoia with recent Xcode, runtimes live under Platforms; select an old one and remove it there.

Delete Simulators With simctl in Terminal

For a faster sweep, simctl handles this in one line. To remove every device that is no longer usable because its runtime is gone, run:

xcrun simctl delete unavailable

This deletes only devices Xcode already considers broken, so it is a safe first pass. To wipe every simulator device (configurations only, not the runtimes), you can use xcrun simctl delete all, but be deliberate: this removes any custom device setups you may want to keep.

When "Delete" Is Unavailable or simctl Refuses

Sometimes the runtime you want gone will not delete: the option is grayed out, or a command reports that a runtime is in use or cannot be found. This usually means one of a few things. A simulator from that runtime may still be booted, so quit the Simulator app entirely and try again. Xcode itself may hold a lock, so quit Xcode before removing runtimes. And on recent macOS, simulator runtimes are managed as system-level components, so xcrun simctl delete targets devices, not the OS images themselves.

For runtimes specifically, use the dedicated runtime command to list and then delete by identifier:

xcrun simctl runtime list

Then delete a specific one with xcrun simctl runtime delete , using the identifier from that list. If a runtime still refuses to go, reboot the Mac to clear any lingering mount or lock, then repeat. Because runtimes re-download from Xcode on demand, removing one is never permanent damage. One thing to never do: do not go digging inside /System or hand-deleting protected system files to force a removal. Stick to Xcode and simctl, which remove things the supported way.

A Quick Word on Safety and Trash

The manual routes above act immediately rather than routing to the Trash, which is why previewing first matters so much. If you would rather have a recoverable step, a good cleanup app should show you a preview, default to user-level junk, and move removals to the Trash so a mistake is a quick restore, not a permanent loss. It also has no reason to phone home while doing so, and you can confirm that yourself with a firewall like Little Snitch.

If you want a cleaner that follows those principles for the rest of your Mac, CoreSweep is my top free pick: free forever, an optional one-time Pro at $49, zero telemetry, and reversible Trash-based deletes. For a lighter, great-value alternative, SkoonMac is a solid runner-up: free to use, with a one-time Pro at $19.

Do a runtime cleanup once a quarter and after each major Xcode update, and those tens of gigabytes stay yours. List first, delete what you recognize, and keep only the runtimes you actually build against.

Frequently asked questions

How much space do Xcode simulators actually take up?

Each simulator runtime is a full copy of an OS image, and Xcode keeps old ones long after you stop using them. On a Mac used for development it is common to find 30 to 80 GB tied up in runtimes and device states you will never boot again. Deleting an unused runtime frees the most space; deleting an individual device frees only a little.

Is it safe to delete Xcode simulators and runtimes?

Yes. Every method here is reversible in the sense that runtimes re-download from Apple on demand, so removing one is never permanent damage. List your runtimes and devices first so you delete only what you recognize, and stick to Xcode and simctl rather than digging inside /System or hand-deleting protected files.

Why is the Delete option grayed out or why won't simctl remove a runtime?

Usually something is still holding the runtime. A simulator from it may still be booted, so quit the Simulator app; Xcode itself may hold a lock, so quit Xcode too. On recent macOS, runtimes are system-level components, so use xcrun simctl runtime delete <identifier> for them, and if one still refuses, reboot to clear a lingering lock and try again.

The easy way to do this safely

If you'd rather not do it by hand, the two cleaners we rate highest run with a preview first and the Trash as a safety net — and neither sends any data off your Mac.

CoreSweep (free to use; Pro a one-time $49) is our top pick. SkoonMac (free; Pro $19 once) is the best-value runner-up. See the full comparison.

← All Mac cleaning guides · Back to the comparison