Fix “Your disk is almost full” on a Mac
A diagnose-fix-verify walkthrough for a full macOS disk: measure real free space, map APFS volumes, clear local Time Machine snapshots, and confirm the space came back.
What this covers
macOS warns you when the startup disk runs out of room, but the warning doesn't tell you what's eating the space — and APFS volumes and hidden snapshots often make the numbers confusing. This guide walks through measuring the problem accurately, clearing the most common hidden cause (local Time Machine snapshots), and verifying the space actually came back.
Symptom
Measure how full the disk really is
Before deleting anything, get an accurate number. df -h shows capacity, used, and available space per volume; on modern macOS your files actually live on the Data volume, so check that one too. If available space is a few gigabytes or less, you've confirmed the problem. Run it again after cleanup later to see the difference.
df -h reports capacity, used space, and available space per volume in human-readable units, and on modern macOS it also exposes the APFS Data volume where your real user space lives.
$ df -h
df -h /
df -h /System/Volumes/DataSee the full APFS container layout
APFS shares one pool of space across multiple volumes, so a volume can look full even when the container has room (or vice versa). diskutil apfs list maps every volume, its capacity, used space, and mounted snapshots, which tells you where the pressure actually is before you start deleting.
See the full APFS container layout: every volume, its capacity, used space, and mounted snapshots.
$ diskutil apfs listCheck for local Time Machine snapshots
Local APFS snapshots are one of the most common hidden space hogs on macOS — they can quietly hold tens of gigabytes and make deleted files not actually free space. List every snapshot on the startup disk; a long recent list is a strong clue. Snapshots you no longer need can be deleted with the matching date.
See every local APFS Time Machine snapshot on your startup disk and delete ones you no longer need.
$ tmutil listlocalsnapshots /▾ Undo
$ tmutil deletelocalsnapshots <snapshot-date>Check where Time Machine is backing up
If the snapshots above keep coming back, check the Time Machine destination. When the destination is missing or unreachable, macOS keeps local snapshots on the startup disk instead — fixing the destination (for example, re-pointing it at an external drive) stops the local buildup at the source.
Find out which disk or network share Time Machine is using as its backup destination, straight from the terminal.
$ tmutil destinationinfoEject disk images and drives you're done with
Mounted DMGs, installers, and USB drives count toward mounted clutter and can hold large cached data. If you're done with them, eject everything ejectable in one step — a quick, zero-risk way to reclaim space and rule out external volumes as the culprit.
Safely unmount every ejectable volume — USB drives, SD cards, DMGs — in one step.
$ osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'Verify the freed space shows up
Run the same space check you did at the start, focusing on the Data volume. The available number should have grown by roughly the amount you reclaimed. Note that APFS may take a minute or two to reconcile space after snapshot deletion — if the number looks unchanged, wait briefly and re-run.
df -h reports capacity, used space, and available space per volume in human-readable units, and on modern macOS it also exposes the APFS Data volume where your real user space lives.
$ df -h
df -h /
df -h /System/Volumes/DataHow to confirm it worked
Re-run the free-space check on the Data volume: available space should have grown by roughly what you reclaimed.
Undo everything
Every command above can be reverted. Run these in order to undo all of it.
$ tmutil deletelocalsnapshots <snapshot-date>Review before running — some steps may not be independent.
Sources
- df — display free disk space (macOS)Evidence: Documents -h human-readable sizes and per-file argument behavior.
- macOS diskutil — disk and volume managementEvidence: Documents diskutil apfs list, diskutil info and related volume commands.
- macOS tmutil — Time Machine utilityEvidence: Documents listlocalsnapshots, deletelocalsnapshots, and snapshot restore subcommands of tmutil.
- If you need more space for an update on your MacEvidence: Apple explains that local Time Machine snapshots occupy space and are managed automatically/purged under pressure.
- TMUTIL(8) - macOS manual pageEvidence: The manual page contains 'tmutil destinationinfo' and describes it as printing information about the destination(s) configured for Time Machine backups.
- macOS osascript command referenceEvidence: osascript runs AppleScript from the Terminal; Finder's eject command safely unmounts every ejectable disk.
Last verified: 2026-09-21
Related guides
Find out whether your Mac's disk is healthy: check SMART status, rule out a full disk, verify the filesystem, and repair errors from the terminal.
A terminal-first walkthrough to find what is holding your external disk open on macOS and eject it safely, from quitting apps to forcing an unmount.
A symptom-first walkthrough for a Mac that became sluggish after a macOS update: check disks, repair the filesystem, audit background agents, rebuild Spotlight, and confirm updates.