Why is System Data taking up so much space on my Mac?
System Data is taking up space on your Mac because "System Data" isn't a folder — it's whatever macOS can't classify, lumped into one gray bar. On a developer's Mac that gray bar is mostly regenerable dev junk: ~/Library/Developer/Xcode/DerivedData, ~/.gradle, Docker.raw and orphaned node_modules. GRUJ finds it and deletes it — and never touches the legitimate system part.
brew install --cask fan2dev/tap/gruj 3 months free · no card · direct download (outside the App Store)
Settings shows a 90GB gray bar and won't let you in
Open Apple menu > System Settings > General > Storage and hover the dark-gray stripe: "System Data," 60, 90, sometimes 100GB+ (real Apple-forum reports hit 115GB and 200GB on Sequoia). macOS won't break it down or let you open it — The Eclectic Light Company calls that number "little more than a guesstimate." It's a leftover: total disk minus everything macOS knows how to label. On a dev Mac the unlabeled remainder is huge because your build caches live in hidden folders Finder won't show you (Cmd+Shift+. to reveal). Restarting clears a couple GB of temp files and swap — but your 50GB of DerivedData stays exactly where it was. macOS won't purge it for you.
1. See where it actually went
Run gruj scan. It walks the hidden dev caches macOS hides inside System Data — DerivedData, ~/.gradle, CoreSimulator devices, Docker.raw, npm/pnpm/bun stores, ~/.pub-cache, Cargo target dirs, CocoaPods, ~/Library/Caches — and shows the real size of each, like du -sh would, but all at once.
2. Pick what's safe to nuke
Every item is regenerable: build output, download mirrors, simulator runtimes. Tick the ones you want gone. GRUJ never lists your projects, repos, source or app data — only junk your tools rebuild on the next build, sync or pull.
3. Confirm and reclaim
Confirm and GRUJ deletes safely — it even forces Docker to actually shrink Docker.raw (which docker system prune leaves at full size). System Data drops by the dev junk it was hiding; the legitimate system part stays untouched.
Xcode DerivedData & Archives
10+ Xcode projects routinely stack 30-50GB in ~/Library/Developer/Xcode/DerivedData (forum reports hit ~90GB under ~/Library/Developer). GRUJ clears it safely — Xcode regenerates on the next build.
Docker.raw that won't shrink
docker system prune frees space inside the VM but leaves ~/Library/Containers/com.docker.docker/.../Docker.raw at full size — 20-50GB of dead weight. GRUJ forces the reclaim Docker won't do on its own.
Gradle, NDK & simulator runtimes
~/.gradle/caches and old iOS simulator runtimes/devices each balloon to 5-26GB+. GRUJ clears them (closing Android Studio first to avoid lock errors) so the next sync re-fetches clean.
node_modules, pnpm, bun, Cargo, pub-cache
Orphaned node_modules (200-500MB each), global stores in ~/.npm and ~/Library/pnpm, ~/.pub-cache, and Rust target/ dirs (the biggest multiplier — 10-100GB+). GRUJ surfaces every one.
Caches, CocoaPods, pip, Homebrew
~/Library/Caches, ~/Library/Caches/CocoaPods, ~/Library/Caches/pip, $TMPDIR and ~/Library/Caches/Homebrew (often 10GB+ for long-term users). All regenerable mirrors — re-downloaded on demand.
Only regenerable. Never your work.
GRUJ deletes nothing it can't justify: build output, caches, mirrors, temp files. It never touches projects, repos, source code, databases, your real System Data, swap or APFS snapshots.
GRUJ vs. clearing System Data by hand
| GRUJ | Settings / Finder | |
|---|---|---|
| Breaks down what's in System Data | Yes — per-tool, real sizes | No — one gray number on hover |
| Finds hidden ~/Library & dotfolder caches | Yes — scans them all | No — Finder hides them by default |
| Knows DerivedData, Gradle, Docker, node_modules | Yes, by design | No — "Optimize Storage" ignores them |
| Forces Docker.raw to actually shrink | Yes | No — stays full after prune |
| Risk of deleting the wrong thing | None — regenerable only | High — manual rm -rf typos |
| Steps to clean everything | scan, pick, confirm | 8+ separate commands |
FAQ
What is System Data on Mac?
System Data is the dark-gray stripe in System Settings > General > Storage. It's not a real folder — it's a leftover macOS calculates by subtracting everything it can classify (Apps, Documents, Photos, Mail...) from total disk usage. Whatever's left gets dumped into "System Data." It was called "Other" on macOS 11 and earlier.
Why is System Data taking up so much space on my Mac?
On a normal Mac it's typically 20-50GB of caches, logs, swap and snapshots. On a developer's Mac it's far bigger because hidden dev caches — DerivedData, ~/.gradle, Docker.raw, node_modules, simulator runtimes — get counted there and can add 50-100GB+ that macOS never warns you about.
How do I reduce System Data on my Mac?
Find and delete the regenerable caches macOS lumped into it. On a dev Mac the biggest wins are ~/Library/Developer/Xcode/DerivedData, ~/.gradle/caches, Docker.raw and orphaned node_modules. Run gruj scan to see every one with its real size, then pick what to remove. macOS won't shrink System Data on its own.
What's the best way to clear System Data on a developer Mac?
The fastest safe way is a tool that knows dev caches: run gruj scan, review the per-tool sizes, tick the regenerable junk, and confirm. Doing it by hand means 8+ different commands (rm -rf DerivedData, docker system prune, pod cache clean --all, brew cleanup...) across multiple tools, some risky to mistype.
Does restarting reduce System Data on Mac?
A little. Restarting clears swap, frees memory on Apple Silicon, and drops temp files apps remove on quit — usually 1-3GB. But it does nothing to your dev caches: DerivedData, ~/.gradle, Docker.raw and node_modules survive every reboot untouched.
Is it safe to delete DerivedData, Docker.raw or ~/.gradle?
Yes — all three are regenerable. Xcode rebuilds DerivedData on the next build, Docker recreates its disk image, and Gradle re-fetches caches on the next sync (close Android Studio first to avoid file locks). GRUJ only ever deletes regenerable junk like this, never your projects or source.
Will GRUJ delete legitimate System Data or break macOS?
No. GRUJ does not vacuum "System Data" as a category and never touches swap, APFS snapshots, Spotlight indexes or OS support files. It only removes the regenerable dev caches hiding inside that gray bar — the part your tools rebuild automatically.
Why doesn't macOS Tahoe (26) show what's inside System Data?
By design — it's an estimated leftover, not an indexed folder, so System Settings shows a single gray number on hover and won't let you open it. The name "System Data" is the same on Ventura, Sonoma, Sequoia and Tahoe (26); it was "Other" on macOS 11 and earlier.
Empty the gray bar of dev junk
Free for 3 months, no card. GRUJ scans the hidden caches inside your System Data and reclaims the 50GB+ macOS won't show you. macOS 13+. Direct download (Apple-notarized) or brew install --cask fan2dev/tap/gruj.
Download free