Backspacer

Free up disk space on a developer's Mac

Backspacer

I got some if you need it.

A small macOS app that finds the caches, build output and tooling leftovers that silently eat a developer's disk, sorts them by how safe they are to remove, and deletes only what you select.

Or with Homebrew
brew tap anton-g-kulikov/tap
brew install --cask backspacer
  • macOS 13 or later
  • Apple silicon and Intel
  • Notarized, no Gatekeeper warnings
  • Updates itself
  • Free for noncommercial use

What macOS shows you

What Backspacer finds inside it

74.6 GB foundon a 245 GB MacBook Air, sorted by how safe it is to remove
node_modules in project folders~/Projects/*/node_modules14 GB
Xcode DerivedData~/Library/Developer/Xcode/DerivedData11.2 GB
iOS DeviceSupport symbols~/Library/Developer/Xcode/iOS DeviceSupport6 GB
~/Library/Cachesone folder per app5.3 GB
Gradle dependency cache~/.gradle/caches5.3 GB
VS Code workspace storage…/Code/User/workspaceStorage4.6 GB
.NET NuGet cache~/.nuget/packages4.6 GB
and dozens more: Claude, Codex and Gemini sessions, Notion, Steam, simulators, npm, Docker…
  • 27.6 GB safe to delete
  • 26.6 GB regenerable
  • 20.5 GB your call

System Settings tells you how much, never what. Backspacer grew out of a month of chasing that number on this MacBook Air.

Five buckets, one confirmation.

Every entry is measured, explained, and placed by how safe it is to remove. You pick what goes; the dialog lists every item and its size before anything happens.

Safe to delete

Caches and build output every app rebuilds on its own. No cost.

removed for good

Regenerable

Comes back on the next build or install. Costs one slow build.

removed for good

Your call

Real data or tooling. Delete only what you no longer use.

moved to the Trash

Keep

Needed for current work. Shown so the numbers add up.

read-only

Managed by macOS

macOS manages these itself — purged automatically or SIP-protected. Shown for accounting.

read-only
Backspacer after a scan: the icon and tagline with 100.5 GB of space found, a disk meter, then the Safe to delete bucket listing Claude session data, ~/Library/Caches and ~/.cache with sizes and Details, Reveal and Delete buttons on each row
A real scan. Xcode, simulators, npm, Gradle, Docker, Electron apps and the AI tools' own caches — every row says what it is, where it lives and how much, with its own Details, Reveal and Delete.

What it knows about.

93 entries in the catalog today, grouped like this. Multi-path entries open a Details list with a Delete per project, per simulator, per model, per app.

  • Xcode & simulatorsDerivedData, simulator devices and runtimes, DeviceSupport symbols, archives, preview data
  • Project build outputnode_modules, Pods, .next, Android and iOS build folders, .NET bin/ and obj/ across your project folders
  • Toolchain cachesnpm, Yarn, pnpm, Bun, Gradle, Maven, NuGet, CocoaPods, Cargo, Go, pip, conda, pub
  • Caches~/Library/Caches and ~/.cache per app, Electron web caches, Homebrew downloads and orphans, logs, Trash
  • AndroidEmulator system images, virtual devices, NDK, SDK sources
  • Regrowth sourcesThe things that refill a disk: local VM images, agent session data, a staged macOS update
  • AI tool historyClaude Code, Codex, Gemini CLI, Cursor and Antigravity session data
  • App dataiPhone backups per device, Ollama models per model, Notion, Steam, Spotify, Safari, Telegram
  • VS CodeCaches, workspace storage per project, dictation models
  • Virtual machinesParallels and UTM, measured and explained, deleted from their own apps
  • Your filesScreenshots and Downloads: measured, never deleted by the app
  • Managed by macOSTime Machine local snapshots, Apple Intelligence models, developer documentation

What it isn't: an app uninstaller or a general Mac cleaner. Backspacer is for the apps and tools you keep: the caches, build output and downloads they pile up while you use them. When you're done with an app, AppCleaner is the best free way to remove it together with everything it left behind.

Built to be trusted with a disk.

An app that deletes folders has to earn it. The rules are in the source, and the test suite runs the safety gate over every path in the shipped catalog.

  • The page never names a path.

    Every disk operation takes a catalog entry id. The Swift side resolves it from its own copy of the catalog, so a bug or injection in the UI cannot delete anything the catalog doesn't already describe.

  • A second gate on every path.

    Home, Documents, Desktop, Pictures, Mail, Messages, Keychains, iCloud Drive, .ssh and anything outside the allowed roots are refused at any depth, after symlinks are resolved.

  • Your call goes to the Trash.

    Real data is moved to the Trash so Finder can put it back. Caches and build output are removed for good, because parked in the Trash they would reclaim nothing.

  • Nothing runs as root without the system dialog.

    Admin items go through macOS's own password prompt. The app never sees a password and there is no helper tool to trust.

  • The threshold hides, it doesn't just filter.

    Entries under the size you choose leave the list and can't be selected until you lower it again.

  • A plain-text log of what it did.

    Every scan and delete, the exact commands, failures. About → Reveal log. Nothing is ever sent anywhere.

Read it before you trust it.

The source is public so you can check what the app does before handing it your disk, build it yourself, and propose catalog entries. The UI runs in a plain browser with a mock bridge; the app is a Swift package with no dependencies.

Backspacer is free for noncommercial use under the PolyForm Noncommercial License 1.0.0: use it, share it, read and modify the source. Commercial use needs a separate license from the author. The name and icon aren't licensed, so a modified build must be renamed. Full terms in LICENSE; pull requests are accepted under Apache-2.0.

The most useful things you can send are a bug report with the log attached, and a catalog entry: what the folder is, where it lives, which bucket and why, what brings it back. The issue templates ask exactly those questions.

# build the app from source (Xcode 16 or later)
git clone https://github.com/anton-g-kulikov/backspacer.git
cd backspacer
scripts/build-app.sh
open build/Backspacer.app

# or just try the UI, no Xcode needed
python3 -m http.server 8765
open http://localhost:8765/web/index.html