Your old projects are hoarding gigabytes.

Shavings finds the node_modules, build folders and virtual environments your tools can rebuild in minutes, and moves them to the Trash.

Coming soon for Apple silicon Macs with macOS 15 Sequoia or later.
Shavings

Try it: open a project to see what would go, move items to the Trash, then put them back.

Only what your tools can rebuild

54 rules across 15 ecosystems.

  • Node
  • Python
  • Xcode & Swift
  • Rust
  • Java & Kotlin
  • .NET
  • Go
  • Dart & Flutter
  • C & C++
  • Ruby
  • PHP
  • Unity
  • Godot
  • Elixir
  • Terraform

Nothing is deleted. Ever.

A folder called build could be anything. Shavings needs proof before it offers one, and checks again right before it moves it.

photo-tagger/
├── pyproject.toml     the project marker
├── src/
└── .venv/
    ├── bin/
    ├── lib/
    └── pyvenv.cfg     proof it was generated

A .venv is only offered when it sits next to a Python project file and contains pyvenv.cfg. A Rust target needs Cargo.toml beside it and CACHEDIR.TAG inside.

Right before each move, it checks again

If anything changed since the scan, the item is skipped and you're told why.

  1. It's the same folder that was scanned, not a symlink or a replacement.
  2. It's inside one of your scan locations, reached without following links.
  3. Its rule still matches, marker and proof included.
  4. It holds no .git folder, project files, .env files or lockfiles.

Trash, not delete

Items go to the Trash, where you can see them. There's no delete command in the app, and a test checks the code for calls that delete files.

Get anything back

Cleanup History ⌘Y lists everything Shavings moved and whether it's still in the Trash. Show in Trash selects it in Finder, and Finder's Put Back returns it to where it was.

Try it without moving anything

Turn on dry run in Settings and every safety check runs, but nothing moves. You see exactly what a cleanup would take.

See which projects you've moved on from

Each project is labelled by your last commit, checkout, merge or pull. Projects outside Git use their newest file change.

Active

You're working on it.

Older

Touched in the last few weeks.

Inactive

Probably safe to clear. You decide.

Your thresholds, your call

Change the 7 and 21 days in Settings. Labels only inform you. Shavings never selects anything for you.

Warned about committed files

If a folder contains files committed to Git, it's tagged Tracked by Git so clearing it won't surprise you in git status.

See where the space went

Go after the biggest wins first, and leave alone what you want to keep.

Breakdown by ecosystem

The overview splits reclaimable space by ecosystem, activity and kind of folder. Click an ecosystem to list only its projects. Check a few items and it adds up just those.

Clean a whole project

Done with a project? Clean Project moves all of its rebuildable folders to the Trash in one go. Source code, .git, lockfiles and config stay put, and every item still gets the same safety checks.

Ignore what you want kept

Right-click a project and choose Ignore Project, or add whole folders in Settings. Ignored places are skipped by every future scan.

Built for the Mac

  • Lives in the menu bar. See how much you could reclaim and start a scan without opening a window.
  • Rescans on its own. If the last scan is more than a day old, it refreshes in the background.
  • Runs nothing. It reads Git's files directly instead of calling git, and never crosses into other volumes.
  • Keeps your projects private. No account needed. Shavings doesn't upload your file names, paths or scan results.
  • Keeps its data readable. Settings, the last scan and the cleanup log are plain files in Application Support.

One price, every Mac you use

  • 14-day free trial. No account and no card.
  • Every Mac you use. For your own projects and your work. Buying for a team? Email support@shavings.app for volume pricing.
  • Free updates. Every Shavings 1 release.
  • 14-day refund. Not happy? Ask within 14 days and get your money back, no questions asked.

$9.99 plus VAT or sales tax, paid once

Coming soon

Your total, with the tax for your country, is shown at checkout before you pay. Payments handled by Paddle. Terms

Soon.

Shavings is almost ready. It'll run on Apple silicon Macs with macOS 15 Sequoia or later.