The safe order of operations

  1. Measure first. Empty the Trash and check Storage settings, so you're not chasing space that's already free.
  2. Sort by size. Scan and rank everything largest-first. Never start deleting before you know where the gigabytes are.
  3. Take the regenerable wins. Developer caches and build output are recreated automatically.
  4. Then the duplicates. Verify byte-for-byte before removing a copy.
  5. Then your own large files. Old exports, disk images, downloads you forgot.
  6. Only then consider snapshots and system-level caches.

1. Empty the Trash and check for purgeable space

Deleted files in the Trash still occupy the disk. Empty it. Then be aware that macOS also reports purgeable space — Time Machine local snapshots and evictable cloud files — which Finder may count as available even though macOS only reclaims it under pressure. Run tmutil listlocalsnapshots / in Terminal to see local snapshots. Leave them alone unless you have a specific reason; they are your local recovery points.

2. The regenerable first pass

This is where most Macs hide tens of gigabytes. Everything below is build output or a cache — it comes back the next time you build, install or launch:

| Item | Typical location | Regenerates? | |---|---|---| | Xcode DerivedData | `~/Library/Developer/Xcode/DerivedData` | Yes, on next build | | iOS DeviceSupport | `~/Library/Developer/Xcode/iOS DeviceSupport` | Yes, on reconnect | | Simulator caches & devices | `~/Library/Developer/CoreSimulator` | Yes, via Xcode | | Xcode Archives | `~/Library/Developer/Xcode/Archives` | No — these are your release archives | | node_modules | Project folders | Yes, via `npm install` | | npm / yarn / pnpm cache | `~/.npm`, `~/.cache` | Yes | | Homebrew cache | `~/Library/Caches/Homebrew` | Yes | | pip / Cargo / Gradle / Maven / CocoaPods / SwiftPM caches | Various in `~/.cache`, `~/.gradle`, `~/.m2` | Yes | | Docker disk image | `Docker.raw` | Reclaimed via Docker's own prune | | iOS backups | `~/Library/Application Support/MobileSync/Backup` | No — these are real backups |

Two cautions. Xcode Archives are not build output — they are the archives you upload to App Store Connect; deleting them can mean re-archiving an old release. And Docker.raw should be shrunk with Docker's own tooling (for example docker system prune), not by throwing the file at the Trash, because the container runtime expects to own it.

3. Duplicates — verify, don't guess

Duplicate photo and video libraries are common, and so are accumulated copies of the same installer. Do not deduplicate by filename or size. A correct duplicate finder compares content: match on size first to group candidates cheaply, then hash — partial, then full SHA-256 — so a pair is only reported when the bytes are identical. Keep the first copy, stage the rest, and review the list before anything moves.

4. Your own large files

Sort by size, then look at age. The intersection of “very large” and “untouched for a year” is the highest-value, lowest-risk list on any disk: old exports, downloaded disk images, installer packages, screen recordings. Massive Disk reports both modification and last-opened dates so you can tell a file you abandoned from one you use daily.

5. Applications and their leftovers

Dragging an app to the Trash leaves its data behind — Application Support folders, caches, preferences, containers, logs, launch agents. A proper uninstaller removes the bundle and those associated files. Check what it's removing first, and don't uninstall anything that belongs to the operating system or to your organisation's security tooling.

6. What not to touch

The habit that keeps it clean

Freeing space is a one-off; keeping it is a routine. Scan monthly, and the moment the same folder appears at the top of the list three months running, that's the cache to automate or the project to archive. Massive Disk's Snapshots feature captures the shape of a scan so you can compare before and after and see exactly which folder grew — useful for spotting a runaway log or a sync client quietly filling the disk.

Finally, delete recoverably. Every removal should land in the Trash. A tool with a permanent-delete button is a tool that can turn one mis-click into an unrecoverable loss.

Frequently asked

What is the fastest way to free up space on a Mac?

Empty the Trash, then clear developer caches: Xcode DerivedData, iOS DeviceSupport and Simulator data, package-manager caches, and Docker's disk image. They are regenerable and often account for tens of gigabytes.

Is it safe to delete Xcode DerivedData?

Yes. DerivedData is intermediate build output that Xcode recreates on the next build. Xcode Archives are different — those are your release archives and should be kept.

Will deleting caches slow down my Mac?

Briefly, yes — the cache is rebuilt the next time the app or tool runs. That one-time cost is usually far smaller than the space recovered.

See it on your own Mac

Massive Disk is a native Apple Silicon app that maps every byte of your storage across six visualizations — then gives you safe, reversible ways to get space back. Scanning is free forever; cleanup tools are Pro.

Download for Apple Silicon   See every feature

Keep reading