Blog Guide 11 min read

Where did my Mac storage go?

Your disk is full, the numbers do not add up, and the Storage screen points at a grey bar you cannot click. The fix is not more guessing. It is a repeatable method for finding what is actually large, plus an understanding of why the numbers disagree in the first place.

The short version

  • Three tools report three "free space" numbers because they answer three different questions. That is expected.
  • Trust df or Disk Utility for the honest free-space figure; the Finder's number includes purgeable space.
  • Find what is big with a size-sorted view or a treemap, not by clicking through folders.
  • On a Mac, naive size tools can double-count because of firmlinks and overcount because of clones. Use one that understands both.

First, why the numbers never agree

Before you can find the space, you have to stop being confused by the measurements. Ask three tools how much room is left and you will get three answers. This is not a bug. Each tool is answering a subtly different question.

ToolThe question it answers
df -h /How many blocks are unconditionally free right now? The strictest number.
Finder / SettingsFree blocks plus purgeable space macOS thinks it could free on demand.
Disk UtilityA detailed breakdown, usually separating purgeable and snapshot space.
du -shHow many blocks are allocated under this folder? Measures usage, not free space.

The one that catches everyone is purgeable space. The Finder counts space that is technically occupied, by caches, local snapshots and evictable iCloud files, as "available," because macOS could free it if you needed it. That is a reasonable thing to show, but it means the Finder's free-space figure is an optimistic estimate, not a measurement. Howard Oakley, who has tested this carefully, once caught the Finder claiming 227 GB available when the real figure was 144 GB, an 83 GB error that matched a bogus purgeable estimate. His advice, and ours, is simple: for the honest number, use df or Disk Utility.

# the honest free-space number
$ df -h /

The method: map, don't guess

Once you trust a number, finding what fills the disk is a solved problem, and the solution is not to open folders one at a time wondering which is biggest. It is to see the whole disk sorted by size, so the largest things are impossible to miss. Two views do this well.

A size-sorted list shows folders ranked largest first, so you drill straight into the heaviest branch, see what is big inside it, and repeat. A treemap draws every folder as a rectangle sized by how much space it uses, turning your whole disk into one picture where the big consumers are the big boxes. Both beat guessing, because they direct your attention to where the space actually is.

A treemap draws each folder as a rectangle sized by its disk usage, so the largest consumers are the largest boxes. Movies 55 GB Developer caches 40 GB Docker 22 GB node_modules iPhone backups Other everything else, each box too small to matter
A treemap turns "where did it go?" into a glance. The biggest boxes are where to look first.

Work from the top down. Start at the volume root, go into the biggest box, then the biggest box inside that, and keep going until you reach something you recognise and can act on, an old video export, a forgotten disk image, a developer cache, an iPhone backup. The usual suspects on a full Mac are large media files, developer and creative app caches, Docker, iPhone backups, and local snapshots.

The Mac-specific trap: double-counting

Here is something most generic disk tools get wrong on a Mac, and it can make their numbers nonsense. Since macOS Catalina, your boot disk is split into two volumes: a read-only System volume and a writable Data volume, stitched together so they look like one. The stitching uses a special link type Apple calls a firmlink, which, unlike ordinary links, works in both directions across the volume boundary.

The consequence for measurement is sharp: a tool that naively walks every directory can cross a firmlink and traverse the same files a second time, counting them twice. The result is a size tool that cheerfully reports more data on your disk than the disk can physically hold. Correctly measuring a Mac means being aware of the volume layout and not following firmlinks into double-counting.

We hit this ourselves

This is not theoretical. An early version of StorageSage double-counted disk usage through exactly this firmlink path, and we fixed it specifically so the numbers reflect reality. A Mac storage tool that is not volume-aware will mislead you.

The second trap: clones

APFS has a feature called cloning: two files can share the same underlying data blocks until one of them changes, so a "copy" can cost almost nothing. Modern developer tools lean on this heavily, pnpm, uv, git worktrees and others create clones deliberately to save space. The problem is that the classic du command does not understand clones. It reports each clone's full logical size as though it were a separate copy, so a folder full of clones can look ten or a hundred times bigger than the space it truly occupies.

So if du tells you a directory is enormous but deleting things barely moves df, clones may be why: the space was shared all along. A tool that detects clone families and counts shared blocks once gives you the real figure.

What du shows

Every clone counted at full size, every firmlinked file potentially counted twice. The total can exceed your disk's capacity.

What is really there

Shared blocks counted once, each volume traversed once. A volume-aware, clone-aware tool reconciles with what df and Disk Utility report.

A reliable procedure

  1. Get the honest free-space number with df -h / or Disk Utility. Ignore the Finder's figure.
  2. If a recent deletion "did nothing," suspect local snapshots and check tmutil listlocalsnapshots /.
  3. Open a size-sorted view or treemap of the whole volume.
  4. Drill from the top into the largest branches until you reach things you recognise.
  5. Remove only what you understand and can get back: caches, build output, old exports, stale backups. Leave originals and system files alone.

That is the entire game. Most "my Mac is mysteriously full" situations dissolve the moment you stop trusting the wrong number and start looking at a map instead of guessing.

A map that counts your Mac correctly

StorageSage maps your whole disk as a treemap and a size-sorted list, counts it correctly across the System and Data volumes, understands clones, and shows the honest free-space number. Then it labels what it finds Safe, Rebuilds or Review, so you know what each thing is before you touch it.

Download for macOS

Sources

  • Apple — WWDC 2019 "What's New in Apple File Systems" (System/Data volume split and firmlinks); on-device manual pages man du, man df, man getattrlist.
  • Howard Oakley, The Eclectic Light Company — on where macOS gets its free-space figures, purgeable space, and inaccurate Finder reporting; APFS clones.
  • Open-source work documenting clone-aware disk measurement on APFS.

Keep reading