The short version
If node_modules is your only problem and you're comfortable with permanent deletion in a terminal, use npkill — it's free and it works. If your disk is filled by a mix of build outputs, caches, and artifacts across languages, or you want every deletion to be reversible, RepoSweep is built for that.
Side by side
| npkill | RepoSweep | |
|---|---|---|
| What it finds | node_modules (plus a few configurable targets) | node_modules, .next, dist, build, coverage, __pycache__, target, and other artifacts across 14 ecosystems, plus Xcode DerivedData and global npm/Homebrew/Gradle/Cargo caches, plus Downloads |
| Interface | Terminal (interactive CLI) | Native macOS app |
| Deletion | Permanent (no Trash) | macOS Trash only — reversible with Put Back |
| Safety checks | Path-based | Verifies project ecosystem, checks Git status (tracked files never offered), revalidates every item immediately before cleanup |
| Explains matches | No | Safety label, evidence, and regeneration command per item |
| Privacy | Local | Local — no account, telemetry, or network except explicit update checks |
| Price | Free (open source) | Free unlimited scanning; one-time $12 license for cleanup |
Where npkill wins
- It's free and open source.
- Zero install with
npx npkill. - Perfect fit if node_modules is genuinely your only space problem.
Where RepoSweep wins
- Scope: JavaScript is rarely the whole story — Python caches, Rust targets, Xcode DerivedData, and global package caches often hold more than node_modules does.
- Reversibility: npkill's deletions are gone; RepoSweep's sit in Trash until you empty it.
- Judgment: RepoSweep checks whether a folder belongs to a real project and whether Git tracks it before ever offering it — the difference between a search tool and a safety tool.
Try both: npx npkill costs nothing, and RepoSweep's scan is free without limits — you'll see exactly how much space each approach can recover before paying anything.