Best Disk Usage Analyzers

Compare dust, dua, and diskonaut plus pdu, cull and erdtree for finding what fills your disk from the terminal.

Updated

short verdict

Start with dust if you want a one-shot bar-chart view of the biggest directories. Pick dua for parallel scans with an interactive TUI that deletes, or diskonaut if you prefer a treemap. Choose pdu for JSON pipelines and erdtree for gitignore-aware project trees.

A disk usage analyzer answers one question: which directories and files are taking the space. The tools here split into three groups. dust, pdu and erdtree print a tree and exit. dua, diskonaut and cull open an interactive TUI where you can delete. They also differ in how they show size (bars, treemap, or plain tree) and in scripting support such as JSON output.

this page is for

  • Developers who need to find what filled a disk
  • Admins scripting disk reports with JSON output
  • Anyone cleaning up large files from a terminal UI
#1

dust

★ 12.6kRust
details

Prints a bar-chart tree of the largest subdirectories with no sorting or manual drilling needed.

best for

  • Quick one-shot checks of a directory
  • Scripted reports via JSON
  • Filtering by file type or regex

strengths

  • Recurses automatically and shows a terminal-height number of entries with percentage bars
  • Filters: -e/-v regex, -z minimum size, -D/-F dirs or files only, -t group by file type
  • JSON output with -j and persistent defaults in ~/.config/dust/config.toml
  • Installs via Homebrew, Cargo (du-dust) or Snap

weaknesses

  • Output is static; there is no interactive browsing or deletion
  • Many single-letter flags take time to learn
#2

dua

★ 6.4k
details

Scans in parallel and offers an interactive mode where you navigate and delete files with deletion safeguards.

best for

  • Scanning large SSD-backed trees fast
  • Exploring and deleting in one tool
  • Windows, macOS and Unix users

strengths

  • Parallel traversal by default, built on jwalk
  • Interactive TUI with multi-stage deletion protection
  • Runs on Unix-like systems, macOS and Windows
  • Configurable keyboard behavior, such as whether Esc goes to the parent or quits

weaknesses

  • Visualization is a list view, not bars or a treemap
  • No JSON output or regex filtering is documented by the project

Shows disk usage as an interactive treemap, so large blocks stand out, and lets you delete from it.

best for

  • Visual learners who prefer area over lists
  • Finding a few huge folders
  • Cleanup with a running total of freed space

strengths

  • Treemap visualization of files and folders
  • You can navigate while the scan continues in the background
  • Tracks space freed during the session
  • Packaged for Homebrew, DNF, AUR, Nix and Cargo, on Linux, macOS and Windows

weaknesses

  • Indexes file metadata in memory, which matters on very large trees
  • No JSON output or scripting interface documented
#4

pdu

★ 739Rust
details

Parallel tree analyzer with JSON input and output, suited to piping results into other tools.

best for

  • Scripting and piping disk reports
  • Hardlink-aware accounting
  • Comparing speed against similar tools

strengths

  • --json-output and --json-input flags work through Unix pipes
  • Hardlink detection with optional deduplication
  • Progress reporting and adjustable depth and chart size
  • Project publishes benchmarks against dust, dua, ncdu and gdu

weaknesses

  • Ignores reflinks on copy-on-write filesystems
  • Does not follow symbolic links
  • Installation listed only via Pacman and Cargo
#5

erdtree

★ 2.6k
details

Combines du, tree, find and ls in one multi-threaded tool that respects .gitignore by default.

best for

  • Sizing project directories without ignored files
  • Flat du-style or inverted tree output
  • Searching by regex or glob alongside sizes

strengths

  • Reads .gitignore and hidden-file rules by default
  • Measures bytes (logical or physical), blocks, word count or line count
  • Tree, inverted tree and flat du-like layouts, plus a long view with permissions and timestamps
  • TOML config, shell completions, and installs via Homebrew, Cargo or Scoop

weaknesses

  • Hiding ignored files by default can hide what is using space until you change the flags
  • Broader scope than a single-purpose analyzer, so there are more options to learn
#6

cull

★ 167
details

A TUI focused on finding the largest files and removing them, with trash support and a read-only mode.

best for

  • Finding the biggest files across subdirectories
  • Cautious deletion with trash and dry-run
  • macOS users who want Quick Look previews

strengths

  • Largest tab deep-scans all subdirectories for the biggest files
  • Multi-select files or ranges, then move to trash or delete permanently with confirmation
  • Read-only mode and dry-run previews
  • Sorts by size, name or modification date and filters by name or extension

weaknesses

  • Distributed through a custom Homebrew tap, a custom APT repo, or go install
  • No JSON output or non-interactive report documented

How to choose

The deciding factor is usually whether you want a printed report or an interactive session.

  • Fastest answer with no interaction: dust, with bars and automatic recursion.
  • Interactive deletion with safeguards: dua, which has multi-stage deletion protection.
  • Visual overview: diskonaut, which draws a treemap.
  • Scripting and pipes: pdu, with --json-input and --json-output.
  • Biggest files only, with trash support: cull, via its Largest tab and read-only mode.

When not to use these

  • You need to find duplicate files, since none of these tools are documented as doing that.
  • You need a remote or historical view of disk usage over time, since these tools scan the local filesystem on demand.

FAQ

Which disk usage analyzer is best as a default?
dust is the simplest default. It recurses automatically and draws percentage bars, so one command shows the biggest subdirectories.
Which tools let me delete files?
dua, diskonaut and cull all delete from their interactive interfaces. cull can also move files to trash and has a read-only mode.
Which tools produce JSON?
dust writes JSON with -j. pdu writes it with --json-output and reads it with --json-input.
Does any tool respect .gitignore?
erdtree does by default, along with hidden-file rules. That suits project directories but can hide ignored files that take up space.