Guide

How to find and delete duplicate emails

By Michael, founder of EmailAttic · September 2026 · 7 min read

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:

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:

  1. Consolidate everything first. Get every backup and every account into one place before you delete anything from any of them.
  2. Dedupe by Message-ID, with a content hash as the fallback — never by subject and date alone.
  3. Keep exactly one canonical copy of each unique message.
  4. 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