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.