If you already live in a terminal, installing a GUI app to answer "what's taking up space" can feel like overkill for a question du was built to answer in 1979. Four command-line tools cover almost every case: the built-in du, and three newer Homebrew-installable options — ncdu, dust, and gdu — each trading off speed, readability, and interactivity slightly differently.
du: the one that's always there
du (disk usage) ships with every Mac and needs no installation. The basic invocation:
du -sh ~/Downloads
-s summarises (one total instead of every subfolder), -h makes the output human-readable (4.2G instead of a byte count). Drop -s to see a breakdown per subfolder:
du -h -d 1 ~/Library
-d 1 limits depth to one level, which keeps the output readable on a folder with thousands of nested items. Without a depth limit, du will recurse all the way down and print a line for every single directory, which is rarely what you want interactively.
du's honest limitation is that it's not interactive — you get a static printout, and to explore further you have to re-run the command with a new path. It also doesn't sort by default, so for a truly unknown problem you'll want to pipe it through sort:
du -h -d 1 ~/Library | sort -rh | head -20
That gives you the twenty largest items at one level, largest first — the terminal equivalent of the first ten seconds of using a visual map.
ncdu: interactive du in a terminal UI
ncdu (NCurses Disk Usage) wraps the same underlying scan in an interactive terminal interface: arrow keys to navigate into folders, a bar-chart-style proportion indicator per row, and a delete key bound to actual deletion — which is worth knowing before you press it by habit, since ncdu's delete is not a Trash operation.
Install and run:
brew install ncdu
ncdu ~
ncdu is the closest command-line equivalent to a visual map tool: you get proportional sizing and drill-down navigation without leaving the terminal. It's slower than du alone on a first pass because it builds a full navigable tree rather than just printing totals, but for exploratory "where did it go" sessions, the interactivity usually pays for the extra time.
dust: du with sorted, colour-coded output by default
dust (note: the Homebrew package is dust, but the binary is called dust after installation via brew install dust — check for name collisions with other tools if you have aliases set) prints a tree view with proportional bar indicators inline, sorted largest-first, without needing any additional flags or piping through sort.
brew install dust
dust ~/Library
Its main advantage over raw du is that sensible defaults — sorted output, a depth limit, visual bars — are built in rather than requiring you to remember flag combinations. It's not interactive the way ncdu is; it prints once and exits, which suits scripting and quick checks better than deep exploration.
gdu: built for speed on very large trees
gdu is written in Go and optimised specifically for scan speed on large filesystems, including running well against APFS and even reading du-style information out of a mounted disk image. It offers both an interactive terminal mode (similar to ncdu) and a non-interactive mode for scripting.
brew install gdu
gdu ~
If your primary frustration with other tools has been scan time on a very large or very deep directory tree, gdu is the one built to address that directly.
Comparing the four
| Tool | Interactive | Default sort | Notable trait |
|---|---|---|---|
du |
No | No (needs piping) | Always present, no install needed |
ncdu |
Yes | Yes, by size | Closest to a visual map, in-terminal delete |
dust |
No | Yes, by size | Sensible defaults with zero flags |
gdu |
Yes | Yes, by size | Built for speed on large trees |
When the terminal beats a GUI
A CLI tool wins when you're already at a terminal prompt and don't want to break flow to open another app, when you're working over SSH on a Mac with no display attached, or when you want to script a recurring check — a cron job or shell alias that flags when a specific folder crosses a size threshold, for instance. It also wins for precision: piping du output through sort, grep, or awk lets you answer very specific questions ("show me every folder over 5GB modified in the last week") that a GUI tool may not expose as a filter option at all.
When a GUI beats the terminal
A GUI wins when the question is genuinely "I have no idea where the space went," because a proportional visual map surfaces the answer through pattern recognition faster than reading rows of text, even with ncdu's bars. It also wins for anyone who doesn't use a terminal regularly — there's no reason to learn keyboard navigation for a task you'll do a few times a year, when a graphical map answers the same question with a mouse.
It's also worth noting that most CLI tools, ncdu included, delete directly rather than moving to Trash. That's a meaningfully higher-risk action than what a well-built GUI cleanup tool offers, and it's worth being deliberate about which mode you're in before you press a delete key you use every day for other things.
Where VolumeLens fits
VolumeLens exists for the moments a CLI tool doesn't serve well: when you want the proportional, drill-down view of a GUI, but with the same honesty about hard links, permission failures, and cleanup safety that you'd expect from a well-built terminal tool. It's free to scan, browse, and search, has no network code, and its only cleanup action is Move to Trash after a review — a deliberately higher floor than a bare ncdu delete key. Have a look at the features page or download it if you want the visual pass to sit alongside your terminal workflow rather than replace it.