If you have ever typed du -sh ~/Library/* and stared at a wall of unsorted kilobyte counts, you already know why alternatives exist. dust vs du vs ncdu is the comparison that keeps coming up in Mac developer circles because each tool solves the same problem — finding out where your disk space went — in a meaningfully different way. This post gives you an honest side-by-side so you can reach for the right one without trial and error.
The contenders
du — the built-in
du ships with every macOS install (currently the BSD variant from Apple). It requires no installation, runs immediately, and is available in any script or CI environment without setup. The trade-off is that its output is unsorted, uses 512-byte blocks by default unless you add -h, and produces no color or tree structure. A typical invocation to find large first-level directories looks like this:
du -d 1 -h ~/Library | sort -rh | head -20
That pipeline — du piped through sort -rh — is something you will type or alias constantly, because du itself does not sort. On a MacBook Pro with a large Library folder the command may take 10–30 seconds on a cold run because it performs a single-threaded walk. The output has no color; entries are just sizes and paths.
Useful flags on macOS:
-h— human-readable sizes (KB, MB, GB)-d N— limit depth to N levels-s— summarize a single path (equivalent to-d 0)-x— stay on one filesystem (skips mounted volumes)-c— print a grand total at the end
When it is the right choice: scripts, SSH sessions on remote servers, one-off quick checks where you already know roughly where to look.
dust — du rewritten in Rust
dust (version 1.2.4 as of early 2026) is a Rust-based reimagining of du by Andy Boot. Install it with Homebrew:
brew install dust
Run it the same way you would run du:
dust ~/Library
The key differences from du:
- Sorted output by default. Largest directories appear at the top — no
| sort -rhneeded. - Bar chart in the terminal. Each row includes a proportional bar so you immediately see which folder dominates.
- Color output. Sizes and bars are colored; different levels of the hierarchy get different shades.
- Tree view. Subdirectories are shown indented under their parent so you see containment at a glance.
- Parallel scanning. dust uses multiple threads, which makes it noticeably faster than
duon large directory trees.
Useful flags:
-d N— depth limit-n N— show only the top N results-x— stay on one filesystem--no-colors— plain output for scripts-r— reverse sort (smallest first)
One honest limitation: dust's tree output can feel cluttered on very wide directory trees. It also truncates extremely long paths to fit the terminal width, which occasionally hides the exact path you want to copy.
When it is the right choice: interactive exploration in a local terminal when you want immediate visual clarity without launching a full TUI.
ncdu — the interactive TUI
ncdu (NCurses Disk Usage, version 2.9.2 via Homebrew in 2026) is a full-screen terminal application. It scans a directory tree, then lets you navigate interactively with arrow keys and delete files from inside the interface. Install it:
brew install ncdu
Launch it on your home Library:
ncdu ~/Library
ncdu first scans the entire tree (showing a progress indicator), then drops you into a sorted, navigable list. Press Enter to descend into a folder, q to quit, and — importantly — d to delete the highlighted item. That last point deserves a warning: deletion inside ncdu bypasses the Trash and is permanent. There is a confirmation prompt, but the file does not go to ~/.Trash. Be deliberate.
ncdu 2.x is also written in Zig and is significantly faster than the original C-based ncdu 1.x. Parallel scanning was added in 2.5 but is opt-in (--parallel).
Useful keys inside ncdu:
n— sort by names— sort by size (default)d— delete highlighted item (permanent, not Trash)i— show item infoe— toggle hidden files?— help screen
When it is the right choice: when you want to explore interactively and iteratively delete items in a single session, or when you are on a remote server over SSH where a GUI is unavailable.
Head-to-head comparison
| Feature | du (built-in) | dust 1.2.4 | ncdu 2.9.2 | Crumb (GUI) |
|---|---|---|---|---|
| Installation | None (built-in) | brew install dust |
brew install ncdu |
Download Crumb |
| Sorted output | No (pipe to sort) | Yes, by default | Yes, by default | Yes |
| Color output | No | Yes | Limited (ncurses) | Yes (native UI) |
| Visual tree / map | No | Tree with bars | Interactive tree | Disk map + treemap |
| Interactive navigation | No | No | Yes | Yes |
| Delete files | No | No | Yes (permanent, no Trash) | Yes (moves to Trash) |
| Script-friendly | Yes | Yes (--no-colors) |
Limited | No |
| Speed on large trees | Slow (single-threaded) | Fast (multi-threaded) | Fast (Zig, opt-in parallel) | Fast (native Swift) |
| Works over SSH | Yes | Yes | Yes | No |
| System Data / caches cleanup | No | No | No | Yes (one-click) |
| App leftover finder | No | No | No | Yes |
| Explains "safe to delete?" | No | No | No | Yes (AI assistant) |
How to install and run each tool
du — no setup needed
- Open Terminal (or iTerm2).
- Run a quick summary of your Downloads folder:
du -sh ~/Downloads - List the top-level items in your Library sorted by size:
du -d 1 -h ~/Library | sort -rh | head -20 - Restrict to a single volume to avoid crossing mount points:
du -d 1 -h -x / | sort -rh | head -20
dust — quick visual scan
- Install once:
brew install dust - Scan your Caches folder and see the top offenders immediately:
dust ~/Library/Caches - Limit to the 10 largest items, two levels deep:
dust -n 10 -d 2 ~/Library - Use
--no-colorsif piping into another tool or logging output.
ncdu — interactive exploration
- Install once:
brew install ncdu - Launch an interactive scan of your user Library:
ncdu ~/Library - Wait for the scan to complete, then navigate with arrow keys.
- Press
dto delete a highlighted folder. This is permanent — the file does not go to Trash. Confirm you know what the folder is before pressingd. - Press
qto quit.
What each tool cannot tell you
All three CLI tools share a fundamental limitation: they show you the size of files, but they cannot tell you whether any given file or folder is safe to remove. A 2 GB folder in ~/Library/Application Support might be critical app data or long-abandoned cruft from a deleted app — du, dust, and ncdu cannot distinguish them.
They also do not surface macOS-specific categories like System Data, purgeable space, or app leftover files scattered across ~/Library/Preferences, ~/Library/Application Support, and /Library/LaunchAgents. If you find a suspicious path and want to understand it before deleting, you need either careful research or a tool that has that context built in.
That is the gap that a native GUI tool like Crumb fills for users who want answers without the manual investigation. Its "Is this safe to delete?" assistant explains any folder in plain language, and its Uninstall tab finds app leftovers automatically. For everyday CLI use, though, the three tools above are excellent and fast.
The decision in plain terms
- Use du when you are in a script, on a remote server, or need zero dependencies. Add
| sort -rh | head -20to make it useful. - Use dust when you are in a local terminal and want a fast, sorted, color tree with no further keystrokes. It is the best drop-in upgrade to
dufor interactive use. - Use ncdu when you want to explore interactively and delete items in the same session, especially over SSH. Be deliberate with
d— deletions are permanent. - Use a GUI when you want to clean System Data, find app leftovers, or understand what a path does before you remove anything.
The three CLI tools are complementary, not competing. Many developers keep all three installed and reach for different ones depending on context. The Homebrew footprint is small, and switching between them takes a second — so there is no reason to commit to just one.