10 stable releases
Uses new Rust 2024
| 1.3.9 | May 1, 2026 |
|---|---|
| 1.3.8 | Apr 11, 2026 |
| 1.3.7 | Apr 3, 2026 |
| 1.3.2 | Apr 2, 2026 |
| 1.2.4 | Apr 2, 2026 |
#2028 in Command line utilities
210KB
4.5K
SLoC
Dust
du + rust = dust. Like du but more intuitive.
Why
Because I want an easy way to see where my disk is being used.
Demo

Study the above picture.
- We see
targethas 1.8G target/debugis the same size astarget- so we know nearly all the disk usage of the 1.8G is in this foldertarget/debug/depsthis is 1.2G - Note the bar jumps down to 70% to indicate that most disk usage is here but not all.target/debug/deps/dust-e78c9f87a17f24f3- This is the largest file in this folder, but it is only 46M - Note the bar jumps down to 3% to indicate the file is small.
From here we can conclude:
target/debug/depstakes the majority of the space intargetand thattarget/debug/depshas a large number of relatively small files.
Install
Cargo 
This fork is published only on crates.io.
Cargo
cargo install du-dust-tokens
For upstream package-manager channels (Homebrew/Snap/etc), see bootandy/dust.
Overview
Dust is meant to give you an instant overview of which directories are using disk space without requiring sort or head. Dust will print a maximum of one 'Did not have permissions message'.
Dust will list a slightly-less-than-the-terminal-height number of the biggest subdirectories or files and will smartly recurse down the tree to find the larger ones. There is no need for a '-d' flag or a '-h' flag. The largest subdirectories will be colored.
The different colors on the bars: These represent the combined tree hierarchy & disk usage. The shades of grey are used to indicate which parent folder a subfolder belongs to. For instance, look at the above screenshot. .steam is a folder taking 44% of the space. From the .steam bar is a light grey line that goes up. All these folders are inside .steam so if you delete .steam all that stuff will be gone too.
If you are new to the tool I recommend to try tweaking the -n parameter. dust -n 10, dust -n 50.
Usage
Usage: dust
Usage: dust <dir>
Usage: dust <dir> <another_dir> <and_more>
Usage: dust -p (full-path - Show fullpath of the subdirectories)
Usage: dust -s (apparent-size - shows the length of the file as opposed to the amount of disk space it uses)
Usage: dust -n 30 (Shows 30 directories instead of the default [default is terminal height])
Usage: dust -d 3 (Shows 3 levels of subdirectories)
Usage: dust -D (Show only directories (eg dust -D))
Usage: dust -F (Show only files - finds your largest files)
Usage: dust -r (reverse order of output)
Usage: dust -o si/b/kb/kib/mb/mib/gb/gib (si - prints sizes in powers of 1000. Others print size in that format).
Usage: dust -X ignore (ignore all files and directories with the name 'ignore')
Usage: dust -x (Only show directories on the same filesystem)
Usage: dust -b (Do not show percentages or draw ASCII bars)
Usage: dust -B (--bars-on-right - Percent bars moved to right side of screen)
Usage: dust -i (Do not show hidden files)
Usage: dust -c (No colors [monochrome])
Usage: dust -C (Force colors)
Usage: dust -f (Count files instead of diskspace [Counts by inode, to include duplicate inodes use dust -f -s])
Usage: dust --tokens (Count tokens in plain-text files using tiktoken, default model: gpt-5)
Usage: dust --tokens . (Token mode respects .gitignore/.ignore/.dustignore, skips .git, and ignores lockfiles/editor/minified/build/AI-config categories by default)
Usage: dust --tokens --token-model gpt-5 (Choose the tokenizer model used for token counting)
Usage: dust --tokens --ignore-pattern "*.log" (Add gitignore-style ignore patterns, repeatable)
Usage: dust --tokens --tokens-no-dustignore (Do not read .dustignore rules)
Usage: dust --tokens --tokens-debug-ignored (Print ignored paths and matching token-mode ignore rules)
Usage: dust --tokens --tokens-no-ignore (Disable token-mode ignore filtering, including .git exclusion)
Usage: dust --tokens --tokens-dry-run (Perform token-mode ignore/debug traversal without tokenizing file contents)
Usage: dust --tokens --tokens-list-files (List files that would be tokenized in --tokens mode)
Usage: dust --tokens --tokens-list-files-ignored (List files ignored from token counting in --tokens mode)
Usage: dust --tokens --tokens-include-lockfiles (Un-ignore lockfiles)
Usage: dust --tokens --tokens-include-editor (Un-ignore editor files/directories such as .idea)
Usage: dust --tokens --tokens-include-minified (Un-ignore minified files and source maps)
Usage: dust --tokens --tokens-include-build (Un-ignore build/dependency directories)
Usage: dust --tokens --tokens-include-ai-agent-config (Un-ignore AI agent config directories such as .claude, .codex, .gemini, .vscode)
Usage: dust -q (Generate interactive treemap HTML report; opens by default on TTY and writes to temp file by default)
Usage: dust --plot --plot-output report.html (Write treemap report to explicit path)
Usage: dust --plot --plot-no-open (Generate report without opening browser)
Usage: dust -t (Group by filetype)
Usage: dust -z 10M (min-size, Only include files larger than 10M)
Usage: dust -e regex (Only include files matching this regex (eg dust -e "\.png$" would match png files))
Usage: dust -v regex (Exclude files matching this regex (eg dust -v "\.png$" would ignore png files))
Usage: dust -L (dereference-links - Treat sym links as directories and go into them)
Usage: dust -P (Disable the progress indicator)
Usage: dust -R (For screen readers. Removes bars/symbols. Adds new column: depth level. (May want to use -p for full path too))
Usage: dust -S (Custom Stack size - Use if you see: 'fatal runtime error: stack overflow' (default allocation: low memory=1048576, high memory=1073741824)"),
Usage: dust --skip-total (No total row will be displayed)
Usage: dust -z 40000/30MB/20kib (Exclude output files/directories below size 40000 bytes / 30MB / 20KiB)
Usage: dust -j (Prints JSON representation of directories, try: dust -j | jq)
Usage: dust --files0-from=FILE (Read NUL-terminated file paths from FILE; if FILE is '-', read from stdin)
Usage: dust --files-from=FILE (Read newline-terminated file paths from FILE; if FILE is '-', read from stdin)
Usage: dust --collapse=node-modules will keep the node-modules folder collapsed in display instead of recursively opening it
Config file
Dust has a config file where the above options can be set.
Either: ~/.config/dust/config.toml or ~/.dust.toml
$ cat ~/.config/dust/config.toml
reverse=true
Alternatives
- NCDU
- dutree
- dua
- pdu
- dirstat-rs
du -d 1 -h | sort -h
Why to use Dust over the Alternatives
Dust simply Does The Right Thing when handling lots of small files & directories. Dust keeps the output simple by only showing large entries.
Tools like ncdu & baobab, give you a view of directory sizes but you have no idea where the largest files are. For example directory A could have a size larger than directory B, but in fact the largest file is in B and not A. Finding this out via these other tools is not trivial whereas Dust will show the large file clearly in the tree hierarchy
Dust will not count hard links multiple times (unless you want to -s).
Typing dust -n 90 will show you your 90 largest entries. -n is not quite like head -n or tail -n, dust is intelligent and chooses the largest entries
Dependencies
~43MB
~524K SLoC