duf: df for Humans, Without the 16-Column Table Squint

df shows you everything including the filesystems you’ll never care about, in an order that makes no sense. duf shows you the ones that matter, sorted by the thing you were asking about.

duf (Disk Usage/Free Utility) is a Go rewrite of the disk-free check that takes the same kernel data df reads and renders it as an aligned, colorized table: device, mountpoint, used/total, and a usage bar, sorted sensibly by default. It hides pseudo-filesystems (tmpfs noise, snap loops, Docker overlays) unless you ask for them, which alone removes 80% of why df output is unreadable on a modern Linux box. It handles the two things people actually want to know — "how full is this disk" and "where is this mount" — with output a human can scan at a glance, and it exposes the same data as JSON when you’re scripting. It’s a single static binary, starts instantly, and has no daemon or config to maintain.

install

macOS
# macOS
brew install duf
Debian/Ubuntu
# Debian/Ubuntu
sudo apt install duf
Fedora
# Fedora
sudo dnf install duf
Arch
# Arch
sudo pacman -S duf

examples

# The whole point: readable table of real filesystems
duf
# Everything including the pseudo-filesystems df shows you by default
duf --all
# Only local devices — skip network mounts when the NFS server is down
duf --only local
# Filter by mount point or device with substring matching
duf --mount-point /home
duf --only local --output mountpoint,used,avail
# JSON for scripts — same data, no table rendering
duf --json | jq '.[] | select(.mount_point == "/") | .usage.percent'
# Theme and width tweaks for terminals that need it
duf --theme light --output mountpoint,size,usage

pro tip

The --output flag is the sleeper feature: duf --output mountpoint,used,avail,usage gives you exactly the four columns you want, in the order you want, with the bar chart still attached — that’s a better daily driver than the default layout for most people.

honest limits

duf is a viewer, not a cleaner — it shows you usage, it does not find what’s eating space (that’s du, ncdu, or dust territory). Its JSON output is stable enough for scripts but not a contract; don’t build a dashboard on it without a fallback. It hides pseudo-filesystems by default, which is a feature until you actually need to check tmpfs. And on exotic setups (autofs, btrfs subvolumes with quotas) the numbers it reports are the same df numbers you’d get anyway — it can’t surface information the kernel doesn’t give it.