new du · Never Underestimate Disk Usage
A fast terminal disk usage analyzer. Scan a folder, browse it, and see what is eating your disk.
- Fast parallel scan on all CPU cores, with a live progress screen (
Esccancels) - Understands filesystems: btrfs subvolumes (like
/home) and ZFS datasets of one pool count as one filesystem, other disks are labeled and skipped (--cross-fsincludes them),/proc,/sysand btrfs snapshots are never double counted - Mounted drives: a drives list (
D) with type and usage of every disk, see how full a drive is before scanning it,Enterscans it on demand, and when you plug something in nudu tells you where it was mounted (gjumps straight there) - Real sizes: both apparent size and space actually used on disk, hard links counted once,
sparse files stay sparse, and on network/FUSE drives that don't report disk use (sshfs, rclone) sizes are estimated and marked
≈ - Shared data (btrfs, XFS, bcachefs): shows how much of a file or folder is also used by snapshots
or reflink copies, and how much deleting it would really free.
xswitches to an exclusive view that sizes everything by what deleting it gives back, and the delete prompt says the same - Sorting by size, name, item count or last change, in either direction
- Filter (
/): type part of a name and the list narrows as you type, with the total size of what matches - Safe delete: always asks first, removes what it can, never enters mounted drives, totals update instantly.
Mark entries with
Space, in as many folders as you like, and delete them together after one review - Details pane with sizes, space saved by compression or sparse files, share of the folder, the biggest items inside a folder and a breakdown by type (video, images, code, archives...)
- Age heat:
acolors every bar by when it last changed (today → years ago) and shows its age,Aswitches to a cold view that only shows data older than a year (or six months), sized by how much old data is inside - Owners: every file is tagged with who it belongs to: a package (
pacman:firefox,dpkg:…), a git repo, a Flatpak app, Steam or a single game, Docker, or an app's cache, config or data folder. System files no package claims show up asunowned.Oranks who uses the most space, and deleting a package's files reminds you to use the package manager instead - Filesystem header showing the filesystem type, its compression setting (like
btrfs zstd:3) and how full it is - Follows your terminal theme: all colors come from your terminal's palette
Static binaries for x86_64 and ARM64 are attached to every release. They run on any Linux distribution.
curl -LO https://github.com/qempexe/nudu/releases/latest/download/nudu-v0.2.0-x86_64-unknown-linux-musl.tar.gz
tar xzf nudu-v0.2.0-x86_64-unknown-linux-musl.tar.gz
sudo install -m 755 nudu-v0.2.0-x86_64-unknown-linux-musl/nudu /usr/local/bin/nuduRequires Rust 1.88 or newer.
git clone https://github.com/qempexe/nudu.git
cd nudu
./install.shThis builds nudu and installs it to /usr/local/bin, so both nudu and sudo nudu work.
Remove it again with ./install.sh --uninstall.
Prefer a user-only install? cargo install --path . puts it in ~/.cargo/bin instead
(sudo won't find it there, but nudu can still restart itself as root, see below).
Some folders belong to root or other users. nudu marks them with ! and keeps going.
Press S to rescan with sudo: nudu restarts itself as root with the same options.
A red root badge in the header shows when it runs with root rights.
nudu # current folder
nudu ~ # your home folder
nudu / --cross-fs # everything, including other mounted filesystems
nudu --no-icons # plain characters if you don't use a Nerd Font
nudu -t 4 # limit scanning to 4 threads
nudu --no-extents # skip the shared-data lookup (faster on btrfs/XFS)
nudu -r # read-only: deleting is turned off| Key | Action |
|---|---|
↑ ↓ / k j |
Move |
PgUp PgDn / Home End |
Jump |
Enter / → / l |
Open folder |
← / h / < |
Back |
/ |
Filter the open folder by name, Enter keeps the filter, Esc clears it |
Enter on a drive |
Scan that mounted drive and open it |
r |
Rescan the open folder (new files, new mounts) |
D |
List all mounted drives, Enter opens one |
g |
Open the drive that was just mounted |
a |
Heat: color bars by age, show age instead of share |
A |
Cold view: only data older than 1 year, again for 6 months, again to turn off |
x |
Exclusive view: sizes only count data not shared with snapshots or copies |
o |
Show owner tags in the list |
O |
Owners ranking: who uses the most space in this folder |
s n c m |
Sort by size, name, item count, last modified (again to reverse) |
Space |
Mark or unmark an entry for deleting (Esc unmarks all) |
d / Del |
Delete the marked entries, or the selected one (asks first, y to confirm) |
S |
Rescan with sudo (when some folders were unreadable) |
? |
Help |
q / Esc |
Quit |
Icons use Nerd Fonts. Use --no-icons if they show up as boxes.
See CHANGELOG.md.
