Open Apple menu → System Settings → General → Storage and you will see a tidy set of categories: Applications, Documents, Photos, Messages. Then there is a grey slab labelled System Data, and it might be 40GB. Or 180GB. Click it and macOS tells you nothing at all.
That silence is the whole problem. This post explains what is actually in there, why it grows, and what you can safely do about it.
The short answer
System Data is not a folder. It is a leftover — the label macOS puts on everything it could not sort into a friendlier category.
If macOS can confidently say “this is a photo” or “this is an app,” it files it accordingly. Everything else lands in System Data: caches, logs, disk images, virtual machines, old iOS backups, APFS snapshots, developer toolchains, mail attachments, and files in locations Apple never bothered to name.
So “System Data is huge” does not mean anything is wrong. It means macOS gave up on classifying tens of gigabytes of files, and it will not tell you which ones.
What is actually inside it
In rough order of how much space they typically take:
APFS local snapshots. Time Machine keeps hourly point-in-time copies on your internal disk, not just on the backup drive. They exist so you can restore between backups. macOS is supposed to purge them under disk pressure, and it usually does — but “usually” is doing a lot of work in that sentence. On a Mac that has been near-full for weeks, snapshots are frequently the single biggest chunk.
Caches. ~/Library/Caches and /Library/Caches hold anything an app wanted to keep handy:
browser data, Xcode’s derived data, Spotify’s offline songs, Adobe’s media cache, thumbnail
databases. Almost all of it is rebuilt automatically. Xcode alone routinely holds 20–60GB on a
developer’s machine.
Old iOS and iPadOS backups. If you have ever backed up a phone to your Mac instead of iCloud,
those live in ~/Library/Application Support/MobileSync/Backup. Each one is the size of the phone’s
used storage, and macOS never deletes the old ones.
Disk images and installers. Downloaded .dmg files, the 12GB macOS installer you used two years
ago, virtual machine disks from Parallels or UTM.
Logs and diagnostic reports. Individually tiny, collectively not, especially if something on your Mac has been crashing in a loop.
Mail downloads. Every attachment you have ever opened in Mail, cached locally, forever.
Large language models and dev toolchains. A newer entry, and a big one. Ollama models, Homebrew’s
cache, node_modules graveyards, Docker images, Rust and Go build artifacts. A single local LLM can
be 40GB.
Why it keeps growing
Three reasons, and none of them are a malfunction:
- macOS is optimistic about free space. It defers cleanup until the disk is genuinely tight, which means it will happily sit on 60GB of snapshots while you have 15GB free.
- Apps clean up after themselves inconsistently. Uninstalling an app by dragging it to the Trash leaves its caches and application support files exactly where they were.
- Nothing is ever attributed to the app that made it. Once Spotify’s cache is in
~/Library/Caches, macOS has no interest in telling you it belongs to Spotify.
What is safe to remove — and what is not
This is where most advice on the internet goes badly wrong. Treat the contents of System Data as three separate tiers.
Safe: things macOS rebuilds on its own
Caches, logs, temporary files, thumbnail databases, browser caches, dev-tool build artifacts. Delete these and the worst that happens is the next launch of an app is a few seconds slower while it rebuilds. This is usually the majority of recoverable space.
Your call: things that are real but probably stale
APFS snapshots, old iOS backups, downloaded installers, disk images, models you pulled once and forgot. None of these are junk exactly — they are just probably not needed. You should be told what each one is and when it was last touched, and then you should decide.
Never: things that look like junk but are not
Mail’s local store, Messages attachments, Photos library internals, app containers holding your
actual documents, anything under System Integrity Protection. These live in ~/Library next to real
caches and are easy to mistake for junk. Deleting the wrong one loses mail, chat history or app data
permanently.
The rule that keeps you safe: never delete anything from ~/Library that you cannot name. “It
was in a Library folder” is not a reason.
How to shrink it, in order of effort
1. Check your snapshots first
In Terminal:
tmutil listlocalsnapshots /
If that lists a dozen entries, snapshots are likely a large part of your System Data. Connecting
your Time Machine drive and letting a backup complete lets macOS thin them naturally — the safest
route. Deleting them manually with tmutil deletelocalsnapshots works but removes your ability to
restore to those points.
2. Delete old iOS backups
Finder → your device → Manage Backups, or look directly in
~/Library/Application Support/MobileSync/Backup. Each folder is one backup. If you back up to
iCloud now, these are dead weight.
3. Empty the caches that belong to tools you know
Xcode: Xcode → Settings → Components, plus ~/Library/Developer/Xcode/DerivedData.
Homebrew: brew cleanup -s.
Docker: docker system prune.
These three account for a startling share of “mystery” storage on technical Macs.
4. Empty the Trash
Files in the Trash still occupy the disk, and on a Mac with “Remove items after 30 days” switched off they can sit there for years.
5. Restart
Genuinely. A restart clears sleep-image and swap files and triggers some of macOS’s own cleanup routines. It is the least glamorous item on this list and it sometimes recovers several gigabytes.
What about cleaner apps?
Most of them make the same mistake macOS does: they show you a number and a button. You click Clean, a progress bar runs, the number goes down, and you have no idea what left your Mac.
That is the wrong shape for this problem. System Data is confusing because it is unlabelled — so a tool that deletes it without labelling it has not solved anything. It has just moved the trust problem one level up.
What you actually want from a tool here:
- Every item named, sized, and given a reason it was flagged.
- A clear split between “rebuilds itself,” “your call,” and “your data, off limits.”
- Deletion that goes to the Trash, so a mistake costs you a Finder click rather than a file.
- No claims about making your Mac faster. Freeing disk space frees disk space.
This is precisely why we built Purgy the way we did: it measures inside System Data, sorts every byte into those three tiers, and shows you the list before anything moves. You can read more about how the safety tiers work on the front page.
The one-line version
System Data is not a problem to be feared or a folder to be nuked. It is an unlabelled pile — mostly caches that rebuild themselves, some genuinely stale backups and snapshots, and a bit of irreplaceable data mixed in. Label it before you delete it, and the whole thing stops being scary.