A storage cleanup routine for a MacBook that actually sticks

Clearing 60 GB once is easy. Staying clear is the hard part, and it is a schedule rather than a heroic afternoon.

Most storage advice is written for an emergency: the disk is full, nothing will save, and you need 20 GB in the next ten minutes. That advice works, and then six months later you are in exactly the same place.

This is the other version. A routine, split by how often each part is worth doing, sized for a MacBook with a 256 or 512 GB SSD where the margin is permanently thin.

Everything here can be done with what is already on your Mac. Where a tool saves real time, it says so at the end, once.

First, know your baseline

You cannot tell whether a routine is working without a number to compare against. Get one:

df -h /System/Volumes/Data

Write down the available figure. Then get the shape of your home folder, which is where almost all of the growth happens:

du -sh ~/* 2>/dev/null | sort -h | tail -12
du -sh ~/Library/* 2>/dev/null | sort -h | tail -12

Those two lists are your dashboard. Nearly every gigabyte that appears over the next year appears in one of those rows. Keep the output in a note; next month’s run compares against it, and the row that grew is the row to look at.

Be aware that df and Finder disagree on purpose. The gap is purgeable space, and it is not a bug.

Every month, ten minutes

Empty the Trash on every volume. Not just the one in the Dock — external drives and disk images each have their own, and they are all counted. If it refuses, here is why.

Clear the Downloads folder. Sort by date, keep what you recognize, delete the rest. On most Macs this is the single largest recurring source of waste, and nothing else on this list is as easy.

du -sh ~/Downloads

Check the browser’s downloads and cache. Safari, Chrome and the rest keep a downloaded-file log and a cache that grows without limit. Clearing the cache costs you a slightly slower first load of the sites you visit and nothing else.

Look at the two du lists again. One line each. If a row grew by more than a few gigabytes, open that folder and find out why. This is the entire discipline — noticing early, when the answer is one folder rather than forty.

Every quarter, half an hour

Thin local Time Machine snapshots. macOS keeps hourly snapshots on the internal disk, and on a busy machine they routinely occupy tens of gigabytes:

tmutil listlocalsnapshots /
sudo tmutil thinlocalsnapshots / 50000000000 4

The number is bytes to reclaim. Full explanation of what those snapshots are.

Delete old iOS backups. A single iPhone backup is commonly 30 to 80 GB, and Finder keeps every one until you remove it by hand. Where they live and how to delete them safely.

Sweep application caches. The safe ones are under ~/Library/Caches, and the rule is that anything an app can rebuild is fair game while the app is closed:

du -sh ~/Library/Caches/* 2>/dev/null | sort -h | tail -15

Delete the contents of the big offenders, not the folders themselves, and skip anything you cannot identify. What is safe to clear and what is not.

Uninstall properly, not with drag-to-Trash. Any app you removed last quarter probably left support files, containers, preferences and a launch agent behind. The find commands that locate them.

Developer machines: clear derived data and package caches. Xcode alone will hold 30 GB or more without ever telling you, and node_modules, Homebrew, Docker and pip all accumulate independently. Xcode’s share of it.

Twice a year, an hour

Audit login items and launch agents. Not a storage job, but it is the same list of forgotten software, and it is the one that affects how the machine feels. How to read them.

Hunt duplicates. Photos imported twice, a project folder copied “just in case”, a Downloads folder with three versions of the same installer. Finding them with shasum.

Look at the whole disk as a map. Any treemap tool, or du -sh walked down by hand, or CleanSpace’s Space Lens. Twice a year is the right cadence for this, because it catches the things that grew slowly enough that no monthly check flagged them.

Check what a macOS update left behind. Major updates keep installers and old system files around for a while. What is safe to remove afterwards.

What to automate, and what not to

Automate the boring, reversible parts. In System Settings → General → Storage, turning on Empty Trash automatically removes items after 30 days, which makes one whole monthly step disappear. If you use iCloud Drive, Optimize Mac Storage evicts local copies of files you have not opened — with the caveat that those files then need a network connection to open, which matters on a plane.

Do not automate deletion of anything you have not personally looked at at least once. The value of the monthly du check is not the cleaning; it is that you learn what normal looks like on your own machine, so an abnormal 40 GB stands out immediately.

If the disk is full right now

This routine is for staying clear, not getting clear. If you are below a few gigabytes free, macOS itself starts misbehaving — apps fail to save, Spotlight indexing stalls, and the usual tools become slow. Start with the emergency version, get back above 10% free, then come back to the schedule.

And if you are on a 256 GB MacBook specifically, the constraints are different enough to be worth reading separately — at that size the routine is not optional maintenance, it is the only thing keeping the machine usable.

The shortcut

Every step above is free and takes the time it says. The reason to use a tool for it is that a routine you have to remember is a routine you stop doing by March.

That is the case for CleanSpace: one pass that measures all of these at once — caches, logs, saved state, derived data, snapshots, leftovers, large and old files — and shows the real sizes and full paths before anything is ticked. The scan is free and never expires, so you can run it once a month as the ten-minute check and do the deleting by hand if you would rather. That is a legitimate way to use it, and it is what the free tier is for.