DirWiz app icon — a folder containing a blue treemap

Every byte on your Mac, mapped.

DirWiz scans millions of files in seconds and draws each one as a rectangle, sized by the space it actually takes on disk. Find what’s eating your Mac, then send it to the Trash with a clear conscience.

v1.1.1 · macOS 15+ · universal binary · zero dependencies · free & open source

DirWiz after scanning a Mac boot volume: a sortable file tree above a colorful cushion treemap, with a file type legend on the right
An actual scan of this Mac’s boot volume — 4,454,141 files in 23 seconds. Every rectangle is sized by the blocks it occupies on disk, not its logical length.
4.45M items · 23 s
Cold scan of a full 926 GB boot volume, via getattrlistbulk bulk kernel reads.
on-disk truth
Sizes are allocated blocks, not logical lengths. Sparse files don’t lie.
0 dependencies
Native Swift and Metal. Nothing else ships in the bundle.
Trash-only
Every removal goes through the Trash. A delete code path doesn’t exist.

Built for the “what is eating my disk?” moment

One window: a treemap you can steer, a sortable tree table, duplicate and hardlink groups, and space insights — all fed by one very fast scanner.

A map, not a list

The Metal cushion treemap gives every file a rectangle sized by its bytes, colored by extension. A 40 GB folder of forgotten screen recordings is hard to miss when it’s a 40 GB rectangle.

Warm start

DirWiz saves the tree after every scan, then replays the FSEvents journal and re-reads only folders that changed. On any doubt it quietly falls back to a full cold scan.

Byte-verified duplicates

Candidates are grouped by size and hash, then read end-to-end before any cleanup. Hardlinks are recognized for what they are: the same bytes, not reclaimable space.

Snapshots & diffs

Save a baseline today. Diff next month and the treemap tints what’s new, what grew, what shrank, and what’s gone.

A CLI with the same engine

scan · duplicates · snapshot · diff · benchmark, with --json for scripts. Snapshots taken in the terminal show up in the app.

Space insights

Categories, file ages, size distributions, iCloud placeholders, APFS clones, local snapshots — including the purgeable space Finder won’t explain.

Have a play before you download

Not a mockup. Real dirwiz-cli scans of a Mac’s /Applications, /Library, /System/Library and /opt/homebrew — real names, real byte counts — drawn by the same squarified layout and Oklab-equalized palette the app itself uses.

Click a folder to zoom in · Esc or the path bar zooms out · sizes drift every few seconds, the layout glides to follow

Delete the copy. Keep the original.

DirWiz groups files by content, not by name. Before anything moves, each file is re-read byte for byte — and cleanup only proceeds while an unselected, identical copy survives. Trashing your last copy isn’t an accident that can happen; the action refuses to run.

  • Byte-for-byte verification right before the move, not just hashes from ten minutes ago.
  • Hardlink-aware — linked bytes are reported separately, never sold to you as reclaimable space.
  • Presets fail closed — a selection that matches nothing does nothing.
3 groups · 7 files 412.6 MB reclaimable
~/Movies/exports/final-cut-01.mov4.2 GBkeeper
~/Downloads/final-cut-01.mov4.2 GBidentical
~/Desktop/final-cut-01 (2).mov4.2 GBidentical
~/Documents/spec.pdf1.8 MBkeeper
~/Downloads/spec (1).pdf1.8 MBidentical
~/Pictures/Photos Library86.4 MBkeeper
~/Desktop/photo-dump86.4 MBidentical
Re-read byte-for-byte at the moment of action — never trust a stale hash.

Where did those 20 GB go?

Snapshot your disk while it’s tidy. Three weeks later, when the “disk almost full” banner shows up, diff against the baseline. New files show green, growth blue, shrinkage amber, deletions red — painted straight onto the treemap, with a ranked list of the worst offenders.

  • Compact binary snapshots stored per scan root — take one whenever things feel right.
  • Shared with the CLIdirwiz-cli snapshot from a cron job, diff in the app on Friday.
Jun 12, 2026 → Today +18.4 GB
~/Library/…/Xcode/DerivedData+9.1 GB
~/Projects/acme-web/node_modules+4.2 GB
~/Library/Caches+3.8 GB
~/Downloads/Xcode_16.4.xipnew 2.9 GB
~/Movies/exports−1.6 GB
new grew shrank deleted

The same scanner, over SSH.

The app and the CLI are two doors into one engine. Scan with JSON export, check duplicates, save and diff snapshots, or run the built-in benchmark — on the Mac in front of you or the Mac mini in the closet.

  • --json everywhere — pipe scans, duplicate groups, and diffs into jq or a dashboard.
  • Progress on stderr, data on stdout — quiet with -q, script-safe by default.
you@studio — zsh

The scariest thing DirWiz can do
is move a file to the Trash.

Trash, never delete

Every removal goes through the system Trash and can be put back. There is no “rm” hiding behind a confirmation dialog.

Verified before it moves

Duplicate cleanup re-reads files end to end at the moment of action and refuses to run unless an identical copy survives.

Fails closed

Cleanup presets that match nothing select nothing. Ambiguity always resolves to “do nothing”, never to “guess”.

Your Downloads folder isn’t
going to clean itself.

Download for macOS

Version 1.1.1 · macOS 15 or later · universal (Apple silicon & Intel) · 3 MB

SHA-256 — VERIFY YOUR DOWNLOAD
e8e04c446506d137b4f8b61e8daae94f47b91d22b33ceaa973eab0cda9cd07fd
$ shasum -a 256 DirWiz-1.1.1-macos.zip

Signed and notarized by Apple. Double-click to open — no right-click trick, no Gatekeeper warning to talk your way past.

Full Disk Access. Scanning system folders needs it. DirWiz detects the permission at launch and walks you through System Settings — no guesswork about why a folder came back empty.

Rather build it yourself? git clone https://github.com/okturan/dirwiz then ./scripts/package-release.sh.