DevCleaner Download .dmg

How to Remove Old iOS Simulators & Runtimes

Every Xcode upgrade leaves simulator corpses behind — devices that can never boot, runtimes you'll never target again, and data folders that quietly eat tens of gigabytes. Here's how to delete them properly.

Where simulator data lives

Simulators store two kinds of bulk: device data (apps, photos, settings per simulated iPhone) and runtime disk images (the iOS version itself). Both sit under ~/Library/Developer/CoreSimulator/.

du -sh ~/Library/Developer/CoreSimulator/* | sort -hr

On an active iOS developer's Mac, Devices alone is often 5–40 GB; downloaded runtimes add another 4–8 GB each. Total simulator footprint commonly reaches 20–60 GB.

Not simulator data: DerivedData, DeviceSupport and archives live elsewhere and are covered in our Xcode DerivedData & caches guide. This article focuses only on CoreSimulator.

What you're cleaning (ranked by risk)

CategoryWhat it isTypical sizeRisk
Unavailable simulatorsDevices whose runtime was removed by an Xcode upgrade1–15 GBSAFE
Superseded runtimesOlder iOS versions you no longer target4–8 GB eachWARNING
Devices on old runtimesSimulators still tied to a superseded iOS version0.5–3 GB eachWARNING
Booted simulatorsCurrently running — skip until shut downDANGER

Step 1: delete unavailable simulators

After every major Xcode upgrade, simulators tied to the old runtime become unavailable — they appear greyed out in Xcode and can never boot. They're dead weight:

xcrun simctl delete unavailable

This is the highest-confidence cleanup on this page. Zero downside: if the runtime is gone, the device was already useless. DevCleaner runs this same command for its "Unavailable Simulators" category.

To see what's left and how much each device weighs:

xcrun simctl list devices
du -sh ~/Library/Developer/CoreSimulator/Devices/* | sort -hr | head -20

Step 2: remove superseded runtimes

macOS downloads iOS runtimes as disk images. If you're on Xcode 16 with iOS 18 installed, the iOS 16 and 17 runtime images are probably still sitting there.

xcrun simctl runtime list

Each row shows the runtime version and its UUID. Delete a superseded one:

xcrun simctl runtime delete <runtime-uuid>

Xcode re-downloads a runtime if you ever open a project that needs it — a few minutes over the network, once per version. Keep the runtime that matches your minimum deployment target and the latest; delete the rest.

Delete devices on that runtime first. If simulators still reference an old runtime, remove them individually before deleting the runtime image: xcrun simctl delete <device-udid>. Don't delete a booted simulator — shut it down in Xcode or Simulator.app first.

Step 3: prune individual devices you don't need

Sometimes you created five iPhone 15 simulators for different branches and only need one. List devices with their UDIDs:

xcrun simctl list devices available

Delete a specific device (apps, photos, caches — everything in its data folder):

xcrun simctl delete <device-udid>

To wipe a device's content but keep the device itself (useful before a clean test run):

xcrun simctl erase <device-udid>

Never delete CoreSimulator with rm

Tempting when du shows 40 GB and you want it gone now. Don't. rm -rf ~/Library/Developer/CoreSimulator/Devices/… leaves Xcode's device registry pointing at folders that no longer exist — broken simulators, cryptic build failures, and a reinstall dance.

simctl updates both the database and the filesystem together. That's the only supported path.

See every simulator sized before you delete

DevCleaner lists unavailable simulators, superseded runtimes and individual devices on old iOS versions as separate rows — each sized, rated Safe or Warning, and removed through simctl (never rm). Unavailable devices are pre-selected; runtime and device deletions stay opt-in. Part of a full Xcode scan alongside DerivedData, DeviceSupport and archives.

Download DevCleaner — free
free · no account · 4 MB · macOS 14+

FAQ

How often should I run simctl delete unavailable?
After every Xcode major upgrade — that's when runtimes get replaced and old devices go stale. Monthly is fine if you upgrade betas frequently.
Does erasing a simulator free as much space as deleting it?
Usually not quite — the device shell remains. erase clears apps and data; delete removes the whole device directory. Delete devices you won't use again; erase ones you'll keep.
Can I remove simulators from Xcode's GUI?
Yes — Window → Devices and Simulators → Simulators, right-click → Delete. For bulk unavailable cleanup, the Terminal command is faster.
What about watchOS and tvOS simulators?
Same commands, same paths. simctl list shows all platforms; unavailable ones are removed by the same delete unavailable sweep.