If your Mac's available storage has been quietly shrinking and you have Xcode installed, Xcode simulators are a likely culprit. A single iOS 18 simulator runtime can consume 10 GB or more, and most developers accumulate several runtimes across iOS, watchOS, tvOS, and visionOS without ever cleaning them up. This guide shows you exactly where simulators live on disk, why they balloon over time, and how to recover the space safely without breaking your workflow.
Where Xcode Simulators Are Stored on Mac
All simulator data lives under a single root directory:
~/Library/Developer/CoreSimulator/
This is inside your home folder's Library, which is hidden by default. The two most storage-heavy subdirectories inside it are:
~/Library/Developer/CoreSimulator/Runtimes/: the OS images themselves (iOS, watchOS, tvOS, visionOS). Each runtime is a large bundle, typically 7 GB to 14 GB depending on the platform and version.~/Library/Developer/CoreSimulator/Devices/: individual simulated device instances. Each device UUID folder contains a full filesystem image for that simulated device, including installed apps, containers, and sandboxed data.
To open the CoreSimulator folder directly in Finder, press Cmd + Shift + G in Finder and paste:
~/Library/Developer/CoreSimulator
How to See Exactly How Much Space Simulators Are Using
The fastest way to get a real number is in Terminal. Run:
du -sh ~/Library/Developer/CoreSimulator/
To break it down by subdirectory:
du -sh ~/Library/Developer/CoreSimulator/Runtimes/*
du -sh ~/Library/Developer/CoreSimulator/Devices/
It is common to see 30 GB to 80 GB in this folder if you have been developing across multiple iOS generations. Developers who have been using Xcode for several years without pruning can find well over 100 GB consumed here.
What Each Runtimes Entry Contains
Inside Runtimes/, each entry corresponds to a downloaded simulator platform, for example:
com.apple.CoreSimulator.SimRuntime.iOS-18-4.simruntime
com.apple.CoreSimulator.SimRuntime.watchOS-11-4.simruntime
com.apple.CoreSimulator.SimRuntime.tvOS-18-4.simruntime
Each .simruntime bundle contains a disk image of the operating system that runs inside the simulator. These are read-only and shared across all device instances that use that runtime, so deleting a runtime removes it from every associated device in your simulator list.
What Each Devices Entry Contains
Inside Devices/, Xcode creates one folder per simulated device, named by UUID. A typical mid-use installation has 20 to 60 device folders. The size varies widely:
- A fresh, never-launched device: a few hundred MB
- A device that has run a heavy app with local data: 2 GB to 6 GB
- An old device from a previous runtime, no longer listed in Xcode: still present, still consuming space
This last category is the most common source of silent bloat. When you download a new iOS runtime and Xcode creates fresh device instances, the old ones often linger on disk even if they no longer appear in the Simulator app's device list.
Which Simulator Data Is Safe to Delete
Not everything in CoreSimulator can be removed freely. Here is how to think about what is and is not safe.
Safe to Delete
- Old runtimes you no longer test against. If you are targeting iOS 17 and above and have an iOS 15 runtime sitting on disk, it is almost certainly unused. Removing it will not affect your ability to run current simulators.
- Unavailable or orphaned devices. Xcode's
simctltool tracks which devices are "unavailable" because their runtime has been removed. These device folders remain on disk but serve no purpose. - Simulator caches and derived data inside device containers. App containers inside
Devices/accumulate cached network responses, logs, and temporary files just like a real device would. These are safe to clear.
Not Safe to Delete (Without Care)
- The runtime for any iOS version you are actively testing against. Removing it will break every device instance that relies on it until you re-download the runtime.
- Device folders for simulators with important app state or test data. If you rely on a specific seeded database or user account inside a simulator, deleting its device folder removes that data permanently.
- Anything under
~/Library/Developer/Xcode/DerivedData/. This is a separate location (not inside CoreSimulator) containing build artifacts. It is safe to delete entirely, but it is not simulator data and has its own cleanup story.
How to Delete Simulator Runtimes the Right Way
The recommended way to remove runtimes is through Xcode itself, not by manually deleting folders. Manual deletion can leave metadata inconsistencies that confuse Xcode and simctl.
Using Xcode Settings
- Open Xcode and go to Xcode > Settings (or press Cmd +,).
- Click the Platforms tab.
- Find the simulator runtime you want to remove (for example, iOS 15.5 Simulator).
- Hover over it and click the Delete button (trash icon) that appears.
- Confirm the deletion. Xcode will remove the runtime bundle cleanly.
Using simctl in Terminal
To list all runtimes and see which are available or unavailable:
xcrun simctl runtime list
To delete a specific runtime by identifier:
xcrun simctl runtime delete <runtime-identifier>
To erase all unavailable (orphaned) device instances in one shot:
xcrun simctl delete unavailable
This last command is one of the most useful cleanup steps available. It targets only devices whose runtime is already gone, so it does not touch any device you can still launch.
Where Simulator Data Also Hides: CoreSimulator Caches
Beyond Runtimes/ and Devices/, there is a secondary cache location worth knowing about:
~/Library/Caches/com.apple.dt.instruments/
~/Library/Caches/com.apple.dt.Xcode/
Instruments traces and Xcode's own cache accumulate here over time. These are generally safe to clear when Xcode is not running, and macOS may or may not reclaim them automatically under storage pressure depending on how the cache entries were flagged by Xcode.
There is also a system-level cache location at:
/Library/Developer/CoreSimulator/Cryptex/
This is used by newer runtimes on Apple Silicon for cryptex images. Do not manually delete from this path. If it is consuming space, use the Xcode Platforms pane to remove the associated runtime, which will clean up the cryptex entry as well.
How Simulator Storage Grows Over Time
The typical growth pattern looks like this: a fresh Xcode install with one iOS runtime takes around 10 to 12 GB. After a year of active development, with runtimes accumulated across major iOS releases, watchOS, and a handful of launched devices that have run real apps, that figure routinely climbs to 50 GB or beyond. The Devices/ folder alone can exceed the runtimes folder in total size once app containers and test data accumulate.
The compounding factor is that Xcode does not automatically remove old runtimes when you download a new one. Every major iOS release adds another 7 to 10 GB runtime to the pile unless you explicitly clean up.
Getting a Visual Picture of Simulator Bloat
Terminal du commands give you the numbers, but a disk map makes the relative sizes much easier to act on. Crumb's treemap view surfaces ~/Library/Developer/CoreSimulator/ as one of the largest consumer directories on most developer Macs, and lets you see at a glance which runtime bundles or device folders are driving the bulk of the usage. From there you can decide what to hand off to Xcode's Platforms pane for clean removal.
Whether you use a visual tool or stick to Terminal, the key habit is checking simulator storage after each major Xcode or iOS version release. A few minutes of cleanup at that point prevents the kind of slow multi-year accumulation that leaves developers wondering where 80 GB went.