Skip to content
DuoBolt

Duplicate Finder Benchmarks — DuoBolt vs Four Other Duplicate Finders

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.

Internal SSD — 394 GiB, 1.69 million files

Section titled “Internal SSD — 394 GiB, 1.69 million files”
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.


  • The tiers are not comparable to each other. Each is a different dataset on different hardware. The ratios within a table are the measurement; the absolute times across tables are not a progression.
  • One run per cell, except where noted. The NAS tier has three DuoBolt passes and two for Czkawka. Everything else is a single pass.
  • Nothing here is a memory or disk-footprint figure. Scan time is the only axis measured.
  • The photo engine is not in any of this. These runs are the duplicate engine, which decides identity by hash.

  • Run date: 20 September 2026
  • DuoBolt version: 2.2.8
  • Competitor versions: Czkawka 12.0.2 (czkawka_gui, the GTK build), dupeGuru 4.3.1, Duplicate File Finder 9.2.2 by Nektony (free tier), Gemini 2
  • Hardware: Mac Studio, Apple M2 Max (8 performance + 4 efficiency cores), 32 GB
  • OS: macOS 27.0
  • External SSD: 2 TB APFS over USB, measured at 542 MB/s sequential read
  • NAS: Synology over SMB 3.1.1, gigabit Ethernet, SMB encryption off
  • Czkawka note: the project now directs new users to Krokiet, a separate Slint-based front end sharing the same czkawka_core. The GTK build was measured because it is what brew install czkawka produces.
  • Exact duplicates only; no similarity detection on any tool
  • Minimum file size 1 KB everywhere, each tool in its own units
  • Identical include and exclude rules across all tools within a tier
  • Each tool’s own cache cleared before every run
  • No other intensive processes running

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:

  • Internal SSD: each tool’s own cache cleared between runs. The operating system’s page cache was not controlled.
  • USB-C SSD: run after a reboot, each tool’s cache cleared.
  • NAS: before every run, the NAS page cache was dropped over SSH and both shares were unmounted and remounted. This is not a cold NAS — the server’s services and disks stayed warm. It is a reproducible state, which is what a comparison needs.
  • Duplicate File Finder ran with “Full-scale duplicate scan” enabled. Its default mode finished the USB-C tier in 2m14s, which is less time than reading the content it reported would take at the volume’s measured read rate, so the two modes are not measuring the same thing. The slower, verifying mode is the comparable one.
  • Gemini 2 ran with similar-file detection off and its minimum size set explicitly to 1 KB rather than Automatic, which picks an undisclosed threshold from the size of the job.
  • All other tools used their default hash settings.
  • Scan time measured from start to completion
  • Times reported as the tool displayed them
  • On the NAS tier, the median of DuoBolt’s three passes is used

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.

  • Parallel walks and hashing. Every scan root is walked in parallel, and BLAKE3 hashes on all CPU cores.
  • Reads that overlap hashing. Files are read in chunks while earlier chunks are hashed, so a slow disk or a NAS is waited on less.
  • A prehash before the full hash. Files that share a size are compared on their head and tail first (the head only, on network volumes); only the ones that still match are hashed in full, so a reported duplicate is still confirmed byte for byte. See Core Concepts.
  • One engine on both platforms. macOS and Windows run the same engine; the runs above were made on the Mac. BLAKE3 in DuoBolt compares it with SHA-256 and MD5.

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.

Read Core Concepts →

Similar photos

How DuoBolt groups photos that look alike, and what AI Curation measures before it recommends anything.

Read How grouping works →

FAQ

Common questions about performance, accuracy, and optimization.

Read FAQ →