Local Duplicate Image Finder
Scans a folder you pick on your own device for duplicate and visually similar images, using a perceptual hash to catch near-identical images (resizes, recompressions, minor crops) together with an on-device vision model's embeddings to catch looser matches a hash alone would miss (a different crop, angle, or edit of the same subject). Every group is shown for review before anything happens — confirming then copies matched images into new, clearly-named subfolders, never modifying, moving, or deleting an original file. Built on the browser's File System Access API for real folder read/write access, which is why there's a folder picker rather than a typed path, and why this currently only works in Chromium-based browsers (Chrome, Edge, Opera, Brave) — not Firefox or Safari. Nothing in the folder is ever uploaded; hashing and the vision model both run entirely on your device.
About this tool
This tool scans a real folder on your device for duplicate and visually similar images, using two different techniques together: a perceptual hash (dHash) that catches near-identical images — the same photo resized, recompressed, or lightly cropped — and an on-device vision model's embeddings, which catch images that are visually similar but not near-identical (a different crop, angle, or edit of what's recognizably the same subject). It's built on the browser's File System Access API, which is why there's a folder picker rather than a typed path — no website can read an arbitrary filesystem path for the same reason yours can't be typed into any other site either, so this asks the browser's own native picker instead, and only ever gets access to whatever folder you actually choose there. This is genuinely the first tool on the site that writes anything back to your disk rather than only producing a download, so it's built cautiously: nothing is written until you review every group of matches and explicitly confirm, and even then it only ever copies matched images into new, clearly-named subfolders — it never modifies, moves, or deletes an original file. Because it's built on the File System Access API, it currently only works in Chromium-based browsers (Chrome, Edge, Opera, Brave) — Firefox and Safari don't support it yet, and the tool says so plainly rather than half-working there.
What you can do
- Scan a real folder on your device — no upload, no zip file, pick it directly
- Finds near-identical images (perceptual hash) and visually similar ones (AI embeddings)
- Copies matches into new grouped subfolders — originals are never touched
- Everything runs on your device; nothing in the folder is ever uploaded
How to use
Step 1
Choose a folder
Your browser's own folder picker — this tool only ever reads and writes inside whatever you pick there.
Step 2
Find duplicates
Every image is hashed and fed through an on-device vision model to find near-identical and visually similar matches.
Step 3
Review, then organize
See every group before committing to anything, then copy matches into new subfolders with one click.
Example
A folder with a few photo variants might come back grouped like this:
Group 1
beach.jpg, beach-edited.jpg, IMG_0231.jpg (same photo, resized/recompressed — caught by hash)
Group 2
sunset-1.jpg, sunset-crop.jpg (same subject, different crop — caught by embeddings)
Each group becomes its own subfolder (group-1, group-2, …) inside a new tuliq-duplicates-<timestamp> folder — the originals stay exactly where they were.
How your data is handled
This tool is labeled 🔵 Local AI: every image is read directly from your device via the File System Access API, hashed and embedded entirely on your device via a local WebAssembly/TensorFlow.js model, and never uploaded anywhere. The one network request this tool makes is downloading the vision model (~17MB) once, cached by your browser afterward — every folder you scan after that runs completely offline. Writing the grouped copies back to disk also happens entirely locally, through the same browser permission you already granted when you picked the folder.
Frequently asked questions
Why do I have to pick a folder instead of typing a path?+
No website can read an arbitrary path on your device's filesystem — that's blocked in every browser, for the same reason it's blocked on every other site, not a limitation specific to this tool. The File System Access API's folder picker is the real, secure equivalent: you choose exactly which folder to grant access to, and this tool never sees anything outside it.
Does this move or delete my original files?+
No — it only ever copies matched images into new subfolders. Every original file stays exactly where and as it was, untouched. If you want to actually clean up duplicates afterward, that's a deliberate manual step you take yourself once you've reviewed the results.
What's the difference between the two detection methods?+
The perceptual hash catches images that are essentially the same picture — a resize, a re-save at a different quality, a small crop. The vision-model embeddings catch a looser kind of match: a different crop, angle, or edit of what's recognizably the same subject, which a pixel-level hash wouldn't consider close enough. Both run on every scan; the embeddings are only computed for images the hash pass didn't already group, to keep things reasonably fast.
Why does this only work in some browsers?+
It's built on the File System Access API for real folder read/write access, which only Chromium-based browsers (Chrome, Edge, Opera, Brave) currently implement. Firefox and Safari don't support it at all — there's no workaround for that from inside the page, so the tool says so upfront rather than silently failing.
Will it group two different photos that just happen to look similar?+
It's possible, especially with the embeddings pass — cosine similarity is a heuristic, not a certainty, and two distinct but visually similar photos (same location, same subject type) can occasionally cross the threshold. That's exactly why every group is shown for review before anything is copied, rather than being organized automatically without a look.
How slow is it on a large folder?+
The hash comparison stays fast into the low thousands of images. The embedding comparison is more expensive and, in the worst case (a folder with very few actual duplicates), scales closer to the square of the image count — disclosed plainly rather than glossed over. It won't freeze, but a large, mostly-unique photo library can take a real while.