How to Find Duplicate Photos Online
You don't need to install desktop software to deduplicate a photo library. A 64-bit fingerprint and a few seconds of browser processing does the job.
The Problem with Photo Libraries
Phones shoot bursts. Messaging apps save received images alongside originals. Cloud syncs create copies across folders. Editing software exports variants at different sizes. After a year or two, a typical photo library contains hundreds of duplicates — and scrolling through thousands of thumbnails to find them manually isn't realistic.
Got duplicate photos? Upload up to 50 images and find matches in seconds — free, no signup.
Find Duplicate Photos →The Duplicate Photo Scanner handles this in the browser. Upload up to 50 images, and it computes a visual fingerprint for each one, compares all pairs, and groups the matches. No desktop app to install, no images sent to a server, no account required.
How Perceptual Hashing Works
File-level comparison is useless for duplicate detection. Take one JPEG, resave it at a different quality setting, and every byte in the file changes — a cryptographic hash like SHA-256 treats the two as completely different files. But they look identical to a human eye. That's the gap perceptual hashing fills.
The scanner uses dHash (difference hash). It takes each image, downscales it to 9×8 pixels in grayscale, and compares each pixel to its right neighbor. Brighter-left gets a 1, darker-left gets a 0. The result is a 64-bit binary string — a compact fingerprint of the image's horizontal gradient structure. Two photos that look the same produce nearly identical hashes, regardless of resolution, format, or compression level.
Comparing two fingerprints is a Hamming distance calculation — count the bits that differ. Zero means the hashes are identical (visual match). Five means they differ in 5 out of 64 positions (still very similar). Twenty means the images share some structure but look noticeably different. Our perceptual hashing guide goes deeper into the math and edge cases.
Step by Step — Finding Duplicates
Step 1 — Upload. Drop images into the Duplicate Photo Scanner. Drag from a folder, or click to browse. It accepts JPEG, PNG, WebP, GIF, BMP, and AVIF — up to 50 files per scan. Everything stays in your browser.
Step 2 — Scan. Click "Find Duplicates." The scanner computes a dHash for each image, then runs pairwise comparisons across all uploads. Fifty images means 1,225 comparisons — it finishes in seconds.
Step 3 — Review groups. Matches are grouped together. Each group shows the duplicate images side by side with their similarity score (Hamming distance). The lower the number, the closer the match. You can see which images are nearly identical and which are just visually similar.
Step 4 — Adjust sensitivity. The default threshold is 10 — a good middle ground. If you're getting false positives (unrelated images grouped together), lower it to 5–8. If you're missing duplicates that were cropped or edited, raise it to 12–16. For exact copies only, drop it to 1–3.
What Gets Detected — and What Doesn't
Detected reliably: resized copies, format conversions (JPEG→PNG→WebP), different JPEG quality levels, minor brightness or contrast adjustments, slight crops, and screenshots of the same photo.
Detected at higher sensitivity: heavier crops (if the main subject remains dominant in both), light color grading, watermarked vs. clean versions of the same image.
Likely missed: 90° rotations (dHash captures horizontal gradients — rotation changes the direction), heavy crops that remove more than half the image, mirrored/flipped versions (depends on content symmetry), and images of the same scene taken at different angles or times.
For comparing two specific images in detail — pixel differences, overlay views, structural similarity scores — the Similarity Scanner is the right tool. It's designed for "are these two the same?" rather than "which of these fifty match?"
Perceptual Hash vs Cryptographic Hash
This trips people up because "hash" appears in both. They solve different problems. A cryptographic hash (SHA-256, MD5) is a one-way function that produces a unique fixed-length output for each unique input. Change one byte, get a completely different hash. This confirms whether two files are byte-for-byte identical — useful for data integrity, not for visual matching.
A perceptual hash captures what the image looks like, ignoring the underlying bytes. Two copies of the same photo — one a 4MB original, one a 200KB compressed version — produce nearly identical perceptual hashes despite having zero bytes in common. For a full comparison of both approaches, read perceptual vs cryptographic hashing.
In practice, use both. The File Hash Scanner tells you which files are exact copies (SHA-256 match = safe to delete one). The Duplicate Scanner tells you which files look the same even if they differ at the byte level. Run the File Hash Scanner first to catch the easy wins, then the Duplicate Scanner to find the rest.
Real-World Workflows
Post-shoot cleanup. After a portrait session or event, you might have 200+ photos with burst-mode duplicates, bracketed exposures, and near-identical compositions. Upload batches of 50, scan, and identify the throwaway copies before importing into Lightroom or your archive. The Quality Analyzer can help pick the sharpest version from each duplicate group.
Forensic investigation. When examining image collections from multiple sources, perceptual hashing reveals if the same photo appears across different folders, devices, or accounts — even if it was resized or recompressed along the way. Pair it with the EXIF Checker to compare metadata across matching images: different EXIF data on visually identical images often indicates the copy was redistributed or edited. Our file hash guide covers the chain-of-custody workflow for evidence integrity.
Content moderation. If you manage user-submitted images, perceptual hashing detects reposts and previously flagged content. The 64-bit hash is small enough to store and compare against a database of known hashes at scale.
Storage cleanup. Cloud services, messaging apps, and backup tools create invisible duplication over time. A periodic scan catches photos you have three copies of and don't need three copies of. After deduplication, run the keepers through the EXIF Remover before sharing — duplicates often carry the same GPS and camera metadata as the original.
Common Questions
What's the difference between perceptual hashing and cryptographic hashing for finding duplicates? Cryptographic hashes (SHA-256, MD5) change completely if a single byte differs. Resaving a JPEG at a different quality, resizing, or converting formats produces a totally different hash — even though the image looks the same. Perceptual hashes like dHash work on visual structure: they compare gradient patterns in a tiny downscaled version. Two photos that look alike produce similar hashes regardless of format or resolution. Use cryptographic hashes for byte-for-byte confirmation, perceptual hashes for visual matching.
Can it detect duplicates if one image was cropped or rotated? Minor crops are usually caught at higher sensitivity (12–16), because the overall gradient structure survives. Heavy crops that remove most of the image will produce a different hash. Rotation is harder — dHash captures horizontal gradients, so a 90° rotation changes the direction entirely and produces a very different fingerprint.
How is this different from reverse image search? Reverse image search (Google Lens, TinEye, Yandex) finds copies of your image on the internet. The Duplicate Photo Scanner finds copies within the images you upload. It's a local comparison tool — nothing gets sent to a server or indexed anywhere. For reverse image search, the Reverse Image Search tool queries multiple engines at once.
Fifty Images, One Click, Zero Uploads
Photo deduplication used to require desktop software — install an app, point it at a folder, wait for it to index everything. The Duplicate Photo Scanner skips all of that. Drag in up to 50 images, click one button, get your duplicate groups in seconds. The browser does the math. Your photos stay on your machine. And the hash that made it possible fits in 8 bytes.