Fast, beautiful disk space analysis for Linux, macOS, and Windows. One standalone ~7 MB binary that opens a true native window — no Electron, no webview, no runtime dependencies. A fully parallel Rust scanner, three visualizations (cushion treemap + heatmap grid + radial rings), light & dark themes, and an optional --web mode that serves the same dashboard on localhost.
khoji (खोजी) — seeker. Every byte, accounted for.
Why
The great treemap disk analyzers were an inspiration — but they were Windows-only, single-threaded, and never made the jump. Diskhoji is not a port or a clone of any of them: it's a ground-up rebuild in Rust, designed for how disks (and screens) work today.
What stands Diskhoji apart
- One standalone binary, truly native. The executable is the app: scanner, treemap engine, and a real native window (egui) in a single ~7 MB file. No installer, no Electron's 200 MB, no webview library. Copy it to any machine and run it.
- Genuinely fast. The scanner is work-stealing parallel across every core — measured at 1.85 million files / 681 GiB catalogued in ~2.7 s cold, ~0.4–0.7 s warm (≈690k files/s cold, 3–4.5M files/s warm). Rescans are painless, so you actually do them.
- The heavy lifting stays native. The squarified treemap layout is computed in Rust in ~15 ms for a 2-million-node tree; the UI only paints pre-computed rectangles. Million-file folders never freeze the UI.
- Three readings of the same disk.
- Treemap — cushion-shaded, area = size: instantly shows where the bulk is.
- Heatmap — a contributions-style grid: every item gets an equal cell, color = size on a log scale. Small-but-numerous files stay visible instead of vanishing into slivers.
- Rings — a radial sunburst: the current folder at the hub, each ring a level deeper, arc = size. The shape of the whole hierarchy at a glance. Toggle any of the three in the map header.
- Numbers that match your drive. Diskhoji counts what files actually occupy on disk: hardlinked files once (Windows' WinSxS/System32 share thousands of DLLs), sparse and NTFS-compressed files at their real footprint, and OneDrive-style cloud placeholders at their true local size — so the total lines up with what Explorer or
dfreports as used, instead of overshooting it. - A real dashboard, fully cross-linked. Explorer tree ⟷ map ⟷ file types ⟷ largest files: click a type to spotlight it in the map, click a large file to locate it in the tree, zoom with breadcrumbs and double-click.
- Delete without rescanning. Deleting updates the in-memory model in place — every panel, total, and chart is correct immediately.
- Private by design. By default the native app makes no network connection at all — no telemetry, no trackers, no account, nothing about you or your files leaves the machine. Update checks are strictly opt-in (off by default); when you enable them or click Check for updates, Diskhoji only compares your version against GitHub and sends nothing else. (
--webmode binds127.0.0.1and nowhere else.) - Safety rails. Stays on one filesystem (never wanders into
/proc, other mounts, or network fs), never follows symlinks, and refuses to delete the scan root. - Sees everything — with your say-so. Launched as a normal user, Diskhoji offers (WinDirStat-style) to restart itself with administrator rights, so system areas and other users' folders get measured instead of showing up unreadable. The prompt is the standard local one — polkit/
pkexecon Linux, UAC on Windows, the administrator dialog on macOS — and elevation never touches the network. Decline for now, or tick Don't ask again (stored in~/.config/diskhoji-elevate); a link on the landing screen brings the offer back any time. In--webmode, runsudo diskhoji --web(or an administrator shell) for the same full coverage. - A game on board. The Seeker's Voyage — a Chrome-dino-style side-scroller — ships inside the app. See the mini-game below.
Install
One line (prebuilt binaries: Linux x86_64 · macOS Apple Silicon · Windows x86_64 — Intel Macs build from source via cargo):
curl -fsSL https://diskhoji.org/install.sh | shWindows (PowerShell):
irm https://diskhoji.org/install.ps1 | iex
Or download by hand from Releases:
tar xzf diskhoji-*-linux-x86_64.tar.gz ./diskhoji # opens the native app ./diskhoji ~/ # scan a path immediately
On macOS grab Diskhoji-*-macos-arm64.dmg (drag Diskhoji into Applications) or the .AppImage on Linux for a double-click launch. On Windows run diskhoji-*-windows-x86_64.msi (installs with Start Menu & Desktop shortcuts) or unzip diskhoji-*-windows-x86_64.zip for the portable .exe.
Or build from source (Linux, macOS, Windows — needs the Rust toolchain):
git clone https://github.com/singhpratech/diskhoji && cd diskhoji cargo build --release ./target/release/diskhoji [PATH] [--web] [--port N] [--no-open]
Diskhoji opens a native window by default. --web serves the same dashboard on 127.0.0.1 for your browser instead.
macOS first run (Apple Silicon): open the .dmg and drag Diskhoji into Applications. It's ad-hoc signed but not yet notarized, so the first launch is blocked ("Apple could not verify Diskhoji is free of malware"). Clear it once — either open it and choose System Settings → Privacy & Security → Open Anyway, or in Terminal:
xattr -dr com.apple.quarantine /Applications/Diskhoji.app open /Applications/Diskhoji.app
Windows first run: the build is not yet code-signed, so SmartScreen may say "Windows protected your PC". Click More info → Run anyway (or right-click the file → Properties → Unblock).
What it does
- Parallel scanner — rayon work-stealing across all cores, live progress while it runs.
- Cushion treemap — click to select, double-click to zoom, breadcrumbs to climb back out.
- Heatmap grid — one cell per item, ring = folder, color = size (log); same zoom and right-click actions.
- Radial rings — a sunburst of the hierarchy: current folder at the hub, up to five rings deep, arc = size; same zoom and right-click actions.
- Explorer tree — sizes, percent bars, sorted by weight, expand-on-demand.
- File types — top extensions by bytes with a fixed, CVD-validated categorical palette.
- Largest files — top 15, click to locate in the tree.
- Right-click anywhere (tree row, map tile, heat cell, ring arc, largest-files list):
- Open · Reveal in file manager · Copy path · Zoom · Delete permanently (confirmed, bypasses trash, updates every panel in place)
- Keyboard —
Backspacezoom up ·Deletedelete selection ·Escdismiss. - Play game — The Seeker's Voyage mini-game, right in the app (native and
--web): Space/↑ jump · release early for a short hop · ↓ dive ·Escback to work.
The Seeker's Voyage (the built-in mini-game)
A Chrome-dino-style side-scroller set on Diskhoji's night sea — sail east under the pasha moon, leap the corrupt reefs, gather the amber bytes. It ships inside the app: click Play game on the landing screen (while you decide what to scan) or in the dashboard toolbar. The identical game runs in --web mode and on diskhoji.org.
| Control | Action |
|---|---|
Space / ↑ / click or tap |
Jump (also starts the run) |
| Release the key early | Short hop — jump height is variable, exactly like the Chrome dino |
↓ in mid-air |
Dive — kills the jump and drops back to the water at 3× |
Esc |
Pause ("At anchor") and return to the app — resume any time |
How the sea behaves:
- The current starts gentle and accelerates steadily for about two minutes to full tide — Chrome-dino-style constant acceleration, no sudden difficulty cliffs.
- Reef gaps stretch as the water speeds up, so a faster sea never becomes unfair; clearability of the worst reef at every speed is verified with a frame-exact simulation before each release.
- Fathoms log your distance; each amber byte is worth 8. Tall reefs need a full-arc jump — short hops clear only the small ones. That's the skill.
- Your best voyage is saved locally (
~/.config/diskhoji-voyage-beston Linux/macOS, the equivalent config dir on Windows;localStoragein the browser) and never sent anywhere — the game, like the app, is fully offline.
Design notes
- Native window by default (light & dark themes,
A+/A−text zoom).--webmode embeds the whole dashboard as a single HTML file served on127.0.0.1only. - Sizes are real on-disk usage (allocated bytes), shown in binary units (KiB/MiB/GiB) — so the scanned total agrees with your drive's used/free numbers.
- Symlinks are counted as their own link size and never followed.
- Deleting the scan root is refused.
API (--web mode)
The web dashboard talks to a tiny JSON API you can script against:
/api/status · /api/roots · /api/pick · /api/scan · /api/summary · /api/node/{id} · /api/treemap?id&w&h · /api/delete · /api/reveal · /api/open
License
MIT — see LICENSE.
khoji (खोजी) — seeker.
Every byte, accounted for.
