How to find and delete duplicate emails
Every mailbox that's been through a few backups, a provider switch, or an import ends up with the same message sitting in it two, five, sometimes a dozen times. There's no safe one-click "remove duplicates" button, because most of what looks like a duplicate isn't quite one. Here's how to actually find the real duplicates without deleting mail you meant to keep.
Why duplicates pile up in the first place
Duplicates aren't a sign you did something wrong — they're the natural byproduct of how people protect their email over the years:
- Repeated backups. Every PST export, every "just in case" copy to an external drive, is a full copy of whatever it captured. Do that annually for a decade and you have ten overlapping copies of most of your mail.
- Takeout and PST re-exports. Re-running a Google Takeout or an Outlook export doesn't diff against the last one — it captures everything again, overlap included.
- POP downloading the same mail twice. POP was designed to remove mail from the server after download, but "leave a copy" settings, a second device, or a reinstalled client can pull the same message down more than once.
- The same message in two mailboxes. A message you sent lives in your Sent folder and in the recipient's Inbox. If you're consolidating several family members' or former employees' mail into one archive, that's the same email appearing under two different accounts — correctly, but redundantly once it's all in one place.
- IMAP resyncs. A client that loses its sync state and re-downloads a folder can leave two identical copies sitting side by side.
Why "same subject, same date" is a dangerous way to match
The tempting shortcut is to compare subject lines and timestamps and call anything matching a duplicate. It's also the fastest way to lose real mail. A newsletter you get every week has the same subject every time. A back-and-forth thread often has several replies within the same minute. A calendar invite and its update can carry an identical subject and near-identical timestamp while being two distinct, meaningful messages. None of those are duplicates, and a tool that matches on appearance alone will quietly delete one of them.
The reliable signal is the Message-ID header — a value every mail server is
supposed to assign uniquely to each message — combined with a content hash of the body and key
headers as a fallback for the older or malformed mail that lacks one. Two messages are only
true duplicates when that signal matches, not when they merely look alike from the subject
line.
Finding duplicates inside one mailbox
If everything lives in a single Gmail account or a single Outlook profile, client tools and add-ons that read the Message-ID (not just the subject) can find same-mailbox duplicates reasonably well. This is the easy case: one format, one source, no normalization needed.
Finding duplicates across many backups
The harder — and far more common — case is duplicates scattered across years of backup
files: a few PSTs, an MBOX from a Takeout export, a folder of loose .eml files.
These formats aren't directly comparable to each other, so the first step isn't deduping at
all — it's extracting every backup into
the same individual-message format. Only once everything is normalized can you dedupe
across the whole set instead of one file at a time.
The compaction-file trap: a backup that looks redundant — an old "final" copy, a leftover temp file from Outlook's compaction process — can secretly hold messages that exist nowhere else. Never delete a file because it looks like a duplicate of another file. Extract it and let message-level matching decide. More on this trap, and why it almost cost 13,000 real messages, in how to open old PST files without Outlook.
The safe order of operations
Deduping is only safe in this order, and skipping a step is how mail gets lost:
- Consolidate everything first. Get every backup and every account into one place before you delete anything from any of them.
- Dedupe by Message-ID, with a content hash as the fallback — never by subject and date alone.
- Keep exactly one canonical copy of each unique message.
- Only then retire the redundant backups — once you can show, file by file, which messages each one contributed and that nothing unique was lost.
That's the process that turned 736,000 messages from 236 backup files into one clean archive — and it's also the project where a file that looked like pure redundancy turned out to be the only copy of nearly 13,000 messages. Half of everything read across that project was, in the end, a true duplicate. The other half was mail worth keeping exactly once.
Never upload a mailbox to an online "duplicate remover." Your email holds password resets, financial statements, and years of private conversation. Any site that asks you to upload a PST or MBOX to find your duplicates is asking you to hand over your entire history to a stranger's server. Whatever finds and removes duplicates in your mail should run on your own computer, full stop.
Frequently asked
Does Gmail remove duplicate emails automatically?
No. Gmail's All Mail can show the same conversation more than once — after a label change, or after importing mail from another account — but there's no automatic dedupe step and no built-in "remove duplicates" feature. If you've imported mail or restored a Takeout export on top of existing mail, the duplicates stay until you find and remove them yourself.
How do I delete duplicates in Outlook?
Outlook's "Clean Up" tool only trims redundant messages within a single conversation thread
— it doesn't dedupe across PST files, and it won't catch a message that exists once in your
Inbox and once in an old backup. For real cross-file duplicates, export everything to
individual .eml files first, then match on the Message-ID header
with a content-hash fallback, and merge into a single archive.
Will I lose emails if I delete duplicates?
You can, if you match on surface details like subject and date instead of Message-ID and content — two genuinely different messages can share both. The safe approach keeps exactly one copy of every message that's truly identical to another, and never removes a message just because it resembles one you've already kept.
What's the safest way to find duplicates across old email backups?
Normalize every backup — PST, MBOX, loose .eml folders — into the same
individual-message format first, then dedupe by Message-ID with a content hash as the
fallback. Never delete a backup file just because it looks redundant; extract it before you
decide what's safe to retire.
EmailAttic finds and removes the real duplicates for you
It consolidates every account and backup, matches on Message-ID and content instead of guesswork, and keeps exactly one copy of everything — entirely on your own computer. Nothing is ever uploaded. On sale now — a one-time purchase, with all minor version upgrades free.
Get it now