1 Pick a folder of photos
Choose a folder on your computer. Everything runs in this browser tab — your photos are not uploaded anywhere.
2 Compute perceptual hashes
We resize every image to a small thumbnail, take its DCT, and turn the low-frequency components into a binary fingerprint. Images that look the same have similar fingerprints.
pHash resizes each image to
4 × hashSize pixels before fingerprinting.
Bigger = more sensitive to small differences, but the DCT cost scales as O(N³),
so anything past 64 takes serious time per image.
3 Review duplicate clusters
strict
loose
Higher values include looser matches. strict = only near-identical pairs
cluster; loose = the whole library collapses into one cluster.
—
Click an image to deselect it. Deselected images won't be in the output.
← / → navigate clusters.
4 Output
Pick an output folder. We'll copy every file in your input folder there, except for the duplicates you deselected.
Your browser doesn't support writing folders. We'll generate a manifest listing the duplicates you deselected, plus a small script you can run locally to copy the keepers into a new folder.
Saved three files. To use them:
Linux / macOS
chmod +x photodupe-cleanup.sh
./photodupe-cleanup.sh /path/to/input /path/to/output
Windows (PowerShell)
powershell -ExecutionPolicy Bypass -File photodupe-cleanup.ps1 ^
-In C:\path\to\input -Out C:\path\to\output
The
-ExecutionPolicy Bypass flag is one-shot — it only affects
this single command and doesn't change your global PowerShell settings.
photodupe-discards.txt
Plain text manifest, one POSIX-style relative path per line —
useful if you'd rather wire it into your own copy tool.