bitsandbytesbuy me a coffee

[ bitsandbytes presents ]

macscrub

A disk analyser and cleaner for macOS. It shows where your space actually went, names what can go and what removing it would cost you, and moves what you choose to the Trash — where you can put it straight back. No Java, no account, no subscription, nothing leaving your Mac.

safeApplication cache — BraveSoftware401 MB
safeTool cache — puppeteerrebuilt on demand7.8 GB
reviewDependencies — old-side-project19 GB
reviewAndroid system image — android-3417 GB
your callAndroid emulator — Pixel_6a_API_33may be the only copy8.7 GB
everything here goes to the Trash · 61.6 GB across 511 items · nothing selected for you
01

Open it and scan

A couple of minutes for a home folder. Every folder it reads is on the screen while it works, and it can be stopped.

02

See where it went

A treemap you click into, the biggest files anywhere, and what changed since the scan before this one.

03

Choose what goes

Grouped by how much thought it deserves. Nothing is selected until you select it.

04

Empty the Trash, or don't

The space returns when you do. Until then every last thing can be put back from inside the app.

[ what it does ]

Nothing is ever deleted

Everything MacScrub removes is moved to your Trash, and it remembers where each thing came from — so putting something back is a button rather than a hunt through three hundred folders named Cache. That trade is the whole design: the space does not come back until you empty the Trash, and until then nothing is lost.

The size you get back, not the size it claims

Files are measured by what they occupy on the disk, so a sparse disk image that says 400 GB and occupies twelve is reported as twelve. Free space matches the figure in System Settings — including purgeable space, and saying how much of it is snapshots macOS will clear when you need the room.

Graded, not guessed

Every item says what it costs you. A rebuildable cache, a dependency folder that is a download away, or something that may be the only copy — that last kind is never selected for you, and the wording changes with it.

Built for a developer's disk

Rules for the things that actually fill a working Mac: Xcode derived data and device support, simulator devices, Android system images and emulators, Homebrew, npm, bun, pnpm, yarn, Cargo, Gradle, Go, Maven, pip, Puppeteer and Playwright browsers — and every node_modules, grouped by project with the date you last touched it.

What the apps you deleted left behind

Dragging an app to the Trash takes the app. It does not take the gigabytes it left in Application Support, its containers, its caches or its saved windows, and nothing in macOS comes back for them. MacScrub finds them by bundle identifier and can tell a vendor's shared data from an abandoned app's.

Copies of the same file

Matched on content, never on names. Size sorts first, then the opening bytes, then the whole file hashed — and both copies are read through and compared again at the moment of removal. You choose which one to keep; the app does not guess.

A security panel, while it is in there

FileVault, the firewall, SIP, Gatekeeper, screen lock, automatic login, XProtect, Time Machine — read and reported, never changed. Plus what starts itself at login, with anything pointing at a program you have deleted marked, and which apps hold camera, microphone, screen recording and accessibility.

Honest about what it cannot see

macOS fences off parts of your own home folder, and while this build is unsigned that fence stays up even once you have granted Full Disk Access — so MacScrub counts the folders it was refused and tells you, rather than quietly reporting a total that is short. It also leaves cloud folders alone, because their contents mostly occupy nothing and asking can hang for ever.

[ questions ]

Is it really free?

Yes. No account, no trial, no upgrade nagging you from a corner. It was written because I wanted it on my own Mac and JDiskReport wanted a Java runtime.

Will it delete something I need?

It cannot delete anything at all. Every removal is a move into your Trash, and MacScrub records both ends of the move so it can put things back itself. It also refuses to touch anything outside your home folder, any of the folders macOS expects to find, and the Trash itself.

Why does it ask for Full Disk Access, and why does it still say some folders are unreadable?

macOS fences off parts of your own home folder — Mail, Messages, Safari, your device backups — and a disk analyser that cannot see them reports a total short by whatever is inside. MacScrub reads sizes there; it does not read your mail. The honest part: macOS ties that permission to one exact program, checked by a certificate, and this build carries only an ad-hoc signature. MacScrub is a window and a scanner running alongside it, so the permission reaches the window and not the scanner. Granting it does no harm and costs nothing, but those folders stay unmeasured until the app is signed with an Apple Developer certificate. Either way MacScrub counts the folders it was refused and says so, rather than quietly handing you a smaller number.

Does anything leave my Mac?

No. There is no account, no telemetry and no server. The app is a small web interface talking to a program on your own machine over localhost, and it works with the network off.

Why does macOS say it cannot be opened?

Because it is not signed with a paid Apple Developer certificate yet. Right-click the app and choose Open the first time, and macOS will remember. That is Gatekeeper doing its job, not a fault.

Which Macs does it run on?

macOS 13 and later, on Apple silicon or Intel. There is a separate download for each — the Apple silicon one will not run on an Intel Mac and the reverse is slower than it needs to be.

Have it.

It is free because it was written for one Mac and there is no reason it should not run on yours. If it saves you an afternoon, there is a coffee button at the top of the page.