A disk usage browser for the terminal.
Browse, sort and delete while the scan is still running, see what your space is made of (caches, build output, emulators, containers), and get a list of what is safe to remove.
Browse while it scans
The list fills in and re-sorts as the scan runs. Nothing to wait for.

$ dfdu ~Fast
Parallel scanning tuned to the storage device.
As fast as or faster than gdu and dua in our benchmarks.

Opens last time's scan at once
Scans that took 3 s or more are cached, so the next dfdu PATH opens at once and refreshes in the background.
On macOS, Windows and btrfs only the changed directories are read again.
cached 3 h ago, refreshing
$ dfdu ~Cleanup view
Recognises caches, build folders, SDKs and old installers, says how safe each is to delete and how much it frees. Rules are extendable.
✓ Safe to delete
↻ Regenerable
? Review first
⚒ Manual
⊘ Protected

$ dfdu report ~/devTreemap, tree, duplicates, largest
Treemap, tree mode, duplicates and largest files, one key away from the list.

History
Every scan is recorded, so you can ask what grew since last week.
+1.2 GiB since 2026-10-18

$ dfdu diff ~ --since 7dRemote
Browse and delete on another machine over ssh.
dfdu must be installed on the other host.

$ dfdu --remote server /srvScriptable
JSON and NDJSON output, a CI mode that fails above a size limit, and ncdu export import.
Exit 4 when the report is over the limit.

$ dfdu report ~/dev --format json --fail-above 20GiBSafe by default
Deletes go to the Trash.
Permanent deletes ask you to type delete.
--read-only removes the delete keys.

$ dfdu --read-only ~dfdu scans a directory once and shows it as a list, a treemap, a cleanup view, duplicates or the largest files. It is written in Rust and runs on macOS, Linux and Windows.
Homebrew
Installs the binary, the man page and shell completions.
$ brew install jordond/tap/dfducargo binstall
Downloads the release binary instead of compiling.
$ cargo binstall --git https://github.com/jordond/dfdu dfduNix
Runs dfdu from the flake without installing it.
$ nix run github:jordond/dfduShell script
Installs into ~/.cargo/bin.
$ curl -LsSf https://github.com/jordond/dfdu/releases/latest/download/dfdu-installer.sh | shPowerShell
Installs into %USERPROFILE%\.cargo\bin.
$ powershell -ExecutionPolicy Bypass -c "irm https://github.com/jordond/dfdu/releases/latest/download/dfdu-installer.ps1 | iex"Release binaries
macOS (arm64, x86_64), Linux musl (arm64, x86_64), Windows x86_64.
With man pages and shell completions.
github.com/jordond/dfdu/releases
cargo install
Compiles from the repository with the locked dependencies.
$ cargo install --locked --git https://github.com/jordond/dfdu dfduBinaries for macOS, Linux (static) and Windows are on the releases page, with man pages and shell completions.
print a summary

$ dfdu scan ~usage by file type

$ dfdu scan ~ --by-typedisks and free space, like df -h

$ dfdu disksduplicate files

$ dfdu dupes ~ --min-size 10MiBwhat the cleanup rules found

$ dfdu report ~/devCI: exit 4 over the limit

$ dfdu report ~/dev --format json --fail-above 20GiBdry run of the recommended deletes
$ dfdu clean ~/devmove them to the Trash
$ dfdu clean ~/dev --yeswhat grew in the last week

$ dfdu diff ~ --since 7dsave a scan

$ dfdu export ~ --snapshot -o home.snapbrowse a saved scan or an ncdu export

$ dfdu -f home.snapclean changes nothing without --yes. JSON output is versioned; the schemas are in schema/. dfdu --help lists every option and exit code.
Interactive browser
Has it: dfdu, ncdu, gdu, dua
Doesn't: Dust
Parallel scan
Has it: dfdu, ncdu, gdu, dua, Dust
Every tool here has it.
Treemap
Has it: dfdu
Doesn't: ncdu, gdu, dua, Dust
Cleanup recommendations
Has it: dfdu
Doesn't: ncdu, gdu, dua, Dust
Duplicate files
Has it: dfdu
Doesn't: ncdu, gdu, dua, Dust
Scan history and diffs
Has it: dfdu
Doesn't: ncdu, gdu, dua, Dust
Reads ncdu exports
Has it: dfdu, ncdu, gdu
Doesn't: dua, Dust
Keeping the whole tree in memory costs dfdu about 85 bytes per entry (850 MiB for 10 million files). If you only want a total, dua aggregate or du -s use a few megabytes.