Quick Answer
A photo deduplicator scans a photo library and groups files that are identical or visually near-identical, so you can keep one copy of each and reclaim storage. This free tool hashes every photo in your browser — a 9×8 difference hash for look-alikes and SHA-256 for exact byte copies — clusters them, and lets you pick keepers, export a ZIP or a deletions manifest, or delete in place. No uploads, no account.
How It Works
Pick a folder to scan recursively, select individual files, or load the synthetic sample set — images only, nothing is uploaded
Press Scan photos: every image gets a 9×8 dHash, an 8×8 aHash, and a SHA-256 of its bytes, four files at a time, with a progress bar and cancel
Set the match sensitivity — hamming distance 0–2 near-identical, 3–8 edits and recompression, 9+ similar poses — and review each group’s thumbnails, sizes, dates, and difference-from-keeper
Keep the deterministic suggestion (highest resolution, then larger file, then earlier date) or pick your own keeper per group
Download the keepers ZIP or the deletions CSV manifest — or, in Chrome or Edge after a folder scan, confirm the exact list and delete in place
Key Facts
- Scan a whole folder recursively or hand-picked files — JPEG, PNG, WebP, GIF, BMP, AVIF
- Perceptual dHash plus SHA-256 byte hashing groups identical files and edited copies alike
- Adjustable match sensitivity (hamming distance 0–16) with honest labels for each range
- Deterministic keeper suggestion: highest resolution, then larger file size, then earlier date
- Keepers export as a ZIP; deletions export as a CSV manifest of full original paths
- Optional delete-in-place in Chromium browsers, gated on an explicit per-batch confirmation
- Nothing is uploaded — hashing, clustering, and deletion all run in this browser tab
- Only the sensitivity setting is stored locally; photo data is never stored or sent
Frequently Asked Questions
How does a photo deduplicator decide two photos are duplicates?
Every photo is scaled to a 9×8 grayscale grid and each adjacent pixel pair is compared, producing a 64-bit difference hash (dHash). Two photos whose hashes differ by only a few bits — the hamming distance — are visually near-identical, so they group together when the distance is at or below your sensitivity setting. Separately, a SHA-256 hash of the file bytes catches exact copies, which always group regardless of the slider.
Is this photo deduplicator free?
Yes — free with no account, no watermarking, and no file limits beyond what your browser can handle. The site is funded by display ads, not by gating features.
Are my photos uploaded anywhere?
No. Photos are opened with the browser file picker, decoded with createImageBitmap, and hashed on a canvas and with crypto.subtle inside this tab. There are no network calls carrying photo data. Delete-in-place only touches the folder you explicitly re-pick and confirm, and it removes exactly the files listed, nothing else.
How does it compare to paid duplicate photo finders?
Paid desktop apps include PhotoSweeper ($9.99 on the Mac App Store) and MacPaw’s Gemini 2 (one-time paid license), and dupeGuru is a free open-source desktop option. They install locally and can watch folders continuously. This tool runs in any modern browser with nothing to install, which trades background monitoring for zero-setup, private, one-shot cleanup — with the same perceptual-hashing approach those apps use.
Which image formats are supported?
Anything your browser can decode through createImageBitmap — typically JPEG, PNG, WebP, GIF, BMP, and AVIF. Files are filtered by extension before scanning. HEIC/HEIF from iPhones is generally not decodable by browsers, so convert those to JPEG first; undecodable files are listed as errors and never break the scan.
What do I do with the deletions CSV manifest?
The CSV lists the full original path of every non-keeper, plus size, dimensions, date, and SHA-256, so you can spot-check and delete the files in Explorer or Finder — or feed the list to a script. In Chrome or Edge you can instead use delete-in-place: the tool has you re-pick the scanned folder, matches files by path and name inside it, and deletes only the listed files after an explicit confirmation.