← All guides

The best Mac cleaner for developers

The best Mac cleaner for developers finds what generic cleaners miss (node_modules, Xcode DerivedData, Docker.raw), shows exact paths, never touches source.

Plumby Team5 lug 2026Updated 9 ago 20264 min read
The best Mac cleaner for developers

Generic Mac cleaners are built for a generic Mac: browser caches, mail attachments, old downloads. They mostly ignore what actually fills a developer's disk. The best Mac cleaner for developers is the one that knows where build artifacts hide and can tell your node_modules graveyard from your source tree. Here's what a dev machine really accumulates, how to find it by hand, and what to look for in a tool.

What a developer's Mac actually accumulates

If you write code, your disk fills up on a different scale, and from things a one-click cleaner was never designed to see:

  • node_modules graveyards. A single project pulls hundreds of MB of transitive dependencies. You have dozens of cloned repos you'll never open again, each carrying its own copy. It's safe to delete every one of them. They rebuild from your lockfile.
  • Xcode. The single biggest offender for Apple devs. DerivedData, simulators, and per-version DeviceSupport commonly total 20–50 GB. DerivedData alone is often 2–15 GB, and every iOS version you've ever debugged leaves a 5–8 GB DeviceSupport folder that never gets pruned. Simulators and runtimes can quietly add tens of GB more.
  • Docker.raw: the classic "grows but never shrinks." Docker runs a Linux VM whose entire disk is one file. It expands as you add images, but deleting them inside Docker doesn't shrink the file. The host-side .raw keeps its high-water mark. One documented case: 67 GB on disk for 15–20 GB of actual content.
  • Package-manager caches that never clean themselves. Homebrew's download cache commonly reaches 3–6 GB; npm, pip, Cargo, and Gradle each keep their own growing cache; every Python venv duplicates its dependencies again.

That's the developer slice. For the full map of where Mac storage goes (System Data, APFS snapshots, and files apps leave behind after you "uninstall" them), see the hidden storage on your Mac.

Find it yourself in Terminal

Before you reach for any tool, you can measure all of this by hand.

Every node_modules on the machine, largest first:

find ~ -name "node_modules" -type d -prune -print0 2>/dev/null \
  | xargs -0 du -sh 2>/dev/null | sort -rh | head -20

Xcode's footprint:

du -sh ~/Library/Developer/Xcode/DerivedData
du -sh ~/Library/Developer/Xcode/iOS\ DeviceSupport
du -sh ~/Library/Developer/CoreSimulator/Devices

The Docker disk image, and reclaiming space inside the VM:

du -sh ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
docker system prune          # removes unused images, containers, build cache

The package caches, all at once:

du -sh ~/Library/Caches/Homebrew ~/.npm ~/Library/Caches/pip \
       ~/.cargo ~/.gradle/caches 2>/dev/null
brew cleanup                 # clears old versions + Homebrew's download cache

Everything here is generated, not authored. It comes back the next time you install or build.

What the best Mac cleaner for developers actually looks for

Most one-click cleaners aim at the same short list: user caches in ~/Library/Caches, browser data, the Trash, old installers. That's fine work, but it's not where a developer's gigabytes live, and macOS often reclaims that stuff on its own anyway.

What one-click cleaners target What they usually miss
User caches (~/Library/Caches) node_modules across old projects
Browser data, mail downloads Xcode DerivedData / simulators / DeviceSupport
Trash, old installers Docker.raw's high-water mark
System logs Homebrew / npm / pip / Cargo / Gradle caches

So for a dev machine, the useful criteria are narrower and stricter:

  • It shows exact paths. You should see ~/Library/Developer/Xcode/DerivedData and the full Docker.raw path, not a vague "System Junk: 42 GB." If a tool won't tell you what it's about to delete, you can't trust the number.
  • It's developer-aware. It knows node_modules, DerivedData, DeviceSupport, Docker.raw, and the package caches by name, and treats them as regenerable, not as mystery bloat.
  • It never touches source. Build output and caches, yes. Your working tree, your .env, your uncommitted changes; never.
  • It's reversible. Even safe deletes are safer when you can undo them. Prefer a tool that stages deletions rather than shredding on one click.

A fair word on the all-in-one cleaners: CleanMyMac (by MacPaw) is a legitimate, Apple-notarized app. It's not malware and not a scam. The honest catch is category fit, not integrity: its headline "GB found" figures are estimates, much of what it clears is user cache macOS would rebuild anyway, and one-click auto-delete without per-item review puts the cost of a wrong guess on you. It also doesn't specialize in dev build-up. We don't publish benchmarks we haven't run, so we won't claim a GB-per-scan number for anyone. For the full, fair comparison of the trusted tools in this space (DaisyDisk, GrandPerspective, AppCleaner, and others), see the CleanMyMac alternatives.

The honest bottom line

You can do all of this in a terminal, and now you have the commands. The tedious part is that dev build-up is scattered: a node_modules here, a DerivedData there, a Docker.raw buried five folders deep. The risk is deleting the wrong thing when everything looks like junk. Plumby finds every node_modules, DerivedData folder, Docker.raw, and stale package cache across the whole machine, shows each one with its size, age, and exact path, and clears only what you choose. Freed space is measured as each item goes, and anything it clears can go to the Trash rather than be deleted, so you can put it back. It never touches your source.

See it, don’t guess it.
Plumby shows where your disk, memory, and processes actually go, then clears what’s safe, only when you say so.

Related guides