Open Source · MIT Licensed

Reclaim gigabytes from stale builds

dustoff finds bloated JS/TS build artifacts hiding across your projects and gives you an interactive terminal to browse, select, and safely delete them.

Get Started
dustoff — ~/projects
dustoff scanning and browsing artifacts
30
artifact types detected
0
config files needed
10
color themes
vim
keybindings built in
features
scanning & browsing
dustoff scanning and browsing build artifacts
[>]

Real-time BFS scanner

dustoff walks your entire project tree using breadth-first traversal, streaming results as they're discovered. Sizes resolve in parallel with smart deduplication.

  • Inode dedup prevents double-counting hardlinks
  • pnpm symlink safety built in
  • Sensitive location detection with warnings
  • Configurable target and exclude lists
sorting & filtering
Sorting artifacts by size, path, and age
[#]

Full terminal interface

Browse hundreds of artifacts with virtual windowed rendering. Sort by what matters. Filter to find exactly what you're looking for.

  • Sort by size, path, or age
  • Type filter modal for artifact types
  • Path substring search
  • Directory grouping with collapse/expand
detail panel
Detail panel showing artifact metadata and directory grouping
[~]

Detail panel & metadata

Toggle a rich side panel showing everything about the selected artifact. See exactly what's eating your disk before you decide to remove it.

  • Type, total size, age, full path
  • Subdirectory size breakdown chart
  • Scrollable with +/- keys
  • Responsive: fullscreen on narrow terminals
safe deletion
Safe deletion with confirmation dialog and progress bar
[!]

Safe multi-select deletion

Select what you want gone with precision. Confirm with a clear dialog. Watch the space come back to you in real-time.

  • Space to toggle, Shift+arrows for range
  • Select/deselect all with 'a'
  • Confirmation dialog before any deletion
  • Live progress bar with bytes-freed counter
more capabilities
[vim]

Vim keybindings

hjkl navigation, g/G jump to top/bottom, page up/down. Arrow keys too. Feels like home.

[0]

Zero config

One command, no setup files. Smart defaults target all common JS/TS build outputs. Runs with npx.

[!]

Smart warnings

Detects artifacts in sensitive system locations and flags them before you can accidentally nuke them.

10 built-in themes
reference
[~]
Artifact Types Detected
28 directories scanned by default
node_modules.npm.pnpm-store.next.nuxt.angular.svelte-kit.vite.turbo.nx.parcel-cache.rpt2_cache.esbuild.rollup.cache.cache.eslintcache.stylelintcache.swccoverage.nyc_output.jeststorybook-staticgatsby_cache.docusaurusdeno_cachedistbuild.output
[⌨]
Keybindings
vim-style navigation built in
j / k
navigate up / down
Space
toggle selection
Shift+J/K
range select
a
select / deselect all
s
cycle sort mode
f
type filter
/
path search
x
directory grouping
Tab
toggle detail panel
t
cycle theme
d
delete selected
q
quit
cli options
-d, --directory <path>
Set scan root directory
-E, --exclude <names>
Exclude artifact types by name (comma-separated)
-t, --target <names>
Override default target list (comma-separated)
-V, --verbose
Write debug log to dustoff-debug.log
-v, --version
Show version number
faq
? Is it safe?
Yes. dustoff never deletes anything without explicit confirmation. You select artifacts, review your choices in a confirmation dialog, and only then does deletion begin. Nothing is removed silently.
? Does it delete active node_modules?
No. dustoff targets stale build artifacts — directories left behind by projects you haven't touched in a while. It shows the age of each artifact so you can make informed decisions. Active project dependencies are easy to spot and skip.
? Does it work with monorepos?
Yes. The BFS traversal handles nested project structures naturally. It deduplicates inodes to avoid double-counting hardlinks (common in pnpm workspaces) and detects sensitive locations with warnings.
? What artifact types does it detect?
Over 30 types including node_modules, dist, build, .next, .nuxt, .turbo, .cache, coverage, .parcel-cache, and many more. You can customize the target list with --target or exclude specific types with --exclude.

Stop paying the disk tax

One command. Zero config. Node ≥18. macOS, Linux, Windows.

npx dustoff
$ npm i -g dustoff