Mac storage full: how to actually free space (not the Apple checklist)

Your Mac is telling you the disk is almost full, and every article you find repeats the same list: empty the Trash, store things in iCloud, delete old email attachments. Those steps free megabytes. The space you are missing is in a handful of large folders that no checklist mentions, because which folders they are depends on how you use the Mac. This is the order of attack that finds them: measure first, then hit the biggest categories one by one with the safe method for each.

Measure first: find the real hogs

Freeing space without measuring is guesswork, and guesswork on a full disk wastes hours. Start with one command that sizes the visible folders in your home directory plus your Library, and sorts the biggest to the top:

The top five lines of that output are your plan. On most full Macs the leaders are some mix of Library (app data and caches), Movies or Pictures (media libraries), a games folder, a code folder, or one enormous forgotten download. Everything below assumes you now know your own top five.

One caveat on reading the numbers: the Finder window's status bar and the Storage screen often disagree with each other and with Terminal. Terminal is the one telling the truth. The others mix in purgeable space, which macOS reclaims only when it feels pressure.

du -sh ~/* ~/Library 2>/dev/null | sort -hr | head -15

The high-yield categories, in order

Across real Macs, the same categories return the most space for the least risk. Work down this list and stop when you have the room you need:

  • Old iPhone and iPad backups: 5 to 60 GB each, in ~/Library/Application Support/MobileSync/Backup, deleted safely from Finder's Manage Backups
  • Docker Desktop's disk image: 20 to 100 GB for anyone who has used containers, shrunk with docker system prune plus a manual image resize
  • Xcode leftovers: DerivedData, archives, simulators, easily 30 GB+ on a dev machine, all regenerable
  • Media libraries: Photos, Music, and iMovie libraries grow silently for years; move them to an external disk rather than deleting
  • Game installs: single Steam titles run 50 to 150 GB, uninstall from the Steam library, not the Finder
  • App caches: Slack, Spotify, Discord, and browsers together often hold 5 to 20 GB that regenerates on demand
  • The Downloads folder: months of installers, zip files, and disk images you already used
  • The Trash itself: everything above only frees space once the Trash is emptied

Developer machines: the biggest wins hide in dot-folders

If you write code, your disk almost certainly holds tens of gigabytes of package manager caches and build products, all of it regenerable. The npm, pip, cargo, and Homebrew caches each grow without bound; every one has an official one-line cleanup command that is safer than deleting folders by hand, npm cache clean, brew cleanup, cargo cache commands, docker system prune. The pattern to internalize: when a tool manages a cache, let the tool clean it, because the tool knows about its own locks and indexes.

Project folders hide the other half: a node_modules here, a Rust target folder there, an old Python venv. Each is 100 MB to a few GB, and a machine with fifty old projects is storing a lot of dead weight. Delete them inside projects you no longer touch; the next install or build recreates them exactly.

The disk says full, but Finder shows free space

This one drives people to reinstalls, and it is almost never necessary. APFS reports free space that includes purgeable space: Time Machine local snapshots, cached iCloud files, and other data macOS promises to evict when needed. Finder happily counts that as available. Some apps and installers do not; they see the raw free number, which can be far lower.

Snapshots are the usual cause. When your Time Machine disk is unplugged, macOS keeps hourly local snapshots on the internal drive. List them with tmutil listlocalsnapshots / and delete specific ones with tmutil deletelocalsnapshots plus the date stamp. The files in old snapshots stay safe on your actual backup disk; local snapshots are a convenience copy, not your backup history.

After a big cleanup, give macOS a few minutes, or a restart, to reclaim purgeable space and update the Storage screen. The bar lags reality by design.

tmutil listlocalsnapshots /

What is safe versus what is not

Safe to remove without ceremony: caches, build products, package downloads, old installers, the Trash. All of it regenerates or was already consumed. The cost of deleting is a slower first launch or a re-download, never lost work.

Safe only with a decision: media libraries, old projects, VM disks, game saves inside Application Support. These are yours; nothing recreates them. The right move is usually relocation to an external drive, not deletion.

Not safe: anything under /System, the top level of ~/Library itself, Containers you cannot identify, and any folder whose name you do not recognize inside Application Support. When a folder is a mystery, identify it before touching it. Our storage guide covers the folders that actually get big, what each one is, and the correct way to clean it, and the Diskmack app does the same identification automatically on your own disk, marking each folder safe, caution, or yours before you delete anything.

Keep it from filling up again

Full disks are a recurring condition, not a one-time event, because the growers (caches, snapshots, node_modules, Docker images) never stop growing. A quarterly fifteen-minute sweep with the du command from the first section keeps you ahead of it.

Two habits carry most of the weight: run your package managers' official clean commands when a project wraps up, and check Manage Backups whenever you retire an iPhone. Add an occasional glance at Docker's disk usage if you use containers, and the crisis simply stops recurring. If you would rather see the whole picture at a glance than remember commands, that is the job Diskmack was built for.

Common questions

Why does my Mac say storage is full when Finder shows gigabytes free?

APFS counts purgeable space (local Time Machine snapshots, evictable iCloud caches) as free in some views and not others. Finder shows the optimistic number; some apps see the raw one. Deleting local snapshots with tmutil usually closes the gap, and a restart helps macOS reclaim purgeable space.

What frees the most space fastest on a typical Mac?

For most people: old iPhone backups, one bloated app cache (Slack, Spotify, or a browser), and the Downloads folder. For developers, Docker and Xcode dwarf everything else. Measure with du before deleting anything so you spend effort where the gigabytes are.

Is it safe to use storage cleaner apps?

It depends entirely on what the app deletes and whether it tells you. Blind one-click cleaners that sweep whole cache directories can sign you out of apps or delete data a program expected to keep. Prefer tools that identify each folder and use reversible methods: moves to the Trash and official cleanup commands. That safety model is exactly how Diskmack works.

Should I move my Photos library to an external drive?

If the library is a large share of your disk, yes, it is the standard fix. Quit Photos, copy the .photoslibrary package to the external drive, open it from there while holding Option, and set it as the System Photo Library if you use iCloud Photos. Keep the external drive backed up; the library is irreplaceable.

Related folders