# Similar Photo Finder

> Find and delete similar photos in your browser: burst shots, resized copies and re-saved screenshots, grouped by perceptual hash and an AI model. No upload.

- URL: https://bytescope.dev/en/similar-photos/
- Locale: en · Also: [ja](https://bytescope.dev/ja/similar-photos.md) · [zh-Hant](https://bytescope.dev/zh-Hant/similar-photos.md)
- Runs: Photos are decoded in a worker inside this tab and never sent anywhere. The only download is the 24 MB comparison model, fetched once and kept in the browser.
- Requires: Full mode needs Chrome, Edge or Opera on desktop (File System Access API) to read a folder and write results next to it. Firefox and Safari get a reduced mode: pick the folder through a file input and download the results.
- Updated: 2026-09-08

## What it does

Three thousand photos off a phone, and a good share of them are the same moment: the burst you held the shutter on, the shot you re-saved after cropping, the copy a chat app shrank on the way through, the screenshot of the screenshot. A duplicate file finder cannot help, because none of those files are byte-identical. This page is a near duplicate image finder that runs entirely in your browser: pick a folder, it groups photos that look alike, suggests the one worth keeping in each group, and moves the rest into a `_similar/` folder — or deletes them, if you ask it to. Nothing is uploaded. The photos are decoded in a worker in your tab, and the model that compares them is downloaded once and kept in the browser.

### Two ways of saying “similar”

Every photo goes through two tests at once. The first is a 64-bit perceptual hash, which is good at exactly one thing: recognising the same picture after it has been resized or re-compressed, so an original and the copy a messenger shrank land in one group. It does not survive cropping. The second is an image feature vector from Meta's DINOv2-small model (Apache-2.0), a 24 MB download that happens once and is cached. That is what catches crops, burst frames and shots of the same scene from almost the same spot. Both thresholds are sliders, and the vector comparison is only made between photos taken within a time window you choose, 5 minutes by default, so a beach from one holiday is not matched against a beach from another year; photos without a capture time are still compared. Untick the burst option and only the hash runs, which is much faster and needs no download. If the download fails, the page falls back to the hash on its own and tells you why.

### Which one to keep

Each group shows thumbnails, capture time, pixel dimensions, file size and a sharpness score, and marks one photo as the suggested keeper: the largest in pixels, then the sharpest, then the biggest file, with the reason written under it. Sharpness is the variance of a Laplacian filter, a measure of edge contrast, so it can tell a focused frame from a shaky one but knows nothing about closed eyes or expressions. Flip any photo between keep and remove as you like; the one rule is that every group keeps at least one photo, and a selection that would empty a group is refused rather than quietly trimmed. On a laptop a thousand photos take a few minutes the first time; open the same folder again and the stored results come back much faster.

### Move by default, delete only if you mean it

The default action is not deletion. The photos you remove are moved into a `_similar/` folder at the top of the one you picked, keeping their subfolder paths, and that folder is skipped on the next scan, so nothing is matched against itself twice. Choose delete instead and the File System Access API removes the files outright: no recycle bin, no undo in this tool. Before either action you see the full list and confirm it. The honest caveats: “similar” is the model's opinion, and two photos of the same white wall can land in one group, so look at every group before you confirm. `HEIC` photos are compared but carry no capture time here. And choosing a folder, moving and deleting need a Chromium desktop browser; elsewhere, and on phones, you can drop photos in, mark them and export the groups as `CSV`, but the files themselves are not touched.

## Limits

Does not group photos by who is in them, does not detect closed eyes, does not tidy cloud albums like Google Photos or iCloud, and does not upload photos.

## FAQ

### Are my photos uploaded?

No. Each photo is decoded in a worker inside your browser tab, where the hash, the sharpness score and the feature vector are computed; the comparison and the grouping happen there too. The only download is the 24 MB model, fetched once from a pinned URL and kept in the browser cache, and no request ever carries your pictures. The page is a static file with no server behind it.

### How is this different from the duplicate file finder?

The duplicate file finder reports files whose bytes are identical and nothing else, which makes it safe to run mechanically. This page is for everything that tool deliberately ignores: the same photo at two sizes, the original and the re-compressed copy, a crop, and the eleven frames of a burst. Because “similar” is a judgement rather than a fact, the defaults here are more cautious: photos are moved aside rather than deleted, and you are asked to look at every group first. If you only want exact copies, use the duplicate file finder instead.

### Why did it put two different photos in one group?

Because to the model they look alike. The feature vector describes what is in the picture, and two shots of the same plain wall, the same sky or the same tiled floor can be closer to each other than two frames of a genuine burst. Random holiday photos are easy to tell apart; near-empty scenes are not. The thresholds are sliders if a folder is being grouped too eagerly, but the real safeguard is the review step: look at every group before you confirm a move or a deletion.

### Can it pick the best frame of a burst?

It can pick the sharpest and largest one, and it says why. The suggested keeper is chosen by pixel dimensions first, then by a sharpness score based on the variance of a Laplacian filter, then by file size. That score separates a focused frame from a blurred one, but it is only looking at edge contrast: it has no idea whether someone blinked, smiled or looked away. Treat the suggestion as a starting point and override it whenever your eyes disagree.

### What happens to the photos I remove, and can I undo it?

By default they are moved into a `_similar/` folder at the top of the folder you picked, with their subfolder structure preserved, so undoing is just moving them back. If you switch to delete, the File System Access API removes the files outright: they do not go to the recycle bin or the trash, and neither this tool nor your operating system offers an undo. The confirmation screen lists every file and says so again. Both actions refuse to empty a group: at least one photo per group always stays where it is.

### How long does a scan take, and what is the 24 MB download?

The download is Meta's DINOv2-small image model (Apache-2.0), used to compare photos that a hash cannot match, such as crops and burst frames. It is fetched once, checked against its expected size and digest, and kept in the browser cache. With it enabled, a thousand photos take a few minutes on a laptop the first time; the results are stored, so opening the same folder again is much faster. Untick the burst option and only the hash runs, which needs no download and is quicker still. Folders over 10,000 images are declined; pick a subfolder instead.

### Which browsers can move or delete photos? What about HEIC?

Choosing a folder, moving into `_similar/` and deleting all rely on the File System Access API, which only Chromium desktop browsers such as Chrome, Edge and Brave provide. In Firefox, Safari and every mobile browser you can still drop photos or folders in, see the groups, mark what you would remove and export the list as `CSV`, but the page cannot touch the files. `HEIC` photos from iPhones are decoded and compared like any other, but their capture time is not read here, so they are compared without a time window.

## Related tools

- [Duplicate File Finder](https://bytescope.dev/en/duplicate-finder.md) — Find exact duplicate files in a folder by size, then SHA-256.
- [Photo Organizer](https://bytescope.dev/en/photo-organizer.md) — Sort a photo folder into dated subfolders, with an undo.
- [Folder Size](https://bytescope.dev/en/folder-size.md) — See which folders and file types take up the space.
