Products
TTS Studio — AI voice studio Crucible — forensics & OSINT suite Recovery Lab — data recovery & repair Dedupe Studio — merge duplicates in-browser GuardDex — family security DNS Fortress — private home DNS Richey Authenticator — private 2FA Services Approach Downloads Portal Open the tool
🪞 Dedupe · Studio

Merge duplicates. In your browser. Nothing leaves.

A private workbench for cleaning up years of duplicated contacts — with photos, files, bookmarks, and CSVs coming next. Drop your export in, review the merges the tool proposes, download a clean copy. Everything runs in this tab.

No account. No upload. Not even a cookie. Works offline. Saves as a single HTML file you can email to a friend.

Duplicates keep piling up. This one fixes them.

Every account you've ever signed into left a copy of your contacts somewhere — Google, iCloud, work Exchange, an old Yahoo backup. They drift apart, gain typos, and eventually you have thirty versions of "Bobby Fennell". Dedupe Studio pulls them together, shows you which merges are safe and which need eyes, and hands back a clean file.

What it dedupes

Contacts today; the same review pattern rolls out to everything else you've been meaning to clean up.

Live now
👥

Contacts

Drop a .vcf or .csv. Union-find grouping on name, phone, and email, with fuzzy name matching for the "Bob vs Robert" cases. Auto-safe merges get one-click accept; conflicts get flagged for review.

Live now
🖼️

Photos

Difference-hash (dHash) duplicate detection for JPG, PNG, GIF, and WebP. Point it at a folder — Chromium browsers can walk the tree via the File System Access API, others fall back to drag-drop. Groups near-duplicates, auto-picks the largest as keeper, and generates a bash delete script you review before running.

Live now
📁

Files

Drop a folder, group by SHA-256. Bit-exact only, hardware-accelerated by crypto.subtle — sweeps ~/Downloads in seconds, chews through media stashes at 30–60 seconds per 10 GB. Handles individual files up to about 2 GB.

Live now
🔖

Bookmarks

Drop Netscape HTML exports from Chrome, Edge, Brave, Firefox, or Safari — one file or many. Strips tracker params (utm_/fbclid/gclid) as it normalizes URLs, catches trailing-slash and http-vs-https twins, keeps folder structure, and emits a merged HTML anyone can import back.

Live now
📄

Generic CSV

Drop any comma-separated file. Auto-detects key columns for Bitwarden, Chrome, and Firefox password exports, and switches on password mode — a critical-pill lights up when the same URL + username stores different passwords, so you can spot the real accounts hidden inside your dupe list.

Ideas welcome
💡

What else?

Tell us which stack of duplicates keeps you up at night — emails, calendar events, saved articles, browser passwords. If you've got a mess, we've probably got a review pattern for it.

How the review flow works

The tool does the boring work — grouping and merging safely. You spend your attention only on the cases it cannot decide alone.

Drop or pick your file.

vCard (.vcf) or CSV, one file or many. For an Apple .abbu backup, the download bundle includes a small Python script that flattens the SQLite tables into a single .vcf first.

The tool proposes groups.

Records are unioned by matching normalized name, phone, and email. A fuzzy pass (adjustable in the app) catches things like "Chris Holmes" and "Christian Holmes". Each group shows a live preview of the merged result plus every source record that fed into it.

Approve, split, or untick.

Groups where every field agrees are marked auto-safe. Groups where sources disagree get a "needs eyes" pill and a per-field CONFLICT badge. You accept, or untick a member to exclude it, or split it into its own record.

Download the clean copy.

Merged vCard (importable straight back into Contacts.app, Google Contacts, or anywhere) plus a merged CSV for a spreadsheet audit. Original file is untouched.

Try it with a sample dataset →

Why we built it this way

Every other dedupe tool wants you to hand over your address book. This one doesn't.

Nothing uploads

Parsing, grouping, merging, exporting — all in your browser tab. The server hosting this page never sees a single contact.

Nothing is stored

No cookies, no local storage, no analytics. Close the tab and it's gone. Refresh and you start over.

Works offline

Download the page, disconnect from the internet, do the whole job. The only outbound request is one stylesheet from Google Fonts — swap it for a local copy and it's fully airgapped.

Portable

It's one HTML file. Email it to a friend. Toss it on a USB drive. Open it by double-clicking. No install, no build step, no framework updates.

🧭

Merge reasons on every group

Small pills show whether records were unioned by matching name, phone, email, or fuzzy match — so you can audit why the tool decided two records were the same.

🎚️

Fuzzy threshold you control

A slider in the filter bar lets you tighten or loosen the fuzzy-name match. Regrouping is instant.

🙈

Hide notes for demos

Contact notes often hold saved credentials or personal reminders. A one-click toggle hides them in the review UI while keeping them in the exported file.

📝

Auditable output

The merged CSV includes a member count and source list per row, so you can spot-check which raw records fed each merged contact.

A look at the workbench

Screenshots are on the way — the capture rig runs the same Playwright/CDP pattern the other product pages use.

Product screenshots land here shortly. In the meantime, try the tool itself — the sample dataset takes one click and shows the whole review flow.

Ready to clean it up?

Open the workbench. Try it on the sample dataset first, then drop your own vCard export in.

Free while in preview. Feedback goes straight to David.