The basics
What is Tidy Tank?
Tidy Tank is a disk cleaner for Mac and Windows. It looks through your startup disk, finds what takes up space, explains each item in plain words, and cleans only the things you tick. Nothing is deleted while it looks.
The idea behind the name: your disk is a fish tank, free space is fresh water, and the fish keeps the tank clean. That fish is Tidy, your sailfish, the fastest fish in the sea, because Tidy Tank is built for speed.
Who is it for?
Anyone whose disk keeps filling up and who wants to know why before deleting anything. It is especially good at the folders that quietly grow on a developer's Mac: Xcode DerivedData, simulators and simulator runtimes, Xcode test-device copies, node_modules, Pods and other build folders, and package manager caches. It also finds big old downloads, leftover installers, duplicates and apps you no longer use.
Is Tidy Tank free?
Yes. Scanning and cleaning your startup disk (Macintosh HD on a Mac, C: on Windows) is free.
One optional, one-time unlock adds other drives, any folder you pick, and network disks. It costs €9.99 in Europe and $9.99 everywhere else. There is no subscription. The unlock is not on sale yet. See network disks and the unlock below.
Does it work on Mac and Windows?
Yes. There is a Mac version and a Windows version for both 64-bit (Intel and AMD) and ARM (Snapdragon) PCs. Both versions share the same scan engine, so they find things the same way and show the same kinds of numbers.
There are no downloads yet. The download buttons on the home page will switch on when the builds are published.
How the scan works
How does Tidy Tank scan my disk?
When you open Tidy Tank it walks the folders on your startup disk and measures them. While it walks, it recognises things it knows: an Xcode DerivedData folder, a node_modules folder next to a package.json, a browser cache, a simulator, a Time Machine local snapshot, an old installer in Downloads, and many more. Each match becomes a row with a size, a safety label and an explanation.
The scan only reads. It never moves, changes or deletes a file. You can watch the numbers fill in while it works, and the biggest finds show up first.
The new scan engine is written in Rust. It reads whole folders at once with a macOS system call made for this (getattrlistbulk), on several threads, and remembers the last scan so the next one only re-reads the folders that changed. In tests on the developer's Mac (a home folder of about 2.1 million files), a repeat dry run with this engine took about 3.5 to 4.7 seconds. The first scan takes longer, around 20 to 25 seconds there, with the first results after about 6. Your times will differ. The Rust engine is still being switched on as the default. The Why Rust page has the details.
How fast is Tidy Tank?
Fast enough that you don't wait. On the developer's Mac (an M2 Pro with about 2.1 million files) the first big finds appear after about 6 seconds on a cold scan, the whole first scan takes 20 to 25 seconds, and a repeat scan takes 3.4 to 4.7 seconds, because the engine remembers the last scan and only re-reads the folders that changed. Your Mac will differ. The Why Rust page lists every measurement.
What gets listed?
Things that take real space and that someone can do something about. They are sorted biggest first by how much space really comes back, and grouped with chips you can filter by:
- Developer: Xcode DerivedData, iOS, watchOS and other simulators, simulator runtimes, Xcode test-device copies, iOS DeviceSupport, Xcode Archives, project build folders such as
node_modules,.next,Pods,target,.buildand.venv, Android SDK leftovers and emulators, and developer caches (npm, Gradle, SwiftPM, CocoaPods, Homebrew and more). - Caches & temp: app and browser caches, logs and old temporary files that apps re-create on their own.
- Downloads & Trash: big, old downloads, installers (
.dmg,.pkg,.xip), duplicates and what is already in your Trash. - Apps: apps you have not opened in a long time, and what uninstalled apps left behind.
- System & snapshots: Time Machine local snapshots, old macOS installers and firmware files.
- VMs & cloud: virtual machine and Docker disks, and local copies of cloud files (iCloud Drive, OneDrive, Google Drive, Dropbox). These are shown so you know where the space went, but Tidy Tank does not delete them.
- Biggest files: a separate view of the largest single files, wherever they are.
Your Downloads folder and unused apps are only looked at when the Downloads and apps box is on, because they hold your own things.
A search box filters the list and understands a few handy terms, for example size:>1G kind:devbuild age:>90d.
Is there anything Tidy Tank never touches?
Yes. Some things are on a deny list and are never offered for cleaning, even if they are big, because removing them breaks things or loses data. Examples: macOS system folders, the language files inside apps (removing them breaks code signatures and updates), your Mail store, your Photos library and your iPhone backups. Some of these are shown as Look only rows so you can see their size and the safe way to shrink them, such as Finder's Manage Backups for iPhone backups.
What is the map view?
Next to the cleanup list there is a Whole disk view. It draws every top-level folder of your disk as a box sized to scale, so one glance shows where the space went. You can click into a folder to drill down, or switch to the Largest files and Search tabs on the side.
The map only reads. It is there to answer "where did my space go?", including space Tidy Tank does not clean, such as your photos or a virtual machine.
Why does it say Limited mode?
macOS protects some folders, such as Mail, Messages and some app containers, until you allow an app to read them. Without that permission Tidy Tank still scans everything it is allowed to read, and says Limited mode so you know a few places were skipped. It never guesses at what it could not read.
To see everything, open System Settings → Privacy & Security → Full Disk Access and turn it on for Tidy Tank, then scan again.
Sizes and numbers
How does Tidy Tank measure sizes?
It counts the space a file really takes on the disk (its allocated size), not just how long the file is. A file that is mostly empty, or a cloud file that is only a placeholder, can look big in a file list and still take almost no disk space. Online-only cloud files take no space, so they are not counted.
Two more things keep the numbers honest:
- Hard links are counted once. When the same file appears in two folders through a hard link, it is counted in one place only, so totals don't add up to more than the disk holds.
- Nested items are counted once. If a big file sits inside a folder that is already listed, it isn't added again.
Sizes are shown in GB the same way Finder shows them (1 GB = 1,000,000,000 bytes), so the numbers match what you see on your Mac.
What is the difference between "Listed" and "Gets back"?
Listed is the size you would see if you added up the files. Gets back is how much free space you will really have after cleaning the item. Usually the two are close. Sometimes they are very different, and Tidy Tank always ranks and totals by Gets back.
The big reason is APFS, the Mac's file system. APFS can make clones: copies of a file that share the same blocks on the disk until one of them changes. Xcode uses this heavily. Its test-device copies are clones of your simulators. Deleting a clone only frees the blocks that belong to it alone.
Tidy Tank asks APFS for each file's private size (the bytes no clone or snapshot shares) and which clone family it belongs to, and from that works out the true size. On the developer's Mac, Xcode test-device copies were listed at 243.3 GB, but measuring them this way showed only 28.0 GB would really come back. A cleaner that only adds up file sizes would have promised more than eight times the real gain.
In the details panel you'll see both numbers when they differ, for example "Listed 21.0 GB" above a Gets back of 18.3 GB.
What does the bar across the top show?
The space bar is your whole disk in one line:
- Other (dark): everything Tidy Tank isn't offering to clean.
- Back (orange): what you have ticked, which comes back as free space.
- Kept (light blue): items that are listed but not ticked.
- Free (teal): your fresh water, the free space you have now.
The big number at the top is the total of what you ticked. Next to it you see Free now and After, the free space you will have once you clean.
I cleaned, but my free space didn't go up as much. Why?
Usually because of Time Machine local snapshots. If Time Machine is on, macOS keeps recent snapshots of your disk on the disk itself. A deleted file stays inside a snapshot until that snapshot is removed, so its space only comes back later. macOS removes local snapshots on its own after a while, and sooner when space runs low. Tidy Tank lists local snapshots under System & snapshots and tells you when they hold space.
Other reasons: an app re-created its cache straight away, or Finder's free-space figure includes "purgeable" space that macOS frees only when it needs to. After a clean Tidy Tank measures free space again (after deleting snapshots it first waits a couple of seconds for macOS to catch up), so the number it shows is measured, not guessed.
Safety: what gets ticked, and how cleaning works
What do the Safe, Check first and Look only labels mean?
Every row has one of three labels:
- Safe It rebuilds itself and has nothing personal in it, such as Xcode DerivedData or a download cache. The worst case is that something is slower the next time while it rebuilds. Safe rows can start ticked.
- Check first Probably fine to remove, but only you know. Examples: a simulator you might still use, an old project's build folder, a big download, a Time Machine local snapshot. These are never ticked for you.
- Look only Tidy Tank shows where the space is and how to free it, but won't remove it. Examples: virtual machine disks, cloud files, iPhone backups.
Every row also says what will happen if you clean it: it moves to the Trash, it is deleted and rebuilds itself, or a developer tool removes it (for example Xcode's own simctl for simulators).
Why is nothing risky ticked for me?
Because the app can't know what matters to you. A 9 GB simulator might be junk to one person and the device they test on every day to another. So only Safe rows can start ticked, and even those stay unticked when:
- the app that owns them is running (DerivedData stays unticked and locked while Xcode is open, test-device copies while tests run),
- they were changed very recently (build folders touched in the last 24 hours are left alone by default), or
- they are your own files, apps, cloud files or virtual machines. Those are never pre-ticked.
When something can't be cleaned right now, the row says why in plain words, for example that a program is running from it, and the tick box is disabled.
What does "Clean the tank" do?
It cleans exactly what you ticked, nothing more. First it opens a confirm sheet with:
- how many items and how many GB really come back,
- how many go to the Trash and how many are removed for good, and
- the items themselves, biggest first, with their labels.
After you confirm, Tidy Tank checks every item again against the disk as it is at that moment: is it still there, is it still the same thing, is its app running now, is it still inside an allowed place? Anything that fails a check stays where it is and is reported as "stayed back". Where a tool exists for the job, Tidy Tank uses it instead of deleting files itself, for example xcrun simctl delete for simulators or tmutil deletelocalsnapshots for Time Machine snapshots. Only exact, known commands are allowed.
Why do I have to type a number to delete?
A real clean asks you to type a number shown in the confirm sheet, for example "Type 43 to delete", before the Delete button works. It's a small speed bump so a stray click or a pressed Return key can never delete anything. You see the full list and the total once more while you type.
Does it move things to the Trash or delete them?
It depends on what the item is:
- Your files (downloads, installers, duplicates, apps) go to the Trash, so you can put them back.
- Things that rebuild themselves (caches, DerivedData, build folders, simulators removed by Xcode's tool) are removed for good. Moving them to the Trash would not free any space until you emptied it, and they come back on their own when needed.
The confirm sheet shows the split before you clean, for example "1 to Trash · 8 removed for good".
What does Dry run do?
Dry run is a rehearsal. Tidy Tank goes through everything as if it were cleaning, checks every item, and shows what would go and how much space would come back, but deletes nothing. The command-line version has the same switch: tidytank --dry-run.
Is there a record of what was cleaned?
Yes. Tidy Tank keeps a local audit log on your Mac in ~/Library/Logs/TidyTank/. Each scan, confirm and clean adds a line: what was cleaned, how, how big it was and whether it worked. Dry runs are logged too and marked as dry runs.
- Only your user account can read the log.
- Records are only ever added, never rewritten.
- If a record can't be written, a real clean refuses to delete anything.
- It stores paths and sizes, never file contents, passwords or licence keys.
To read it, run tidytank log (or tidytank log --since 7d). Old logs rotate after 5 MB and the last five files are kept.
Other drives, network disks and the unlock
Can Tidy Tank scan network disks and other drives?
Yes, with the one-time unlock (€9.99 in Europe, $9.99 elsewhere, not on sale yet). It adds three things:
- scanning another drive, such as an external SSD,
- scanning any folder you pick, and
- scanning network drives over SMB and NFS, such as a NAS, with Bonjour to find file servers on your network.
Before you unlock, other drives show up as locked tiles so you know they are there. AFP shares are not supported: Apple removed the AFP client in macOS 27. Switch the share to SMB on your NAS instead.
Can it delete files on a network disk?
Not in the current builds. Outside the startup disk Tidy Tank shows where the space went but doesn't clean. Deleting over the network is permanent from your Mac's side, because there is no Trash for a network share, so this is kept to looking for now.
Is the unlock a subscription?
No. It is a one-time purchase. The free version keeps working on your startup disk with no time limit and no nagging.
Privacy
Does Tidy Tank track me or upload my file list?
No. Tidy Tank has no analytics and no tracking. The scan runs on your computer and the list of what it found stays there. The audit log is a local file that only your account can read.
The unlock is designed to work offline: the licence is a small signed file that Tidy Tank checks on your computer, with no account and no check-in each time you open it. Payments are not live yet.
This website doesn't track you either. It uses no cookies, no analytics and no third-party scripts or fonts.
Will it download my iCloud or OneDrive files while it scans?
No. Tidy Tank tells macOS not to download online-only files while it scans, and it never opens their contents. Local copies of cloud files are shown as Look only, because deleting a file inside a sync folder deletes it in the cloud and on your other devices too. The right fix is your cloud app's "Free up space" or "Remove Download", which keeps the file online.
The command line
Is there a command-line version?
Yes. Tidy Tank started as a command-line tool, tidytank, and it is still there for people who live in Terminal. Some useful commands:
tidytank --dry-run: scan and show what would be cleaned, delete nothing.tidytank --list: list the categories.--onlylimits a run to some of them.tidytank --json: print the report as JSON for scripts.tidytank tank: watch your disk as an aquarium in the terminal until you press q.tidytank log: show the audit log.tidytank scopes,discoverandunlock: see what you can scan, find file servers with Bonjour, and check the unlock status.
The command line uses the same rules, labels and typed confirm as the app: to clean for real you type the number of items. On a Mac you can install it with Homebrew: brew install --cask yuwashme/tidytank/tidy-tank. That puts both the app and the tidytank command in place.
Still curious?
Why a fish?
Because your disk is the tank: free space is fresh water, and the fish keeps it clean. The fish is Tidy, your sailfish, the fastest fish in the sea, and that is the point. Tidy Tank is built for speed: the first big finds appear after about 6 seconds, and a repeat scan takes under 5.
How do I stop my disk filling up again?
A few habits go a long way: empty Downloads now and then, delete installers after you install, clear Xcode and Docker leftovers after big projects, and keep 10 to 15% of the disk free. We wrote them all down in How to free up disk space on a Mac or PC, safely.