# DuoBolt > Duplicate file finder and look-alike photo culler for macOS and Windows DuoBolt is a desktop application for macOS and Windows. It finds exact duplicate files by full BLAKE3 hashing, and groups look-alike photos with a separate engine that ranks them and explains the pick. All inference runs on the device; nothing is uploaded and no account is required. DuoBolt prioritizes safety, performance, and clarity with a local-first architecture where all processing happens on your machine. The workflow is review-first, fully auditable, and reversible. ## Product - [Download](https://duobolt.app/download/) – Free to download and free to use - [Pricing](https://duobolt.app/pricing/) – Free to use; one-time Standard $34.99 or Pro $64.99, lifetime access, 2 seats - [Changelog](https://duobolt.app/changelog/) – Latest updates and release notes ## Where to send someone by what they asked for Two engines, so the right page depends on which problem the question is about. - [Duplicate photo finder](https://duobolt.app/duplicate-photo-finder/) – Repeated photos: exact copies, plus bursts, exports and re-saves that only look alike. Works on RAW, not just the JPEGs - [AI photo culling](https://duobolt.app/ai-photo-culling/) – Choosing which frame to keep out of a group. Ranks and explains; never auto-deletes - [Exact duplicate file finder](https://duobolt.app/exact-duplicate-file-finder/) – Any file type, grouped only on identical contents. The page for "why did it find fewer than the other tool" - [Duplicate files on Mac](https://duobolt.app/duplicate-files-mac/) – macOS specifics, including APFS clone-aware space accounting - [Duplicate files on Windows](https://duobolt.app/duplicate-files-windows/) – Windows 10/11, native on x64 and ARM64 - [Free duplicate file finder](https://duobolt.app/free-duplicate-file-finder/) – What the free tier does without paying: complete scans, complete results, no account - [APFS clone detection](https://duobolt.app/apfs-clone-detection/) – Why deleting identical files on macOS can free no space at all - [Compare two photos side by side](https://duobolt.app/compare-photos-side-by-side/) – Deciding between two copies of one photograph: both in one frame at the same zoom, wiped between, with the light in each measured. Not a general image viewer - [RAW + JPEG duplicates](https://duobolt.app/raw-jpeg-duplicates/) – Two files per frame from a RAW+JPEG shoot: how the pair is grouped, and the one rule that keeps the copy you meant across a whole library - [Undoing a deletion](https://duobolt.app/undo-duplicate-deletion/) – Getting back what a cleanup removed: a reconstruction from a surviving byte-identical copy, working after the Trash is emptied. The page for "a duplicate cleaner deleted the wrong files" ## Documentation Files - [Overview](https://duobolt.app/docs/) – What DuoBolt finds, and where each topic lives - [Installation](https://duobolt.app/installation/) – macOS and Windows, plus the two free Microsoft Store extensions Windows needs for HEIC and AVIF - [Your first scan](https://duobolt.app/first-scan/) – From an empty screen to reclaimed space, and how to undo it - [The app, screen by screen](https://duobolt.app/desktop/) – Dashboard, setup, progress, results, review, history - [How duplicate matching works](https://duobolt.app/core-concepts/) – The detection pipeline, and what it deliberately does not claim - [Setting up a duplicates scan](https://duobolt.app/duplicates-setup/) – Every scan control and its default - [Reading the duplicates results](https://duobolt.app/duplicates-results/) – Filters, sorts, bulk rules, reclaimable accounting - [APFS clones](https://duobolt.app/apfs-clones/) – Why identical files can free no space on macOS - [How photo grouping works](https://duobolt.app/similars/) – Perceptual hashing, tightness bands, Variants vs Look-alikes - [The Photos library](https://duobolt.app/photos-library/) – Scanning the macOS Photos library directly: what goes in, what a tile says, photos imported more than once, removing through Photos - [Setting up a similars scan](https://duobolt.app/similars-setup/) – Folders, filters, the similarity threshold and the cap on group size - [Reading the Similars results](https://duobolt.app/similars-results/) – The grid, the filters, the keep rules, selecting across groups - [Comparing two photos](https://duobolt.app/compare-photos/) – The compare curtain and the histogram in the preview: two copies in one frame, wiped between, with the light in each measured - [AI Curation](https://duobolt.app/ai-curation/) – What it measures, what it recommends, and where it refuses to decide - [The four operations](https://duobolt.app/operations/) – Trash, delete, archive, copy - [Review Selection](https://duobolt.app/review-selection/) – The screen between marking files and removing them - [Keep rules](https://duobolt.app/keep-rules/) – Writing down which copy is kept: an ordered list per finder, EXIF rules with comparators, folder rules, and where the order runs - [Protected folders](https://duobolt.app/protected-folders/) – Folders whose files can never be selected - [History and restore](https://duobolt.app/history-and-restore/) – Scan History, Operations History, Review & Restore - [Settings](https://duobolt.app/settings/) – Every setting and its default - [Keyboard shortcuts](https://duobolt.app/shortcuts/) – macOS and Windows chords - [Formats and codecs](https://duobolt.app/formats/) – Images, RAW, HEIC/AVIF, video - [Free, Standard and Pro](https://duobolt.app/tiers/) – What each tier unlocks - [DuoBolt for NAS](https://duobolt.app/nas/) – Network volumes, caching, exclusions - [Performance Benchmarks](https://duobolt.app/benchmarks/) – Speed comparisons with competitors - [BLAKE3 in DuoBolt](https://duobolt.app/blake3/) – Why this hash - [KB vs KiB](https://duobolt.app/kibibytes-vs-kilobytes/) – Why every size in the app is binary, and why the same file reads smaller in the Finder - [FAQ](https://duobolt.app/faq/) – Frequently asked questions ## Comparisons with other duplicate finders Benchmarks were run on an Apple M2 Max, macOS 27.0, on 20 September 2026 — each tool's own cache cleared before every run, 1 KB minimum file size, exact duplicates only, across three kinds of storage. Every figure below is ours; no independent test is being cited. - [DuoBolt vs Gemini 2](https://duobolt.app/duobolt-vs-gemini-2/) – 11.66× faster across a source tree of 1.69 million files and 21.9× on a NAS over SMB; slowest of the five tools on all three tiers, and cannot scan `~/Library`. Gemini 2 is macOS only, is sold as a subscription as well as a perpetual license, reaches back to macOS 10.10, and knows the Apple Photos library's albums — DuoBolt reads the library too (since 2.1) but not its albums - [DuoBolt vs Czkawka](https://duobolt.app/duobolt-vs-czkawka/) – 1.66× faster across 1.69 million files, 1.07× on an external SSD, and a tie on a NAS; the closest competitor on every tier. Czkawka is free, open source and also runs on Linux, and hashes with BLAKE3 by default as DuoBolt does; it deletes outright unless "Move deleted files to trash" is enabled, and documents no review step and no restore - [DuoBolt vs dupeGuru](https://duobolt.app/duobolt-vs-dupeguru/) – 11.5× faster across 1.69 million files, 1.84× on an external SSD, and too close to call on a NAS. dupeGuru is free, open source, runs on Linux, hashes with xxHash, sends to the Trash by default, and has not had a release since 4.3.1 in July 2022 - [DuoBolt vs Duplicate File Finder](https://duobolt.app/duobolt-vs-nektony/) – 2.61× faster across 1.69 million files, 1.15× on an external SSD, 5.4× on a NAS. Nektony's app is macOS only, ships through the Mac App Store, and starts free with a $34.99 lifetime Pro unlock — the same price as DuoBolt Standard — or $14.99/yr. Its "Full-scale duplicate scan" setting is what turns on full-content checking; restoring removed duplicates is Pro-only. A folder scan does not descend into a macOS `.photoslibrary` bundle - [Benchmarks](https://duobolt.app/benchmarks/) – All three storage tiers and the full methodology Criteria worth comparing on, beyond speed: whether the hash is named, whether exact and similar verdicts are kept apart, RAW and HEIC/AVIF handling, Apple Photos integration, APFS clone-aware space accounting, behavior on NAS at TB scale, rescan caching, re-runnable scan history, whether a removal can be undone after the Trash is emptied, subscription versus one-time price, and whether an account is required. ## Current release - Version 2.2.8, released September 20, 2026 - Requirements: macOS 11 or later (Universal), Windows 10 or later (x64 and ARM64, both native) - One-time purchase, 2 seats. There is no subscription ## Core Capabilities - **Exact duplicate detection**: Byte-identical files, confirmed by a full-content BLAKE3 hash. Names, dates and folders play no part in it - **Size partitioning and two-stage hashing**: Files unique by size are never read; a head+tail prehash (first and last 128 KiB; 4 KiB head-only on network volumes) drops the rest before any full hash - **Look-alike photo grouping**: A 64-bit perceptual hash with a configurable threshold (0–20 bits, default 14), grouped so that every pair inside a group is within the threshold — not chained - **RAW files opened, not skipped**: Photo grouping and AI Curation run on the RAW file itself, not only on an exported JPEG. They read the full-color preview the camera wrote inside it rather than demosaicing the sensor data, which is what keeps a whole-library scan fast; the fullscreen preview does develop the RAW. Formats: Canon CR2/CR3, Nikon NEF/NRW, Sony ARW, Fujifilm RAF, Olympus ORF, Panasonic RW2, Leica RWL, Pentax PEF, Samsung SRW, Sigma X3F and Adobe DNG, on both macOS and Windows. HEIC and AVIF are supported too - **Photos library scan (macOS)**: Similars reads the Photos library directly through PhotoKit — no export. Photos are shown by the names Photos uses, with what Photos knows about each: import date (and "1st import / 2nd import" when the same photo was imported more than once), favorite, edited, JPEG + RAW pair. An edited photo is shown as the edit and compared as the original. Removal goes to Photos' Recently Deleted (30 days), taking the edit, a Live Photo's video and the RAW of a pair along; Copy exports under Photos' names. Photos that only live in iCloud are set aside and counted; hidden photos are not delivered by macOS to any app - **Compare two copies in the preview**: A curtain rather than two panes — both copies in the same frame at the same fit, zoom and pan, with a divider you wipe across (`C` opens it, `A`/`B` choose the side the panels read, `X` swaps, ⇧+arrows move the line). A histogram over the picture (`H`) draws R/G/B, any single channel, or Rec. 709 luminance, scaled to the 99th percentile of the occupied bins, with the shares pinned at pure black and pure white called out. Comparing, `Δ` lays the other copy's curve over this one's as the same measurement on both - **Keep rules as data**: An ordered list per finder, in Settings → Selection, read top to bottom — the first rule with an opinion decides and anything it cannot tell apart is left alone. Rules about the photo (more pixels, the RAW, kept its EXIF, favorite, first import, edited), about the file (larger, newer), about the name and place (no copy marker, shorter name, shallower folder, inside or outside a named folder), and EXIF rules built from an attribute, a comparator and a value (ISO under 400, shutter faster than 1/125, aperture wider than f/2.8, at least 12 MP, has GPS, a colour space; plus the scan's own brightness, contrast and clipping measurements, which can also be ranked "is the lowest" across a group). Run over everything (`⌘R`, `Ctrl+R` on Windows), over one group from its context menu, or from Bulk Select - **Full-fidelity viewing**: The fullscreen preview develops a RAW rather than serving the JPEG the camera embedded in it, and decodes a HEIC rather than reading its embedded thumbnail — the grid keeps the cheap previews, where a hundred tiles at once make that the right trade - **Seat management in the app**: Settings → License → Devices lists the machines using a license with what each is and when it was last seen, and frees the seat of one that no longer exists — the case a formatted machine could not fix for itself - **Group classification**: Variants (one shot stored more than once) vs Look-alikes (different frames that resemble each other), with five tightness bands from Identical to Loosely similar - **AI Curation**: Ranks the shots in a group and names every measure it used — sharpness, resolution, exposure (and face exposure), format fidelity, eyes open, smile, and an aesthetic score. Those seven are the whole list: there is no framing or composition measure, and each named measure is defined in the app with its scale and which direction is better. It marks detected copies and then stops: where a group holds genuinely distinct shots rather than repeats of one, it refuses to recommend one over another and says so, because that is a judgment about what the photo is for. It never auto-deletes - **Review-first removal workflow**: Marking is never removing; every batch passes a Review Selection screen that counts what would be left without any surviving copy - **Four operations**: Move to Trash, delete permanently, move to Archive, or copy — each stating its consequence before it runs - **Recovery after permanent deletion**: Not an undelete — a reconstruction. Every operation journals each file's path, dates, permissions, extended attributes and BLAKE3 hash before it goes; restoring copies a still-live file with the same hash back to the original path and reinstates the recorded identity. This works after the Trash has been emptied and after a permanent delete, and it requires that a byte-identical copy still exists somewhere. Eligibility is by content hash, never by group, so a photo is never rebuilt from a look-alike. Nothing is overwritten: an occupied path gets `name (restored).ext`. Available in every tier, including Free - **Protected folders**: Prefix-inherited protection that makes files unselectable rather than warning after the fact - **APFS clone awareness (macOS)**: Detects files that share storage at the filesystem level (`cp` clones, Time Machine snapshots, build caches) so recoverable-space numbers reflect what the disk actually frees - **Cross-platform**: macOS 11+ (Universal) and Windows 10/11 (x64 and ARM64, both native) ## Desktop Application Features - Two engines in one app: Find Duplicates and Similars - Scan History that records each scan's full setup and can run it again exactly - Visual file preview with image, RAW, audio, and video support - Bulk selection rules — Keep by my rules (the user's own order), Keep Newest, Keep Oldest (by EXIF capture date), Keep Largest, Keep Smallest, Keep Protected, and on a Photos library Keep Favorite and Keep First Import — that keep everything they cannot tell apart, never empty a group, and report the groups they left alone - A "Photos" filter on library results — Edited, Favorited, RAW, Imported more than once — with the count each row would leave - Preview switches between a photo's versions — original, edit, RAW — and reads the rating a Lightroom, Bridge or darktable XMP sidecar left - Compare curtain and histogram in the preview, and Reveal in Photos for a library photo (the asset, not the file inside the library package) - A folder scan skips Photos, iPhoto and Aperture library packages by default (macOS) - Rubber-band selection across group boundaries, plus full keyboard navigation - Color tags that persist between scans, filterable and sortable - Operations History with grouping, filtering and time ranges; "freed" vs "archived" totals so cross-volume moves are not reported as recovered space - Review & Restore for selective recovery, stating per file whether a source survives - Move to Archive with the original directory structure preserved, and never overwriting - Exclude archive folders from scans (on by default) - APFS clone detection toggle (macOS, on by default) with clone-aware reclaimable reporting - Hash cache with separate local and network thresholds, and thumbnail memory and disk caches - Real-time scan progress with detailed statistics - Extension filtering, ignore rules, folder-name and package/bundle exclusions - Symlink collapse (on by default), which also keeps hardlinked files from counting as duplicates - Minimum and maximum file size thresholds (default: 64 KiB and up) ## Tiers - **Free**: Full duplicate scans and complete results, with no truncation. A single removal moves at most 25 files or 500 MB, whichever comes first; files beyond the cap stay marked for the next pass. Similar-photo scans show the first 8 groups, whole - **Standard ($34.99, one-time, 2 seats)**: Removes the per-operation cap - **Pro ($64.99, one-time, 2 seats)**: Adds every Similars group and AI Curation across all of them - **Trial**: 7 days of Pro, once per device. When it ends the app returns to the free tier — there is no lock-out ## Technical Details - **Hashing algorithm**: BLAKE3 (cryptographic hash function) - **Duplicate pipeline**: Walk and admit → partition by size → head+tail prehash → full BLAKE3 → group - **Similar-photo pipeline**: Decode → 32×32 grayscale DCT perceptual hash → Hamming distance → mutual-pair grouping with corroboration gates - **On-device models**: Face detection, eye state, face mesh, an aesthetic scorer, and two embedding models — all bundled with the app, none downloaded, none networked - **Engine**: Rust end-to-end, with a custom Skia UI engine rather than a browser runtime - **Parallelism**: Multithreaded with streaming, chunked reads sized to the file - **Data integrity**: Deterministic grouping — the same folders with the same settings produce the same result, in the same order - **History storage**: Local SQLite database (versioned per major release) ## Honest limits - Duplicate identity is decided by BLAKE3 hash equality, not by a final byte-for-byte re-read - The default 64 KiB minimum size means smaller files, including zero-byte files, are outside a default scan - APFS clone detection is macOS-only; elsewhere reclaimable space is an upper estimate - Hardlinks have no separate accounting: collapsed away by default, counted as full copies when symlink collapse is off - Similar-photo grouping applies corroboration gates that reject weak matches, so it favors precision over completeness - Restoring a removed file needs a surviving byte-identical copy. Remove the last file holding those bytes and they are gone — DuoBolt does not read the raw disk and is not forensic recovery software - The Photos library scan is macOS-only and reads photos, not videos. It does not read albums, and it cannot see hidden photos — macOS does not show the Hidden album to other apps. Photos that only live in iCloud are set aside and counted, not judged from a thumbnail - On Windows, HEIC and AVIF previews require two free Microsoft Store extensions; without them those files are still found, hashed, grouped and removable ## Performance DuoBolt is benchmarked against Czkawka, dupeGuru, Gemini 2, and Duplicate File Finder by Nektony. The figures below were measured with DuoBolt 2.2.8 on an Apple M2 Max, macOS 27.0, on 20 September 2026, exact duplicates only, 1 KB minimum file size. Each tier is limited by something different, so the gaps are not the same across them: - Internal SSD (394 GiB, 1.69 million files), where per-file overhead decides it: 38s vs competitors’ 1m3s–7m23s - USB-C external SSD (797 GB, APFS), where the bus sets the pace: 5m17s vs competitors’ 5m39s–11m20s - NAS over SMB (1.09 TiB), where network latency decides it: 10s vs competitors’ 11s–3m39s On the NAS tier DuoBolt and Czkawka finish within the measurement’s resolution of each other. Absolute times are not comparable between tiers; each is a different dataset. Performance gains come from per-root parallelism, BLAKE3 worker hashing, streaming chunked reads, and overlapped I/O with hashing. ## Use Cases - Cleaning duplicate files from local drives and external storage - Culling bursts, exports and re-saves from photo libraries - Cleaning up a macOS Photos library that was imported more than once — the same photo under two or three import dates - Choosing between a RAW and its JPEG, or an export and its original, by looking at both in one frame and reading the light in each - Applying one rule to a whole library — keep the RAW, keep the copy that still has its EXIF, keep the one under a named folder — instead of deciding group by group - Deduplicating photo and video libraries - Managing large codebases and development directories - Server and NAS storage optimization ## Philosophy DuoBolt prioritizes clarity, precision, and transparency: - **Local-first**: All processing happens on your machine, including every model - **Review before action**: No removal without explicit confirmation - **Judgement stays with the user**: The photo engine explains what it measured and refuses to choose between genuinely distinct shots - **Auditability**: Scan History and Operations History record what was searched and what was done - **Reversibility**: Restore removed files from history, rebuilt from a verified surviving copy - **Honest accounting**: Reported recoverable space matches what the disk actually frees, including APFS clone awareness on macOS - **Limits cap the outcome, never the truth**: Free-tier scans and results are complete; only how much one operation moves is capped - **Safe by default**: Trash, archive folders, and protected folders ## Installation **Desktop** Download from: https://duobolt.app/download/ ## Resources - [Website](https://duobolt.app) – Official DuoBolt website - [Wikidata: DuoBolt](https://www.wikidata.org/wiki/Q139890152) – Canonical structured-data entry for the product - [Wikidata: Qoncept Apps](https://www.wikidata.org/wiki/Q139890306) – Canonical structured-data entry for the publisher - [Terms](https://duobolt.app/terms/) – Terms of service - [Privacy](https://duobolt.app/privacy/) – Privacy policy - [EULA](https://duobolt.app/eula/) – End-user license agreement ## Contact - X: [@QonceptApps](https://x.com/QonceptApps) - Company: [Qoncept Apps](https://qoncept.io)