ByteScope

Duplicate File Finder

Walk a folder, group files by size, hash only the candidates, and delete the copies you choose — locally, and knowing that deleted really means deleted.

The folder is opened by the browser on your own machine. Files are read here to hash them and never sent anywhere — no upload, no account, no copy on a server.

Folder

Pick one folder. Everything inside it is scanned, subfolders included. Files are grouped by size first, and only files that share a size are ever read.

folder
files
0
to hash
0 · 0 B

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 onlysupportedsupportednot supportednot supported
Rename a file in placeFileSystemFileHandle.move — Chrome/Edge 111 and latersupportedsupportednot supportednot supported
Delete a file in placeFileSystemDirectoryHandle.removeEntrysupportedsupportednot supportednot supported
Remember the folder for next timethe handle is kept in IndexedDB on this device; permission is asked againsupportedsupportednot supportednot 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

Point this at a folder and it walks everything inside, subdirectories included, looking for files that are exact byte-for-byte copies of each other. The trick that makes it fast is refusing to do unnecessary work: files are grouped by size first, and a file whose size is unique across the whole tree cannot be a duplicate of anything, so its contents are never read at all. Only files that share a size get hashed — a streaming SHA-256, computed in chunks, so a 4 GB video never sits in memory. In a typical photo library most files are never hashed; the scan is mostly directory listing.

What counts as a duplicate

Two files are reported as duplicates only when their SHA-256 digests match, which in practice means the contents are identical to the last byte. That is a deliberately narrow definition. This tool does not find photos that are almost the same — the same shot at two resolutions, the same image saved as JPEG and as PNG, two frames taken a second apart. Finding those is perceptual hashing, a different technique with a different failure mode (it guesses), and it is not in this version. Everything reported here is exact, which is what makes it safe to act on mechanically.

Choosing what to keep

Duplicates are shown in groups, with thumbnails for images so you can see what you are deciding about. Within each group you pick the survivor — by hand, or with a rule: keep the oldest, keep the newest, or keep the one with the shortest path, which usually means the copy in its original location rather than the one buried in backup/backup2/misc. Before anything happens you see the exact list of files that will be deleted, and nothing is touched until you confirm it.

Deleted means deleted

Be clear about this before confirming, not after: files deleted here do not go to the recycle bin or the trash. The File System Access API removes them outright, and this tool cannot bring them back — recovery software might salvage something, but that is a gamble, not a plan. The protections are in the flow instead: exact-match-only detection, an explicit review list, per-group keep rules, and a confirmation step. Read the list. It is the last step that can save you.

Frequently asked questions

Are my files uploaded to find duplicates?

No. The directory walk, the size comparison, the SHA-256 hashing and the thumbnails all run in your browser — hashing streams each candidate file in chunks through a local worker, and the bytes go nowhere. The page is a static file with no server behind it, so there is no upload path even in principle; the network tab stays empty through an entire scan. That matters here more than usual, because the folder you deduplicate is often the folder with everything in it.

How does it decide two files are identical?

In two stages, and the order is the point. Size is compared first, because it is free — it comes with the directory listing — and because files of different sizes cannot be identical. Only files sharing a size get their contents read and hashed with SHA-256; matching digests on same-sized files means the contents are identical for every practical purpose. The two-stage design is why it is both fast and exact: most files are eliminated without being read, and nothing is ever declared a duplicate on a guess.

Can deleted files be recovered?

No. Files deleted here are not moved to the recycle bin or the trash — the File System Access API deletes them outright, and there is no undo for it in this tool or in your operating system's usual places. Dedicated recovery software sometimes rescues recently deleted data, but nothing about that is guaranteed. Treat the confirmation dialog as final, because it is: read the deletion list before you accept it.

Which browsers does it work in?

Chromium desktop browsers — Chrome, Edge, and derivatives like Brave. Both halves of the job need the File System Access API: picking a folder and walking it, and deleting the copies you selected. Firefox and Safari have not implemented it, so the page shows an honest support notice there instead of a tool that cannot finish. Mobile browsers are out for the same reason.

Does it find similar photos, like the same shot at two sizes?

No — and it will not pretend to. Two exports of the same photo at different resolutions, or the same image as JPEG and as PNG, are different bytes, so they hash differently and are never reported. Finding “visually similar” images takes perceptual hashing, which judges likeness rather than identity and can be wrong in both directions; it is not in this version. The upside of exact-only matching is that every group shown is a certainty, which is exactly what you want when the next step is deletion.