Xcode disk hogs

Where Does Xcode Store Simulators and How Big Do They Get? (2026)

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 simctl tool 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

  1. Open Xcode and go to Xcode > Settings (or press Cmd +,).
  2. Click the Platforms tab.
  3. Find the simulator runtime you want to remove (for example, iOS 15.5 Simulator).
  4. Hover over it and click the Delete button (trash icon) that appears.
  5. 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.

Reclaim your disk in one click

Crumb audits your whole Mac, tells you what's safe to delete, and frees the space in seconds — private, local, and Apple-notarized.

Download Crumb for macOS

Frequently asked questions

Where are Xcode simulators stored on Mac?
Xcode simulator data lives in two main locations under ~/Library/Developer/CoreSimulator/. The OS images (runtimes) are in the Runtimes/ subfolder, and individual simulated device instances are in the Devices/ subfolder. You can open this directory in Finder by pressing Cmd + Shift + G and pasting the path.
How much disk space do Xcode simulators use?
A single iOS runtime image is typically 7 GB to 14 GB depending on the platform and version. Developers with several runtimes and multiple device instances often find 30 GB to 80 GB consumed in ~/Library/Developer/CoreSimulator/. Run 'du -sh ~/Library/Developer/CoreSimulator/' in Terminal to get your exact total.
Can I safely delete simulator runtimes?
Yes, old runtimes you no longer test against are safe to remove. The recommended method is through Xcode Settings under the Platforms tab, which removes the runtime cleanly. Manually deleting the .simruntime bundle can leave metadata inconsistencies, so prefer the Xcode UI or 'xcrun simctl runtime delete' in Terminal.
What does 'xcrun simctl delete unavailable' do?
This command removes all device instance folders whose associated runtime has already been deleted. These orphaned device folders still consume space but can no longer be launched. Running this command is safe and targets only devices in an unavailable state, leaving all active simulator devices untouched.
Does deleting a simulator runtime delete my app data inside the simulator?
Yes. Each device instance in ~/Library/Developer/CoreSimulator/Devices/ contains the simulated device's full filesystem, including installed apps and their data. Deleting a runtime and its associated devices removes all that app state permanently. If you have important test data seeded inside a specific simulator, export or back it up before removing the runtime.