Internal SSD: 1.66× to 11.66×
394 GiB across 1.69 million files, where per-file overhead decides the result. The narrowest gap is Czkawka at 1.66×; the widest is Gemini 2 at 11.66×.
These benchmarks run five duplicate finders over the same data on three kinds of storage: an internal SSD, a USB-C external SSD, and a NAS over SMB. The other four are Czkawka, dupeGuru, Gemini 2 and Duplicate File Finder, the Mac App Store app by Nektony. Choosing between the two free ones? Czkawka vs dupeGuru puts them side by side.
The three tiers were chosen because each one is limited by something different. On the internal SSD the work is per-file overhead. On the USB-C drive it is throughput. On the NAS it is network latency. Every tool behaves differently across the three, and the gaps change by more than an order of magnitude.
Internal SSD: 1.66× to 11.66×
394 GiB across 1.69 million files, where per-file overhead decides the result. The narrowest gap is Czkawka at 1.66×; the widest is Gemini 2 at 11.66×.
USB-C SSD: 1.07× to 2.15×
On an external SSD the bus sets the pace and the field compresses. Czkawka finishes 7% behind, Gemini 2 just over twice as slow.
NAS: a tie at the front
Over SMB, DuoBolt and Czkawka finish together within the measurement’s resolution. Duplicate File Finder takes 5.4× as long and Gemini 2 21.9×.
Every number on this page is ours. This section points at the one assessment of DuoBolt’s speed that is not.
Softpedia’s Catalin Chelariu tested DuoBolt 2.0.2 in August 2026 and rated it 4.0 out of 5. On the scan itself:
It’s very fast, surprisingly so.
The same review calls DuoBolt “quite expensive for a duplicate cleaner.” The full review is at Softpedia.
Note what that review did not test: no NAS, no external volume, no RAW, no APFS clone accounting. It is a verdict on ordinary folders on an internal disk, which is the tier where the gaps below are widest rather than the ones where they narrow to a few percent.
Lower is better. Every tool ran with a 1 KB minimum file size and looked for exact duplicates only.
| Tool | Time | vs DuoBolt |
|---|---|---|
| DuoBolt 2.2.8 | 38s | — |
| Czkawka 12.0.2 | 1m3s | 1.66× |
| Duplicate File Finder 9.2.2 | 1m39s | 2.61× |
| dupeGuru 4.3.1 | 7m17s | 11.5× |
| Gemini 2 | 7m23s | 11.66× |
Dataset: a source tree — 394 GiB in 1,687,241 files across 153,096
directories, mostly small files in .git directories and dependency folders.
Result: with 1.69 million files, the cost is dominated by what each tool spends per file rather than by how fast it can read.
| Tool | Time | vs DuoBolt |
|---|---|---|
| DuoBolt 2.2.8 | 5m17s | — |
| Czkawka 12.0.2 | 5m39s | 1.07× |
| Duplicate File Finder 9.2.2 | 6m5s | 1.15× |
| dupeGuru 4.3.1 | 9m42s | 1.84× |
| Gemini 2 | 11m20s | 2.15× |
Dataset: a 2 TB APFS volume over USB, 911.9 GB in use, with two macOS Photos libraries totaling ~115 GiB excluded from every tool’s scan.
Why they were excluded: Duplicate File Finder’s folder scan does not descend into a
.photoslibrary bundle, so leaving the libraries in would have given it ~115 GiB
less to do than the others. Excluding them everywhere makes the times comparable.
Result: the volume reads at 542 MB/s, measured with dd on a 3 GiB file, and
that ceiling is what the top of this table is up against. DuoBolt’s 5m17s is
about 94% of the time it would take to read the duplicate content it reports at
that rate, so there is not much room left to win.
| Tool | Time | vs DuoBolt |
|---|---|---|
| DuoBolt 2.2.8 | 10s | — |
| Czkawka 12.0.2 | 11s | 1.1× |
| dupeGuru 4.3.1 | 17s | 1.3–1.7× |
| Duplicate File Finder 9.2.2 | 54s | 5.4× |
| Gemini 2 | 3m39s | 21.9× |
Dataset: 420 GiB of music and 699 GiB of video on a Synology NAS over SMB 3.1.1, gigabit Ethernet, encryption off.
Resolution: DuoBolt’s three passes came in at 10s, 10s and 13s, so anything under 20 seconds on this tier carries about ±30%. DuoBolt and Czkawka tie, and dupeGuru’s 17s is not far enough clear to call. Duplicate File Finder and Gemini 2 are well outside that margin.
Result: music and video files rarely share a size, so almost nothing reaches a hash and the scan becomes a walk over file metadata — thousands of SMB round-trips. That is why 1.09 TiB takes seconds here while 394 GiB takes 38 seconds on a local disk. The two figures measure different work. Scanning your own share — mounting it, the folders skipped by default, and the cache — is covered in DuoBolt for NAS.
The USB-C tier was run twice: once with the two Photos libraries included, and once with them excluded for every tool. That accident of method turned into the best check on the page, because removing a known quantity of bytes has a predictable cost.
The libraries are ~115 GiB. At the volume’s measured 542 MB/s, reading them takes about 227 seconds. What each tool actually shed when they were taken away:
| Tool | With libraries | Without | Shed |
|---|---|---|---|
| DuoBolt | 8m47s | 5m17s | 210s |
| Czkawka | 9m20s | 5m39s | 221s |
| dupeGuru | 13m40s | 9m42s | 238s |
| Gemini 2 | 10m3s | 11m20s | none |
Three independent implementations, written by different people in different languages, each landing within about 8% of a figure none of them was aiming at.
Gemini 2 is the exception: its time did not fall when 13.5% of the volume was taken out of the scan, which fits a tool that was not reading that part to begin with.
None of this proves our timings. It shows the runs behave like the storage they
were run on, and it is checkable from the numbers above plus a dd on any
drive.
What we cannot offer is replication. The datasets are a personal source tree, a personal external drive and a home NAS, so nobody can re-run these exact scans. The versions, settings and cache handling are published so an equivalent run is possible on your own data — and an independent measurement on different data would be worth more than either.
czkawka_gui, the GTK build),
dupeGuru 4.3.1, Duplicate File Finder 9.2.2 by Nektony (free tier), Gemini 2czkawka_core. The GTK build was
measured because it is what brew install czkawka produces.Cache state moves these numbers a long way — on the NAS a warm run finished in 6 seconds against 41 cold — so it is stated per tier rather than summarized:
Four parts of the engine account for them. They matter most on the internal SSD, where per-file overhead sets the pace; over USB and SMB the disk or the network does, and the tools close up.
Everything above is the duplicate engine, which decides identity by hash. The duplicate photo finder is the other one: it decodes pictures rather than hashing them, so its work is not comparable to any figure on this page.
Core Concepts
How the duplicate engine hashes, prehashes and splits work across cores.
Similar photos
How DuoBolt groups photos that look alike, and what AI Curation measures before it recommends anything.
FAQ
Common questions about performance, accuracy, and optimization.