Find duplicate and near-duplicate images with perceptual hashing, entirely in your browser.
Finding identical files is trivial — compare bytes. Finding visually identical images is the real problem: the same photo reposted has been resized, recompressed, cropped, or watermarked, and none of those copies match byte-for-byte. The solution is the perceptual hash: an algorithm reduces each image to a small fingerprint that captures its visual structure, such that visually similar images produce similar fingerprints. Comparing fingerprints — a Hamming distance, counting differing bits — then groups images that look the same regardless of their file differences.
| Method | Catches | Misses |
|---|---|---|
| Checksum (MD5/SHA) | Byte-identical copies | Any edit, even re-saving |
| Average hash | Resizes, compression | Crops, color shifts |
| pHash (DCT-based) | Resizes, compression, minor crops | Heavy edits, flips |
| Feature/embedding matching | Crops, collages, heavy edits | Cost, complexity |
The practical sweet spot for local tools is perceptual hashing with a distance threshold around ten bits: near-zero false positives on distinct photos, reliable grouping of reposted copies.
Select a folder's worth of images and it computes a perceptual hash of each, entirely in your browser, then groups everything whose fingerprints fall within similarity tolerance. Nothing uploads — which matters if you are sorting a private library. Typical uses: cleaning photo libraries after years of imports from three phones, deduplicating a website's image assets before a migration, and finding the reposted copies within a downloaded set.
The same technique scales from tidying to enforcement. A photographer who publishes work can hash their originals and — with the right tooling — compare against hashes of images found elsewhere, because a stolen copy that was resized for the thief's site still produces a similar fingerprint. At library scale, with continuous web monitoring and evidence capture, this becomes image-theft detection; that monitoring-and-enforcement layer is what authAspect does for creators, with perceptual matching as one of its core mechanisms.
When tuning tolerance: distance zero to five almost always means the same image; six to twelve usually means edited versions worth reviewing; beyond fifteen you are mostly finding similar-looking photos, which is useful for mood-boards and less useful for deduplication. When in doubt, run at a strict threshold, review the groups, then widen. Your definition of a duplicate is a judgment call the math can only approximate.
Local-first deduplication is a privacy decision as much as a technical one: family photo libraries, client shoots, and unreleased work should not need a round-trip through anyone's server just to find internal copies. Browser-based hashing keeps the images on your machine by construction — there is no upload path to audit because there is no upload. The same principle scales up: serious photo management and theft-detection systems process originals where they live rather than where it is convenient, and it is a fair question to ask of any tool before handing it a decade of family photos or a client's unreleased campaign.
Perceptual hashing is a general similarity tool, and the jump from "these two files are the same photo" to "this photo appeared on a site I never authorized" is a change of index, not of mechanism. That is the trajectory worth knowing: local dedup today, original-vs-web matching tomorrow, continuous monitoring the day after. For creators whose images are their income, that last step — with alerting and takedown tooling attached — is the operational layer authAspect runs, and the jump in value from "duplicate finder" to "theft response system" is exactly the jump from tool to platform.
Deduplication's irreversible step deserves one guardrail: verify groups before deleting, because hash similarity occasionally groups distinct photos of the same scene — a burst of near-identical shots is exactly what you bought the burst for. Keep the largest or highest-quality member of each group by default, export the deletion list before executing it on any irreplaceable library, and remember that "duplicate" and "redundant" are different judgments: the second is yours to make, not the algorithm's. A tool this simple earns trust by staying on its side of that line.
The tool is sitting above this text and works on whatever folder annoys you most — downloads, camera dumps, the assets folder of a website. One run usually surfaces a surprising number of groups, and the mental load of "I should clean that up someday" converts into a reviewed list you can act on in minutes. Local, private, reversible if you keep the guardrails. That is the whole pitch.
The local algorithm comfortably handles a few hundred images per run in the browser; beyond that, expect the tab to work in visible stages and consider batching. Hashing cost scales with image dimensions, so the tool downsamples before fingerprinting — results are identical, speed is not. For libraries in the tens of thousands, desktop dedup tools using the same algorithms run faster simply by avoiding the browser layer, and the concepts on this page transfer directly.
Know the blind spots before trusting any fingerprint method: flipped and rotated images defeat simple hashes unless the tool checks transforms too; heavy crops that keep less than half the frame register as different pictures; and artistically reworked versions — recolored, collaged, redrawn — share too little structure to match. If your use case involves adversarial copiers (people who crop your watermark out), expect them to fall outside hash tolerance, and expect feature-matching or human review to pick up what the fingerprint misses. The tool is a fast first pass, not a complete net.