← Back to blog

Why Sakarto Might Be the Most Versatile Duplicate Finder You've Never Installed

Sakarto brings 7 visual and 3 audio algorithms straight to your browser with zero uploads. We dive into the tech, the algorithms, and why it beats installing native tools for daily cleanup.

Sakarto duplicate finder interface showing matched image and audio groups

What you’ll learn in this post:

  • Why perceptual fingerprinting beats byte-for-byte matching
  • How Sakarto runs entirely in your browser with zero network calls
  • The 7 visual algorithms and 3 audio algorithms explained
  • When to use Find Duplicates vs. Reverse Search

Installing a dedicated piece of software just to find duplicate files feels like bringing a cannon to a knife fight. You download an installer, grant it sweeping filesystem permissions, wait for it to index your drives, and then—if you’re lucky—it finds a few obvious byte‑for‑byte copies.

But duplicates are rarely that simple. A 12‑megapixel JPEG and its 200‑pixel thumbnail share zero bytes. A 320 kbps MP3 and its 128 kbps re‑encode are structurally unrelated at the bit level. The tools that actually solve this problem rely on perceptual fingerprinting—and they usually require a native install.

Sakarto takes a different path. It’s a purely static web application that runs entirely inside your browser, requires zero installation, and after the initial page load, sends absolutely zero network requests. No telemetry. No CDN calls for fingerprinting libraries. No data leaving your machine. And yet, it packs seven visual algorithms and three audio fingerprinting methods—a toolkit that rivals or exceeds what most native utilities offer.


The architecture of zero trust

Sakarto’s privacy promise is unusually verifiable. Open DevTools, switch to the Network tab, and run a full folder scan. You’ll see nothing but the initial page assets. No API calls, no analytics pings, no WebSocket connections. Every file is read via the File System Access API (Chromium browsers) or a fallback file picker, and every fingerprint is computed in‑memory using JavaScript or WebAssembly.

Zero trust, verifiable. Open DevTools → Network tab during any scan: zero outbound requests. Your files never leave your device.

Image hashing runs in a Web Worker via OffscreenCanvas, so the main thread stays responsive even when scanning thousands of JPEGs. Video processing pauses when you switch tabs—browsers aggressively throttle background video decoding—but resumes instantly when you return. Audio fingerprinting, by contrast, keeps running regardless of tab focus, because audio decoding isn’t subject to the same aggressive throttling.

For the heavier lifting—ORB feature matching and Essentia audio analysis—Sakarto leans on WebAssembly. OpenCV.js and Essentia.js are loaded once per session and then run locally, just like any other JavaScript module. There is no cloud component, no proxy, no server‑side fallback.


The visual toolbox: more than just hashing

Most duplicate finders offer one or two perceptual hashes, usually pHash or a derivative. Sakarto gives you seven distinct algorithms, each tuned for a different failure mode:

  • Color Signature divides the image into a 24×24 regional grid and measures YUV values. It’s the only algorithm here that actually compares colour rather than luminance—essential for photo collections where the same scene appears in multiple colour grades. See the Reverse Search version if you already have a reference file.

  • aHash (Average Hash) is the fastest option. It downsamples to 16×16, converts to grayscale, and thresholds against the mean. Perfect for exact copies and resized versions where speed is the priority. Try the Reverse Search variant for reference‑first workflows.

  • BlockHash takes a coarser approach, averaging brightness across 16×16 blocks. The block‑level averaging absorbs JPEG compression noise better than pixel‑level methods, making it the go‑to for heavily re‑encoded images. Also available as Reverse Search.

  • dHash (Difference Hash) compares each pixel to its right neighbour, encoding brightness gradients rather than absolute values. This makes it robust to exposure shifts and HDR‑to‑SDR conversions. Reverse Search version works the same way.

  • pHash (Perceptual Hash) uses a Discrete Cosine Transform—the same underlying math as JPEG compression—to extract low‑frequency structural data. It’s the most stable hash across format conversions and mild editing. Reverse Search with pHash is a popular combination.

  • wHash (Wavelet Hash) applies a Haar wavelet decomposition to capture structure at multiple zoom levels simultaneously. It offers pHash‑like quality at a lower CPU cost. The Reverse Search variant is equally fast.

  • ORB (OpenCV Feature Matching) is the outlier. Instead of a global hash, it detects hundreds of local keypoints (corners, edges, blobs) using FAST and describes them with BRIEF descriptors. It matches keypoints spatially, which means it can handle rotation, cropping, and perspective warping—something no hash algorithm can do. The ORB Reverse Search is uniquely powerful for finding transformed copies of a single reference image.

The inclusion of ORB is notable. Most browser‑based tools don’t touch it because OpenCV.js is a large WASM payload and keypoint matching is O(n²) in the worst case. Sakarto loads it on demand and limits comparisons to files with similar aspect ratios, keeping the performance hit manageable for typical folder sizes.


Audio fingerprinting: three ways to hear a duplicate

Audio duplicates are even more deceptive than images. Two recordings of the same song can have wildly different waveforms if one is a live performance, a re‑master, or a different bitrate encode. Sakarto handles this with three dedicated engines:

  • Chromaprint is a pure‑JavaScript spectral hash. It has no external dependencies—no CDN, no WASM—and works offline. It’s the fastest audio algorithm and reliably identifies re‑encoded tracks, different bitrates, and podcast episodes saved in multiple containers. The Reverse Audio Search version is equally fast.

  • Essentia HPCP loads Essentia.js via WebAssembly and computes a 12‑bin Harmonic Pitch Class Profile. HPCP captures the musical notes and harmonics present in the signal, making it uniquely capable of matching cover versions, live recordings, and transpositions. Reverse Audio Search with Essentia is the go‑to for finding a specific song’s variations.

  • Meyda MFCC extracts 13 Mel‑Frequency Cepstral Coefficients—originally developed for speech recognition—and captures the timbral “texture” of the sound. It’s ideal for podcasts, voice memos, and sound effects. The Meyda Reverse Search works well for matching a specific speaker’s voice.

All three audio algorithms continue processing in the background even when you switch browser tabs—a small but important UX detail that makes scanning large music libraries feel frictionless.


Find Duplicates vs. Reverse Search: two workflows, one engine

Sakarto exposes two distinct entry points:

Find Duplicates is the all‑in‑one mode. You pick a folder, choose an algorithm, and Sakarto groups every similar file it finds. Results appear live as the scan progresses—you don’t have to wait for the full run to start reviewing and deleting. Groups are shown as cards, with the representative file highlighted and duplicates marked with a check badge.

Reverse Search flips the workflow. Instead of grouping everything, you upload a single reference file first. Sakarto then scans a folder and returns only the files that look or sound like that specific reference. The reference is pinned at the top with a protected badge—it cannot be accidentally moved or deleted. This mode is invaluable when you know exactly which file you’re looking for copies of, such as a specific logo variant or a particular vocal take.

Both modes feed into the same bulk‑operation pipeline: select any set of files, and you can delete, move, or rename them in bulk. Queue Mode stages these operations for review before execution—a critical safety net because the File System Access API’s remove() method bypasses the OS recycle bin entirely.


The trade‑offs

No browser‑based tool is perfect, and Sakarto has clear limitations. The most significant is memory: scanning 50,000+ images on a machine with less than 8 GB RAM will cause slowdowns, because all fingerprints are held in memory during the session. Cross‑folder scanning isn’t supported—you get one folder and its subdirectories, not arbitrary drive‑wide sweeps. And while Firefox and Safari can scan and display results, the File System Access API is Chromium‑only, so file moving and deletion don’t work outside Chrome and Edge.

There’s also the Fast Mode trade‑off. For JPEGs, Sakarto reads the embedded EXIF thumbnail (≈160×120 px) instead of decoding the full file, which makes scans 5–10× faster. In the rare case that two JPEGs have identical full‑resolution content but different embedded thumbnails, that match will be missed. You can disable Fast Mode in the settings, but you’ll pay the performance cost.


The verdict

Sakarto isn’t trying to replace Czkawka for 200,000‑file archival deduplication, nor does it pretend to match dupeGuru’s decade of audio‑metadata refinement. But for the 90% of users who just want to clean up a photo library, purge a cluttered downloads folder, or find every copy of a specific reference image without installing anything—and without trusting a third‑party server—Sakarto is a genuinely compelling tool.

The browser has finally matured to the point where perceptual hashing, keypoint matching, and audio fingerprinting can run locally with acceptable performance. Sakarto proves that you don’t need a native installer to do serious file deduplication. You just need a modern browser, a few hundred kilobytes of static assets, and a zero‑trust mindset.


Ready to try it? Pick your workflow:

July 26, 2026
⏱ 8 min read
🇬🇧 English