Prior Art
After building my initial prototype, I went looking to see what else existed in this space. I discovered there's a whole ecosystem of modern disk usage tools written in Rust, each with their own take on the problem. I ended up continuing with my own tool because I wanted to explore the specific question of .gitignore-aware visualization. But for general disk usage analysis, these mature tools are likely better choices. Here are the main tools I found, along with what their documentation emphasizes as key features:
Table of Contents
Command Line Tools
GUI Tools
- spaceman
- GrandPerspective (macOS)
- WinDirStat (Windows)
- Disk Inventory X (macOS)
- Disk Map: Visualize Disk Usage
- SpaceSniffer
- Disk Space Analyzer: Inspector
- TreeSize - Disk Usage
- WhatSize
Integration Tools
dirstat-rs
https://github.com/scullionw/dirstat-rs
This one leads with performance claims, which are quite impressive if accurate:
- 2X faster than du
- 4X faster than ncdu, dutree, dua, du-dust
- 6X faster than windirstat
💡 What I Learned
What caught my eye was their terminal UI design - it was my favorite way to show relative sizes in a list view. I like the color coding and ~10 characters for the histogram over other tools which use as much width as they can for the histogram.
dua-cli
https://github.com/Byron/dua-cli
This tool focuses on interactivity and user experience:
- Interactive TUI with real-time updates
- Parallel directory traversal
- Support for marking files/directories for deletion
💡 What I Learned
Reading their docs made me realize how basic my own deletion workflow was - I was just running duh
and then manually typing rm
commands in another terminal.
dust
https://github.com/bootandy/dust
Dust takes a different approach, focusing on improving du's output format:
- Tree-like output with visual indicators
- Smart terminal width handling
The fact that they explicitly call out terminal width handling hints at how much complexity can hide in seemingly simple CLI tools.
ncdu
This is the classic in the space. While newer tools tend to lead with performance or visualization features, ncdu emphasizes:
- Memory efficiency
- File deletion capabilities
- Rock solid stability
- Works everywhere
Their focus on stability and universal compatibility provides an interesting contrast to the newer Rust tools (including mine) that tend to prioritize performance and visual design.
dutree
https://github.com/nachoparker/dutree
https://web.archive.org/web/20190205165745/https://ownyourbits.com/2018/03/25/analyze-disk-usage-with-dutree/
dutree tries to split the difference between traditional and modern approaches:
- Colored output using LS_COLORS
- File system tree display
- File/directory aggregation
- Directory comparison capabilities
pdu (parallel-disk-usage)
https://github.com/KSXGitHub/parallel-disk-usage
What's interesting about pdu is that it's the only tool I found that publishes benchmark comparisons. While other tools make performance claims, pdu backs them up with numbers.
GUI Applications
spaceman
https://github.com/salihgerdan/spaceman
- Fast scan and display, with the power of Rust, and gtk4 gpu rendering capabilities
- Uses the jwalk library as dua-cli does, enabling multi-threaded scans
- Live display of scan results, no need to wait for the scan to complete
- Linux-first, but cross-platform
- Advantage tree map progressively loads
GrandPerspective (macOS)
https://grandperspectiv.sourceforge.net/
- Beautiful treemap visualizations
- Real-time updates
- File filtering and focusing
- Advantage: Polished UI, great performance
WinDirStat (Windows)
- Treemap visualization
- File type analysis
- Built-in cleanup tools
- Advantage: Deep Windows integration
- Missing: Cross-platform support
Disk Inventory X (macOS)
- Similar to WinDirStat for macOS
- Treemap visualization
- File type statistics
- Advantage: Native macOS experience
- Missing: Cross-platform support
Disk Map: Visualize Disk Usage
https://fiplab.com/apps/disk-map-for-mac https://apps.apple.com/us/app/disk-map-visualize-disk-usage/id715464874?mt=12
SpaceSniffer
http://www.uderzo.it/main_products/space_sniffer/
Very interesting tagging idea. I'd quite like to mark some directories as won't fix, and then ignore them from future analysis.
If you want to keep track of examined files you can tag them. Four colors are available. Just hover the mouse on a file and press CTRL+1 to tag it red. There are keys also for yellow, green and blue tagging. Use them as you wish. You can also filter on tags (example: :red will show only red tagges files, :all will show all tagged files and so on). You can also exclude tagged files (example: |:red will exclude all red tagged files)
Disk Space Analyzer: Inspector
https://apps.apple.com/us/app/disk-space-analyzer-inspector/id446243721
- starburst visualization
- list largest files
- list largest directories
- Progress bar during the scanning process
- Navigating folders during the real-time scan
- Quick Look for the scanned items
- The Show in Finder option
- The list of 8 biggest items
- Outline view for navigating files
- All drives support
TreeSize - Disk Usage
https://apps.apple.com/gb/app/treesize-disk-usage/id774815014
- color and group by mime type: audio, video, picture, document, archive, other
- Histogram list visualization
- Starburst visualization
- progressively loads visualization while scanning
- order by size, name or date.
- You can check the content of file by Quick look panel.
- You can see any file or folder in Finder by one click.
- You can open any file with proper application by one click.
- Added 'Open with TreeSize' in Service Menu.
WhatSize
- The app uses the latest macOS technologies to stay up to date with any changes without having to re-scan everything.
Integration Tools
git-sizer
https://github.com/github/git-sizer
- Analyzes Git repository characteristics
- Identifies outsized objects and history
- Advantage: Deep Git integration
- Missing: General disk usage analysis, visualization