Mac Storage Full? What's Using Space and What's Safe to Delete
Find what is filling your Mac, decode System Data and purgeable space, and sort every candidate into safe, careful, or leave-alone before you delete.
Ask this guide
Answers come straight from this guide’s text. Nothing is generated, and nothing you type leaves your browser.
The Storage bar on your Mac is almost full, a wide slice is labelled System Data, and macOS will not say what is inside it. You delete a few files, empty the Trash, and the number barely moves.
This guide gives you a safe order of attack. Find what is big, learn what System Data and "purgeable" space mean (including a bookkeeping change reported for macOS 27), sort every candidate by how much you would regret deleting it, clear developer caches with commands whose effects are spelled out, then confirm the space came back.
The steps apply to macOS Ventura 13 through macOS 27 Golden Gate, which Apple's security releases page lists as the latest version (27.0.1, 28 September 2026).
Find what is big: the Storage panel first, then Terminal
Read the Storage panel properly
Choose Apple menu > System Settings, click General in the sidebar, then click Storage. On macOS Monterey 12 and earlier, the same view is under About This Mac > Storage (Apple Support).
Most categories have an info button that opens a list where, in Apple's words, you "open a category, select an unneeded file, then click Delete" (Apple's Storage guide). Three show only a size: Other Users & Shared, macOS, and System Data. Apple states that "you can't select and delete files in these categories".
The panel also offers three switches, each with a catch:
- Store in iCloud stores most files in iCloud, and files there count against your iCloud plan.
- Optimize Storage removes movies and TV shows you have already watched, according to Apple's macOS 27 guide.
- Empty Trash automatically removes files that have been in the Trash for more than 30 days. Skim the Trash first, because it makes deletions final.
Rank folders with du when the panel is too coarse
The panel cannot say which folder in your home folder is huge. Terminal can. macOS ships the BSD du, which takes -d for depth, not GNU's --max-depth (that fails here with "unrecognized option"):
# Sizes in KB, one level deep, biggest first, staying on this disk
du -xk -d 1 ~ | sort -nr | head -15
# Then drill into whichever folder dominates, for example Library
du -xk -d 1 ~/Library | sort -nr | head -15
Divide any figure by about a million for a rough gigabyte count. If you see "Operation not permitted" for a protected folder such as ~/Library/Messages, that folder was not counted, so your totals can undercount.
Finder can do the same job without Terminal. Hold Option and click the Go menu to reach Library, press Command-J and tick Calculate all sizes, then sort by size. Command-Shift-. shows hidden folders (steps from the Apple Community tip in Sources).
If the folders add up to far less than the used space Storage reports, read the Data line of this output, because / is only the system volume:
df -h / /System/Volumes/Data
On a Mac running macOS 26.5.2 that we checked, / showed 16 GiB used and the Data volume 367 GiB of 460 GiB. Use your own numbers.
Warning: Use
duto look, never to delete. Do not pipe its output intorm, and do not pasterm -rfcommands from a forum for a path you have not measured and identified yourself.
What System Data, "purgeable", and local snapshots really mean
System Data is a catch-all, and apps fill most of it
Apple defines System Data as the space used by "all Apple and third-party files" that do not belong to a more specific category. Much of it is app data under ~/Library. An Apple Community user tip describes 70 GB of System Data on a Mac running macOS 15, about half of it Outlook email attachments, and advises removing such data from inside the app (neuroanatomist's tip).
Apple also lists up to 14 GB of on-device storage for Apple Intelligence, depending on the Mac, but does not say which Storage category shows it (requirements).
Free, Available, and purgeable: which number to trust
Through macOS 26, the same tip explains, available space equals free space plus purgeable space, meaning caches and snapshots macOS may remove when it needs room. Disk Utility shows actual free space. On the author's Mac running macOS 26, Available was 1.24 TB and Free was 1.15 TB, a 90 GB gap.
Treat "Available" as optimistic. In a test on macOS Tahoe 26.6.2, the Eclectic Light Company filled a 100 GB test volume, made a snapshot, and deleted the files. Disk Utility showed 94.8 GB as purgeable, yet macOS refused to purge the snapshot on at least two attempts when a 12.89 GB file needed room, though a later attempt succeeded (Aren't snapshots purgeable?).
macOS 27 changes the bookkeeping. The tip says purgeable space is no longer reported separately and those items now count as used space inside System Data. We have not verified how Available is calculated on 27, so on any version compare Disk Utility's free figure before and after a cleanup.
Note: The macOS 27 change is a community report (the tip was updated on 2 October 2026), not Apple documentation. If System Data jumped after you upgraded, part of the change may be reclassification, not new files.
Local snapshots can keep deleted files on disk
Apple says Time Machine saves a snapshot of the startup disk about every hour and keeps it for 24 hours, keeps one more of the last successful backup "until space is needed", and saves another before each macOS update (About Time Machine local snapshots). A snapshot preserves the disk as it was, so while one exists, the blocks of a file you deleted afterwards are not necessarily free.
# Time Machine snapshots on the startup volume
tmutil listlocalsnapshots /
# Creation dates of local Time Machine snapshots
tmutil listlocalsnapshotdates
# Delete Time Machine snapshots made at one date, on all mounted disks (YYYY-MM-DD-HHMMSS)
sudo tmutil deletelocalsnapshots 2026-10-08-143012
# Or reclaim about 10 GB (in bytes) by thinning snapshots; urgency is 1-4
sudo tmutil thinlocalsnapshots / 10000000000 4
The date is an example; use one from your own listing, and expect sudo to ask for your password. If the first command lists no Time Machine snapshots, they are not your problem, so skip to the du step. Entries named com.apple.os.update-… are not Time Machine snapshots: on a Mac we checked, they appeared in tmutil listlocalsnapshots / but not in tmutil listlocalsnapshotdates, so leave them alone.
Apple's route needs no Terminal: in Time Machine settings, set Backup Frequency to Manually (Ventura 13 or later), wait a few minutes, then turn automatic backups back on.
Our rule: when you need room right now, such as before an update, thin by a set amount instead of deleting every snapshot, and never as routine maintenance, because Time Machine creates new ones about hourly. Snapshots live on the same disk, so they are no substitute for a backup; confirm a backup exists before you delete anything irreplaceable.
Safe, careful, or leave alone: a ladder ordered by regret
Before you remove anything, ask three questions. Can it regenerate itself? Can I download it again? Is there a second copy I have verified? Work down this table from the top; each row costs more if you are wrong.
| Candidate | Verdict | Cost if you are wrong | How to clear it |
|---|---|---|---|
| Trash | Safe | Nothing is recoverable after emptying | Finder > Empty Trash |
Old installers (.dmg, .pkg) in Downloads |
Safe if you can re-download them | Re-download, or a lost copy you cannot get again | Finder > Go > Downloads, sort by size |
| Xcode DerivedData | Safe | A slower next build while indexes rebuild | Product > Clean Build Folder (one project), or delete the folder with Xcode closed |
| Unavailable iOS simulators | Safe | Little; the selected Xcode cannot use them | xcrun simctl delete unavailable |
| Homebrew old versions and downloads | Safe | Re-download | brew cleanup |
node_modules in finished projects |
Safe with a lockfile | Reinstall time, plus network | Delete the folder |
| Docker stopped containers, dangling images, build cache | Careful | Rebuild and pull time; data held only in a stopped container is lost | docker system prune |
| iPhone and iPad backups | Careful | May be the only copy | Storage > iOS files |
| Photos library | Careful | May be the only copy of your photos | Delete items inside Photos, not in Finder |
| Messages and Mail attachments | Careful | Photos and receipts that exist nowhere else | In the apps |
App folders in ~/Library/Caches |
Careful | The app rebuilds them slowly | Apps you removed, or one measured folder at a time |
macOS, Other Users & Shared, /System, /Library |
Leave alone | An unstable or unbootable system | Not yours to manage |
~/Library/Developer/CoreSimulator/Devices, Docker.raw, virtual machine disk images |
Leave alone in Finder | Out-of-sync Xcode records, or a destroyed Docker environment or virtual machine | simctl, Xcode, Docker, or the virtual machine app |
Two more entries belong in the leave-alone column: anything you cannot identify, which the Apple Community tip says not to delete, and "cleaner" apps, which the same author says usually do more harm than good. If an app cannot show each path and size before it deletes, treat it like an unexplained rm.
Tip: For a file or folder you can see in Finder, such as a
node_modulesfolder or one app's folder in~/Library/Caches, move it to the Trash first and empty the Trash only after a day of normal use.docker system pruneand the Keep messages setting act immediately and have no Trash step, so decide on those before you run them.
Worked example: a hypothetical triage
Imagine a 512 GB MacBook with 14 GB free and a target of about 20% free, roughly 100 GB (the Apple Community tip suggests at least 10% and ideally around 20%). A first pass finds six candidates:
| Candidate | Size | Class | Check before deleting |
|---|---|---|---|
| Xcode DerivedData | 17 GB | Safe | Xcode is closed |
node_modules in nine finished projects |
12 GB | Safe | Each project has a lockfile |
| Installers in Downloads | 9 GB | Safe | You can re-download them |
| Trash | 6 GB | Safe | You skimmed it |
| Backup of an iPhone sold last year | 38 GB | Careful | The phone is gone and nothing depends on the backup |
| Docker build cache and dangling images | 21 GB | Careful | You inspected volumes before pruning |
The Safe rows come first: 17 + 12 + 9 + 6 = 44 GB, so free space goes from 14 GB to 58 GB (11%). That clears the 10% floor but not the 20% target. Next come the Careful rows, largest first, each only after its check. The 38 GB backup brings you to 96 GB (19%). The 21 GB of Docker data counts only once macOS shows the space back, which may need the reclaim step in the Docker section below; with it you reach 117 GB (23%). Stop when you hit your target. These numbers illustrate the method; they are not typical figures.
Big personal files: Photos, backups, Messages, Mail, and Downloads
Photos. Apple describes the Photos category as your System Photo Library, so delete items inside Photos, not in Finder. Deleted items stay in Recently Deleted for 30 days; open it under Utilities in the sidebar and click Delete All to free the space sooner (Photos User Guide).
iPhone and iPad backups. Storage > iOS files lists iOS backups and firmware. In Finder you can also select a connected device, open the General tab, and click Manage Backups (Apple Support). Delete backups for devices you no longer own, or older backups when a newer one exists. A password-encrypted backup can only be used with that password, so never delete the last good backup of a device you still use.
Messages. Choose Messages > Settings > General and use the Keep messages menu. Apple warns that any option other than Forever removes conversations, "including all attachments", after the period you pick. Messages and attachments you delete by hand stay in Recently Deleted for up to 30 days; choose View > Recently Deleted to remove them sooner (Apple's Messages guide).
Mail. Apple suggests Mailbox > Erase Junk Mail and Mailbox > Erase Deleted Items.
Downloads and big media. Open Finder > Go > Downloads and sort by size. Purchases in the TV, Music, Books, and Podcasts categories can be removed and downloaded again. For libraries you want to keep, Apple suggests an external drive. If you record tutorials, finished projects are often the largest files on the disk, so decide where they get archived; our guide to recording software tutorials covers the recording side.
Developer caches, one command at a time
Xcode: build output and orphaned simulators
DerivedData holds build products and indexes. The default location is ~/Library/Developer/Xcode/DerivedData, and deleting it costs a rebuild, so quit Xcode first. Measure first (this can take a minute):
du -sh ~/Library/Developer/Xcode/DerivedData ~/Library/Developer/CoreSimulator ~/Library/Developer/XCTestDevices 2>/dev/null | sort -hr
For one project, Product > Clean Build Folder (Command-Shift-K) removes its build products, as an Apple DTS engineer advises on the Apple Developer Forums. The same engineer recommends xcrun simctl delete unavailable, which deletes simulator devices that are no longer available, including those left by deprecated projects with no matching runtime. Run xcrun simctl help delete first to read Apple's text for your Xcode version. Remove downloaded simulator runtimes through Xcode's Settings window (Components or Platforms, depending on version), not by deleting folders.
Homebrew: old versions and stale downloads
brew cleanup -n # dry run: shows what would be removed
brew cleanup # removes it
brew --cache # where downloads are kept
Per the Homebrew manual, brew cleanup removes stale lock files, outdated downloads, and old versions of installed formulae, and by default deletes downloads more than 120 days old. The dry run ends with an estimate of the space it would free.
Docker Desktop: prune, then reclaim
docker system df # how much Docker believes it is using
docker system prune # asks for confirmation first
By default, docker system prune removes stopped containers, unused networks, dangling images, and unused build cache. Adding -a also removes every image no container uses. Adding --volumes removes anonymous volumes, which can hold database files, so inspect them first. To clear only build cache, use docker builder prune; to limit pruning by age, add a filter such as --filter "until=24h", Docker's own example.
On a Mac, Docker Desktop keeps its Linux data in one disk image, Docker.raw, and many tools report its maximum size, not its real size. Docker's Mac FAQ shows how to compare the two:
cd ~/Library/Containers/com.docker.docker/Data/vms/0/data
ls -klsh Docker.raw
The first column is the space actually used, in KB; the size column further along is the maximum (we confirmed the column order on a Mac). Deleting images frees space inside the disk image, but the FAQ says space is not freed automatically when files are deleted inside running containers, and the host can take a few minutes to show it. To trigger reclamation, the FAQ gives this command, which runs a privileged container, so use it only as written there:
docker run --privileged --pid=host docker/desktop-reclaim-space
- Do not move
Docker.rawin Finder. - Lowering the Disk image size slider (Settings > Resources > Advanced) deletes the current disk image, containers and images included.
node_modules and the npm cache
# Find node_modules folders without descending into them, biggest first
find ~/Projects -name node_modules -type d -prune -exec du -sk {} + | sort -nr | head -20
# How big is the npm cache?
du -sh ~/.npm
Replace ~/Projects with where you keep code, and delete folders only for projects you can reinstall from a lockfile. npm's cache lives in ~/.npm; the npm documentation says npm cache clean --force deletes all of it and that clearing it is never necessary except to reclaim disk space.
Confirm the space came back, and what to check when it did not
- Empty the Trash. Apple notes that a file in the Trash does not free its space until you empty it.
- Reopen System Settings > General > Storage. Apple says the panel updates as you free space, so compare each category with your first pass.
- Check Disk Utility and re-run
du. Disk Utility shows actual free space, though the Eclectic Light tests found its figures can vary between runs.
If the numbers did not move, match your symptom:
| Symptom | Likely cause | Check | Fix |
|---|---|---|---|
| Nothing changed after deleting files | Items still in the Trash | Look at the Trash in Finder | Empty the Trash |
| Big deletion, small gain | Local snapshots still hold the blocks | tmutil listlocalsnapshots / |
Reset Backup Frequency, or thin snapshots |
| Docker pruned, Mac unchanged | The host has not reclaimed the space yet | ls -klsh Docker.raw |
Wait a few minutes, then run the reclaim command |
| Deleted Messages or Photos items, no gain | Recently Deleted keeps them for up to 30 days | Open Recently Deleted in each app | Delete them there |
| Storage stuck on "Calculating…" | Stale Spotlight categorisation, per the Apple Community tip | Restart first | Rebuild the Spotlight index using Apple's steps |
| System Data jumped after the macOS 27 upgrade | Reported reclassification of purgeable items | Compare Disk Utility free space before and after | Nothing, if free space is unchanged |
Where to start this week
- Write down used and free space, then open each large Storage category.
- Run
duon your home folder and on~/Library. - Clear every "Safe" row you have; for files and folders, move them to the Trash first.
- Decide on the "Careful" rows one at a time, with a backup in place.
- Re-measure, note the date, and repeat in a month.
If the Mac also feels slow after an update, our step-by-step troubleshooting guide covers the other usual suspects, and the Mac hub lists more guides.
We build Tend, a free macOS app (macOS 11 or later) with a Storage Explorer and previewed cleanups that go to the Trash. It needs no account, and every step above works with Finder and Terminal alone.
Frequently asked questions
Can I delete System Data directly?
No. The Storage panel shows only its size, and Apple says macOS manages it. You shrink it by managing what feeds it: app data under ~/Library and, depending on your macOS version, local snapshots. Virtual machine and container disk images can also be large, so measure them with du rather than assuming. Clear data from inside the app that owns it, and clear cache folders only after measuring them, starting with apps you have already removed.
Why did System Data grow after I upgraded to macOS 27?
Two candidates: the reported reclassification of purgeable items into System Data, and ordinary app data growing under ~/Library. The Apple Community tip also says rebuilding the Spotlight index may fix a figure stuck on "Calculating…". Restart, re-check, and measure before you delete anything.
Does deleting local snapshots delete my Time Machine backups?
No. Local snapshots are point-in-time records stored on your startup disk, and your backup disk is separate. Deleting them does remove restore points, such as the last day's hourly versions of a file.
Should I use a Mac cleaner app?
The Apple Community tip warns against apps that claim to clean or optimize your Mac, saying that in most cases they do far more harm than good. Our test for any such app, including ours, is that it shows every path and size before it deletes and sends items to the Trash. An app that cannot do that is an unexplained rm.
How much free space should I keep?
We found no figure on the Apple pages we read. The Apple Community tip suggests at least 10% and ideally around 20% free, and elsewhere gives an absolute floor of roughly 20–25 GB. Its figures are not fully consistent, so treat them as a rule of thumb.
Sources and further reading
- Free up storage space on Mac — Apple Support, accessed October 2026. The Storage path, Trash, Downloads, Mail tips, and the iCloud storage-plan note.
- Change Storage settings on Mac — Apple Mac User Guide, macOS 27, accessed October 2026. The categories, the three recommendations, and which categories cannot be deleted from.
- About Time Machine local snapshots — Apple Support, accessed October 2026. Snapshot frequency, 24-hour retention, and the Backup Frequency reset.
- Aren't snapshots purgeable? — Eclectic Light Company, 2026. A test of purgeable snapshot behaviour on macOS 26.
- How to free up "System Data" and other storage on your Mac — neuroanatomist, Apple Community user tip, updated 2026. Available versus free space, the Finder size method, free-space guidance, and the macOS 27 purgeable change (a community report, not Apple documentation).
- docker system prune — Docker Docs, accessed October 2026. What the command removes by default and with
-aand--volumes, plusdocker builder pruneand--filter. - Docker Desktop for Mac FAQs — Docker Docs, accessed October 2026. The
Docker.rawlocation, thels -klshsize check, and the reclaim command. - Homebrew manual — Homebrew documentation, accessed October 2026. What
brew cleanupremoves and its 120-day default.