HomeTechOps

Mac

Mac purgeable space won't clear (local snapshots)

Why deleting files doesn't free space on a Mac and 'System Data' or 'purgeable' stays huge — APFS local Time Machine snapshots, and how to list and thin them with tmutil without breaking your backups.

Problem summary

I'm here because my Mac's storage won't go down — I deleted big files (or emptied the Trash) but the free space barely moved, and Storage settings show a giant 'System Data' or the disk shows 'purgeable' space that never clears. This is almost always APFS local snapshots: Time Machine keeps hourly snapshots on your internal disk, and they pin the space your deleted files used to occupy. This page shows you how to confirm that's the cause and safely thin or remove the snapshots, without quietly breaking your ability to restore.

Operator snapshotEvidence first
First proof

Compare `df -h /` 'Avail' to Finder's free-space figure.

Screen to open

df -h /

Expected signal

A large gap (df shows much less free) means the space is purgeable — almost always local snapshots.

Stop boundary

Only delete snapshots once a real off-device backup exists.

Layer path

1On an APFS Mac, 'free space' has two parts: genuinely free blocks and 'purgeable' space that macOS can release on demand. Finder and Storage settings count purgeable as free; the kernel only releases it when something actually needs the room. So 'I deleted files but nothing changed' is usually correct accounting, not a bug.
2The dominant source of purgeable space is APFS local Time Machine snapshots. Time Machine takes hourly snapshots of the internal disk and keeps them locally (about 24 hours by default, longer while space allows). A snapshot pins the exact blocks your files occupied at snapshot time, so deleting a file frees nothing until every snapshot referencing it is gone.
3The layers to act on, in order: confirm the missing space is purgeable (`df` vs Finder), see the snapshots (`tmutil`/`diskutil`), thin them gently, and stop new ones from refilling. Snapshots are a convenience recovery layer on the same disk — not a backup — so reclaiming them is safe only when a real off-device backup exists.
Runbook

Step-by-step runbook

Start here. Do each check in order, compare it to the expected result, and stop when the evidence explains the failure or the safe stop point applies.

1

Confirm it's purgeable

Check: Compare `the "See real free space vs Finder's purgeable-inflated figure" command below` Avail to Finder's free-space number.

Expected result: A large gap confirms purgeable space, pointing at snapshots.

If not: If they agree, stop — this is genuine System Data, not snapshots.

2

See the snapshots

Check: Run `the "List the local Time Machine snapshots" command below` (and optionally `diskutil apfs listSnapshots /`).

Expected result: You can see how many local snapshots exist and how old they are.

If not: If the list is empty, switch to the System Data breakdown.

3

Thin gently first

Check: Run `tmutil thinlocalsnapshots / <bytes> 4` to reclaim space oldest-first.

Expected result: macOS frees roughly the requested amount by dropping the oldest snapshots.

If not: If little comes back, move to stopping new snapshots.

4

Stop the refill

Check: Set Time Machine to Manually (or remove the destination) so no new hourly snapshots form.

Expected result: Existing purgeable space clears and nothing replaces it.

If not: Re-enable automatic backups once reclaimed — don't leave backups off.

5

Verify and attribute the rest

Check: Re-run `the "See real free space vs Finder's purgeable-inflated figure" command below` and re-open Storage settings.

Expected result: Real free space rose; any remaining bulk is genuine System Data.

If not: If the disk is still full, work the caches/Mail/Xcode/Docker categories, not snapshots.

Decision tree

Decision tree

If: `df` shows far less free space than Finder, and `tmutil listlocalsnapshots /` lists snapshots.

Then: Purgeable space held by APFS local snapshots.

Action: Thin with `tmutil thinlocalsnapshots / <bytes> 4`; set Time Machine to Manually to stop new ones.

Safe stop: Only delete snapshots once a real off-device backup exists.

If: Thinning frees little and only recent snapshots exist.

Then: macOS is keeping recent snapshots it won't drop yet, or the space is genuinely in use.

Action: Set backups to Manually so no new snapshots form and existing ones purge, then re-measure.

If: Snapshots older than ~24 hours persist and won't age out.

Then: Backups have been failing, so the cleanup cycle stopped running.

Action: Check `tmutil status` and the destination health; fix the failing backup, which restores normal snapshot expiry.

If: Purgeable space refills within hours of clearing.

Then: A large file churn (VM image, Docker.raw, sync folder) is being snapshotted hourly.

Action: Find the churn with `du -x`, then exclude or relocate it rather than repeatedly deleting snapshots.

If: Snapshots are gone but the disk is still full.

Then: The bulk is genuine System Data (caches, Mail, Messages, iOS backups, Xcode, Docker).

Action: Switch to the System Data breakdown; stop deleting snapshots, which won't help.

Evidence

Evidence table

SymptomEvidence to collectLikely layerNext action
Deleted big files / emptied Trash, free space barely moved.`df -h /` shows much less free than Finder.Purgeable space held by local snapshots.Thin snapshots; set Time Machine to Manually to purge in bulk.
'System Data' or 'purgeable' shows tens of GB.`tmutil listlocalsnapshots /` lists several dated snapshots.Hourly Time Machine local snapshots.`tmutil thinlocalsnapshots / <bytes> 4`, then re-measure with df.
Snapshots older than a day won't clear.`tmutil status` shows recent backups failing.Stalled cleanup because backups aren't completing.Repair the backup destination; normal 24h expiry resumes.
Purgeable space refills within hours.`du -x` flags a large VM image / Docker.raw / sync folder rewriting often.File churn being captured into hourly snapshots.Exclude or relocate the churn; stop fighting it with repeated deletes.
Snapshots removed but disk still full.df and Finder now agree; Storage shows large caches/Mail/Xcode/Docker.Genuine System Data, not snapshots.Move to the System Data reclamation page.
Reference

Commands and settings paths

See real free space vs Finder's purgeable-inflated figure

df -h /

Where: Terminal on the Mac.

Expected: Reports actual on-disk usage and Avail; a big gap vs Finder = purgeable space.

Failure means: If df and Finder agree, the disk is genuinely full — not a snapshot problem.

Safe next step: If purgeable, list and thin local snapshots next.

List the local Time Machine snapshots

tmutil listlocalsnapshots /

Where: Terminal on the Mac.

Expected: Prints dated com.apple.TimeMachine.*.local entries — the snapshots pinning space.

Failure means: An empty list means snapshots aren't the cause.

Safe next step: If listed, thin them; if empty, look at genuine System Data categories.

Thin local snapshots the supported way

tmutil thinlocalsnapshots / 21474836480 4

Where: Terminal on the Mac (the number is bytes to reclaim; 4 = high urgency).

Expected: macOS deletes oldest-first snapshots to free roughly the requested space.

Failure means: If little is freed, only recent snapshots remain or the space is in use.

Safe next step: Set Time Machine to Manually to stop new snapshots, then re-measure.

Delete one stuck snapshot by timestamp

tmutil deletelocalsnapshots 2026-06-02-101500

Where: Terminal on the Mac, using a timestamp from the list.

Expected: Removes that single snapshot and returns its pinned space to free.

Failure means: A refusal usually means a backup or restore is running.

Safe next step: Wait for the operation to finish, then retry; never delete mid-restore.

Hardware boundary

Hardware and platform boundary

Change only when

  • Add a real off-device backup (external Time Machine drive or NAS) before you ever delete snapshots — local snapshots are not a backup.
  • Consider a larger internal disk on your next Mac if you routinely run VMs, Docker, or large media that keep purgeable space high; Apple Silicon storage isn't user-upgradeable.

Evidence that matters

  • A real, independent backup target so snapshots are a convenience, not your only recovery.
  • Enough internal headroom that hourly snapshots have room to exist without crowding you out.
  • An external/NAS Time Machine destination so most history lives off the internal disk.

Evidence that does not matter

  • Finder's free-space number — it counts purgeable space as free and misleads.
  • A cleaner app's 'purgeable space removed' figure — tmutil does the same thing natively and safely.
  • RAID level of any backup volume as 'snapshot insurance' — RAID is uptime, not backup or snapshots.

Avoid

  • Treating local snapshots as a backup — they share the disk that would fail.
  • Blanket-deleting all snapshots as routine maintenance — you lose your only on-disk recovery between full backups.
  • Cleaner apps that 'free purgeable space' — they wrap the same tmutil calls while adding risk.

Related tool/checklist

Use the linked tool when you need a guided plan from your exact symptoms instead of a static checklist.

Backup plan builder

Last reviewed

2026-06-02 · Reviewed by HomeTechOps. Reviewed against Apple's documentation on APFS local snapshots and freeing storage plus Time Machine behaviour; centres the diagnosis on `df` vs Finder (purgeable accounting) and the supported tmutil thin/delete path, and is explicit that local snapshots are a recovery convenience on the same disk — not a backup — so reclaiming them is safe only with a real off-device copy in place.

Sources/assumptions

  • Assumes an APFS-formatted Mac (every modern macOS) where Time Machine keeps local snapshots on the internal disk; the behaviour is the same across recent macOS versions including Tahoe (macOS 26).
  • The 24-hour local-snapshot retention is Apple's documented default; macOS also keeps extra snapshots opportunistically while space allows and purges them under pressure.
  • tmutil flags and byte arguments follow Apple's documented behaviour; thinlocalsnapshots reclaims approximately, not exactly, the requested amount.

Source-backed checks

HomeTechOps turns official docs and conservative safety rules into a shorter runbook. These links are the source trail for the page direction.