Few things are more frustrating than a macOS Sonoma storage full alert appearing mid-work — especially when Finder shows plenty of items you've already deleted. If the storage bar is buried under an enormous "System Data" slice and you have no idea what's actually in there, you're not alone. This guide explains exactly what causes the bloat, which parts are safe to remove, and the fastest manual and automated ways to free up space on macOS Sonoma.
Why macOS Sonoma Reports a Full Disk (When It Feels Like It Shouldn't)
macOS 14 Sonoma groups a wide range of files under the catch-all System Data category in System Settings → General → Storage. This bucket swallows caches, logs, Time Machine local snapshots, language files, old iOS device backups, virtual machine images, and files that have been "deleted" but are still held by an app or a process lock. The real disk is genuinely full — the category label is just misleading about why.
Common culprits responsible for tens of gigabytes of hidden bloat:
- APFS local snapshots — Time Machine's on-disk rolling backups; macOS keeps them "until space is needed," but that reclaim can be slow.
- System and user caches — browser, Xcode derived data, Homebrew, npm/Yarn/pnpm, Gradle, CocoaPods, and more.
- App leftovers — dragging an app to the Trash removes the
.appbundle but leaves support files, caches, and preferences scattered across~/Library. - Old iOS/iPadOS backups — legacy iTunes/Finder backups can be several gigabytes each.
- Log archives — crash logs and system diagnostic reports under
/var/logand~/Library/Logs. - Purgeable space that hasn't been reclaimed yet — macOS marks space as purgeable before it actually frees it; this shows as "used" in Finder but "purgeable" in Disk Utility.
Step 1 — Understand What's Eating Your Disk Before You Delete Anything
Never delete blindly. Start with a clear picture of where your gigabytes actually are.
Use System Settings Storage (a starting point, not the full picture)
- Open System Settings → General → Storage.
- Wait for the bar to finish calculating — this can take 30–60 seconds on a large volume.
- Hover over each color segment to see the category and size.
The built-in view is useful for spotting that System Data is large, but it won't tell you which folders inside it are responsible. For a real breakdown, use a disk visualizer.
Use a Disk Treemap to Find the Actual Files
Crumb's Visualize tab renders a full-Mac treemap in seconds, letting you click into any folder — including the opaque System Data directories — and see which subfolders are largest. When you hover an unfamiliar path, the built-in "Is this safe to delete?" AI explains what the folder does and its removal risk, which is genuinely useful before touching anything in /Library.
Alternatively, you can use Finder's built-in folder size trick: right-click a folder → Get Info, or run this in Terminal:
du -sh ~/Library/Caches/* | sort -rh | head -20
This shows your largest user-cache directories sorted by size.
Step 2 — Clear User Caches (Safe, Routine)
User caches live in ~/Library/Caches. These are rebuilt automatically by apps when needed. Clearing them is safe — the only consequence is that some apps (browsers, Xcode) will feel slower on first launch while they regenerate.
- Quit any apps whose caches you are about to clear.
- Open Finder, press Cmd + Shift + G, and type
~/Library/Caches. - Inside, you'll see per-app folders. Large common offenders:
com.apple.dt.Xcode,Google,com.spotify.client,Slack,com.microsoft.teams. - Delete the contents of an app's cache folder, not the folder itself — some apps expect the directory to exist.
For developer machines, Xcode's derived data and archives are often the single largest cache on the system:
# Derived data — safe to delete entirely
rm -rf ~/Library/Developer/Xcode/DerivedData
# Old device support files (can be multi-GB)
rm -rf ~/Library/Developer/Xcode/iOS\ DeviceSupport/*
# Homebrew package cache
brew cleanup --prune=all
Risk note: Deleting caches is permanent. The data regenerates, but any session tokens or offline content stored as cache (some apps misuse the cache directory) will be lost. If unsure about a specific folder, check what it is before deleting.
Step 3 — Remove Old iOS Backups
iPhone and iPad backups created through Finder (or legacy iTunes) can be 5–20 GB each and accumulate silently.
- Open Finder → [your device in the sidebar] → Manage Backups — if no device is connected, open System Settings → General → Storage → iOS Files.
- Review the list, confirm dates, and delete backups you no longer need.
- Backups also live at
~/Library/Application Support/MobileSync/Backup/— each subfolder is one device backup. Do not delete these manually unless you can confirm which UDID corresponds to which device.
Step 4 — Delete APFS Local Snapshots
Time Machine keeps hourly local snapshots on APFS volumes. macOS is supposed to purge these when space is needed, but the reclaim is often delayed. You can force it:
# List all local snapshots
tmutil listlocalsnapshots /
# Delete all local snapshots (macOS will start fresh)
tmutil deletelocalsnapshots /
Important: This removes local on-disk backup points. Your off-disk Time Machine backup (on an external drive or Time Capsule) is unaffected. If you have no external backup, consider whether you need those local restore points before deleting.
Step 5 — Remove App Leftovers After Uninstalling
Dragging an app to the Trash is not a full uninstall. macOS apps scatter support files across multiple locations:
~/Library/Application Support/<AppName>~/Library/Caches/<BundleID>~/Library/Preferences/<BundleID>.plist~/Library/Containers/<BundleID>~/Library/Group Containers//Library/Application Support/<AppName>(system-wide support files)
Finding these manually for every removed app is tedious and error-prone. Crumb's Uninstall tab scans for installed apps, shows which are already uninstalled but left files behind, and presents a checklist of all located leftovers before you delete anything — so you can review and confirm rather than guessing paths. You can download Crumb to run this once on your system and see exactly how much orphaned data is sitting around.
Step 6 — Clear System-Level Caches and Logs
These require a little more care because they live outside your home folder.
| Location | What's there | Safe to clear? |
|---|---|---|
/Library/Caches |
System-wide app caches (shared daemons, Spotlight index fragments) | Generally yes — rebuilt on demand |
/private/var/folders |
Sandboxed per-user temp files managed by macOS | Let macOS manage this; manual deletion can break running processes |
/private/var/log |
System log archives | Safe to delete old .gz log archives, but leave active logs |
~/Library/Logs |
Per-app crash logs and diagnostic reports | Yes — safe to delete; no functional impact |
/private/tmp |
Temporary files for the current session | macOS purges this on restart; safe to clear when no processes are active |
# Clear user logs
rm -rf ~/Library/Logs/*
# Clear system log archives (leave active .log files)
sudo find /private/var/log -name "*.gz" -delete
sudo find /private/var/log -name "*.bz2" -delete
Step 7 — Deal With Purgeable Space That Won't Budge
If Disk Utility or df shows more free space than System Settings does, the gap is likely purgeable space — APFS-reserved space that macOS has marked as reclaimable but hasn't reclaimed yet. This resolves on its own when you copy a large file, but you can trigger it manually:
# Check actual available vs purgeable
df -h /
# Creating a large temp file forces macOS to reclaim purgeable space, then delete it
dd if=/dev/zero of=~/purgeable_trigger.tmp bs=1m count=5000 && rm ~/purgeable_trigger.tmp
Use a count appropriate to your situation — 5000 MB (5 GB) is usually enough to trigger reclaim without overwhelming a nearly-full disk. If free space is less than this, reduce the count.
Quick-Reference: Which Files Are Safe vs. Risky to Delete
- Safe: user caches (
~/Library/Caches), Xcode derived data, Homebrew cache, crash logs, old iOS device support files, orphaned app leftovers after uninstall,~/Library/Logs. - Risky without verification:
/private/var/folders(OS-managed), active.logfiles, anything in/Systemor/usr. - Never delete manually: running process files, active Time Machine snapshots while a backup is in progress, anything you cannot name or recognize.
Keeping Sonoma Storage Under Control Long Term
A one-time cleanup helps, but Sonoma will re-accumulate cache and log bloat within weeks of heavy use. A few habits prevent the next crisis:
- Run
brew cleanup --prune=allmonthly if you use Homebrew. - Clear Xcode derived data after major project milestones, not just when disk fills.
- Uninstall apps you no longer use with their leftovers, not just by dragging to the Trash.
- Review iOS backups each time you upgrade a device — old ones accumulate fast.
- Check your disk treemap quarterly so problems surface before they become emergencies.
Conclusion
A macOS Sonoma storage full warning is almost always solvable without deleting files you actually care about. The real culprits — System Data caches, APFS snapshots, app leftovers, and old iOS backups — are all safe to remove once you know exactly what they are. Start with a clear visualization of your disk, remove caches and logs methodically using the paths and commands above, purge orphaned app files properly, and you should recover meaningful space in under an hour. If you want a single tool to visualize, clean, and uninstall in one place rather than running a dozen Terminal commands, that's exactly what Crumb is built for.