ByteScope

Similar Photo Finder

Pick a folder, let it group the bursts, resized copies and re-saved shots, keep the best of each group and move the rest aside — all in your browser, nothing uploaded.

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.

Photos

Pick a folder (Chrome, Edge or Opera on desktop) or drop photos here. Subfolders are included. Up to 10,000 photos per scan.

Drop photos or a folder here
folder
—
Photos
0

How alike is “similar”?

Untick it to compare with the perceptual hash only: much faster, no download, but it will not match crops or burst frames.

Random photos are easy to tell apart, but two shots of the same white wall can score as similar. Look at every group before you move or delete anything.

Honest limits

  • “Similar” is a model's opinion. It can put different photos in one group, for example two shots of the same white wall. Look at every group before you confirm.
  • The default is to move photos into _similar, not to delete them. Deleting here is permanent: no Recycle Bin, no Trash.
  • Choosing a folder, moving and deleting need a Chromium desktop browser. Elsewhere you can only mark photos and export the list.
  • The sharpness score is only a hint. It knows nothing about closed eyes or expressions.
  • HEIC photos are compared but have no capture time here. On a phone you can only drop photos in.
  • Photos are never uploaded.

Exact copies instead? Duplicate File FinderSort photos by date? Photo Organizer

Browser support

Renaming and deleting files where they sit needs the File System Access API, which only Chromium browsers ship. Everything below happens on your machine either way — nothing is ever uploaded.

capabilityChromeEdgeFirefoxSafari
Open a folder from diskwindow.showDirectoryPicker — Chrome/Edge 86 and later, desktop only✓supported✓supported✗not supported✗not supported
Rename a file in placeFileSystemFileHandle.move — Chrome/Edge 111 and later✓supported✓supported✗not supported✗not supported
Delete a file in placeFileSystemDirectoryHandle.removeEntry✓supported✓supported✗not supported✗not supported
Remember the folder for next timethe handle is kept in IndexedDB on this device; permission is asked again✓supported✓supported✗not supported✗not supported

detected in this browser

  • window.showDirectoryPicker …
  • FileSystemFileHandle.move …
  • indexedDB …

On Firefox or Safari, or on any phone or tablet, this page can explain the job but cannot do it. Open it on desktop Chrome or Edge.

About this tool

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.

Frequently asked questions

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.