A lightning-fast disk space analyzer with a treemap. Reads the NTFS Master File Table directly on Windows for near-instant scans of millions of files; falls back to a portable filesystem walker on Linux and macOS. Ships both a polished TUI and a browser-based UI.
Walking a filesystem with the OS file APIs is slow because every directory descent is a syscall. WizTree's trick on NTFS is to bypass the OS entirely and read the Master File Table — a single contiguous structure that lists every file and directory on the volume — straight off the disk. A 4 TB drive with a million files scans in seconds rather than minutes.
atlas.doomwalker does the same on Windows. On platforms without an MFT
(Linux, macOS, FAT/exFAT volumes, network shares) it falls back to a
cross-platform walker so the rest of the tool — the treemap, the navigation,
the web UI — still works.
Grab the binary for your platform from the releases page and put it on
your PATH. Six binaries are published per release: windows-amd64,
windows-arm64, linux-amd64, linux-arm64, darwin-amd64, darwin-arm64.
git clone https://github.com/fezcode/atlas.doomwalker
cd atlas.doomwalker
go build -o atlas.doomwalker .Or with gobake to produce all six
platform binaries at once:
gobake buildatlas.doomwalker [flags] [drive|path]
.\atlas.doomwalker.exe # scan C: with the MFT scanner (Windows)
.\atlas.doomwalker.exe D: # scan D:
.\atlas.doomwalker.exe --walker C: # skip MFT, use the portable walker./atlas.doomwalker /home # walk /home (Linux/macOS)
./atlas.doomwalker --walker ~/Downloadsatlas.doomwalker --serve # binds 127.0.0.1:7878 by default
atlas.doomwalker --serve --addr :8080 # bind a different addressThe server prints a URL; open it. The page is a single-page app that lazily fetches subtrees, so even a 50 GB folder with hundreds of thousands of entries stays responsive.
| Flag | Meaning |
|---|---|
--serve |
Run the browser UI instead of the TUI |
--addr <host:port> |
Bind address for --serve (default 127.0.0.1:7878) |
--walker |
Force the cross-platform walker (skip MFT) |
-v, --version |
Print version |
-h, --help |
Print help |
| Key | Action |
|---|---|
↑ / k |
Move selection up |
↓ / j |
Move selection down |
Home / g |
First item |
End / G |
Last item |
PgUp / PgDn |
Jump 10 |
Enter / → / l |
Drill into selected directory |
Backspace / ← / h |
Go up |
s |
Cycle sort: size → name → item count |
. |
Toggle hidden / $-prefixed entries |
o |
Open selection in Explorer |
d |
Delete selection (with confirmation) |
q / Ctrl+C |
Quit |
| Key | Action |
|---|---|
| Click tile | Drill into directory |
| Click crumb | Jump to that level |
Esc / ⌫ |
Up one level |
1–9 |
Open the Nth largest item |
The MFT scanner reads the raw NTFS volume, which on Windows requires
Administrator privileges. If you launch without elevation, the program
re-launches itself elevated through UAC. Pass --walker if you want to skip
the elevation prompt and use the portable scanner instead.
The walker needs no special privileges and silently skips paths it can't read.
┌────────────────────┐
│ main.go │
│ (flag parsing, │
│ UAC, dispatch) │
└─────────┬──────────┘
│
┌─────────────┴─────────────┐
│ │
Windows + admin anything else
│ │
┌─────────▼─────────┐ ┌─────────▼─────────┐
│ internal/mft │ │ internal/walker │
│ raw \\.\C: │ │ filepath.WalkDir │
│ parses MFT │ │ statx fallback │
│ records │ │ │
└─────────┬─────────┘ └─────────┬─────────┘
│ │
└─────────────┬─────────────┘
│
*mft.FileNode tree
│
┌─────────────┴─────────────┐
│ │
┌─────────▼─────────┐ ┌─────────▼─────────┐
│ internal/ui │ │ internal/web │
│ Bubble Tea TUI │ │ http.Server + │
│ squarified │ │ embedded SPA │
│ treemap │ │ (SVG treemap) │
└───────────────────┘ └───────────────────┘
The squarified treemap algorithm (Bruls, Huijsen & van Wijk, 2000) is implemented in both Go (for the TUI) and JavaScript (for the browser UI), so layouts are visually consistent across the two front-ends.
atlas.doomwalker/
├── main.go # entry, dispatch
├── main_windows.go # UAC elevation
├── main_other.go # POSIX stubs
├── Recipe.go # gobake build tasks
├── internal/
│ ├── mft/ # NTFS MFT scanner (Windows)
│ ├── walker/ # cross-platform filepath.WalkDir scanner
│ ├── treemap/ # squarified algorithm (Go)
│ ├── ui/ # Bubble Tea TUI
│ └── web/ # HTTP server + embedded SPA
│ └── static/ # index.html, app.css, app.js
└── build/ # output from `gobake build`
charmbracelet/bubbleteaandlipglossfor the TUI.t9t/gomftfor the Go MFT record parser.- WizTree for proving how fast a disk analyzer can be.
- The squarified treemap paper by Mark Bruls, Kees Huijsen and Jarke J. van Wijk.
MIT — see LICENSE.
