Clean a file

Why Exact-Match Dedupe Misses Most Duplicates

You ran the “remove duplicates” button in your sheet tool. It found twelve rows. But you can see more pairs with your own eyes — the same client, spelled two ways, right there in the list. Is the tool broken? No. It did the one job it knows: find rows that are the same, letter for letter. Most real duplicates are not.

Exact match means the values must be the same in full. One extra space, one wrong letter, one short form, and the match fails. Real lists are typed by real people, on phones, in a rush. So real lists are full of near matches that exact rules cannot see.

This guide shows the five ways near duplicates hide, with plain examples. It then shows what a smarter match does about each one. If you have seen imports double your records, this is the same root cause — why a CRM import creates duplicates tells that story from the import side.

A note on scale before we start. On a list of one hundred rows, your eyes can rescue a strict tool. On a list of ten thousand, they cannot. The miss rate of exact match does not shrink as lists grow — if anything it grows, because more hands and more years add more variants. What follows matters more, not less, as your list gets bigger.

What “exact match” really means

An exact match is a test of text, not of truth. The tool asks: are these two values the same string of letters, one by one? “lee@x.com” and “lee@x.com” pass. “Lee@x.com” and “lee@x.com” fail in strict tools, since a capital L is a different letter to a machine. The tool is not being dumb. It is being literal, which is all it was built to be.

Think of it as a spelling test given to a very strict teacher. The teacher marks “color” and “colour” as two words. She marks “Smith” and “Smith ” — with a stray space at the end — as two words. She is never wrong about the letters. She is often wrong about the world. Your list lives in the world, where one person wears many spellings. A dedupe method that cannot tell the difference will keep failing that person, row after row, year after year.

Sheet tools dedupe the same way. Pick a column, and rows merge only if that column's values are the same in full. Some tools trim extra spaces first. A few fold capital letters into small ones. Past that, they have no sense of “close.” Close is a human idea. To a strict tool, a value is the same or it is not.

Diagram: an identical pair of emails is found by exact match, while a pair with one wrong letter is missed.Exact matchlee@x.com = lee@x.comNear matchlee@x.com ≈ lee@x.confoundmissed byexact rules
Exact match finds the pair on top. The pair below — one letter off — slips past it.

Hideout one: typos and slips

The top cause of hidden duplicates is the humble typo. A “gmail” becomes “gmial.” A name gains a letter or loses one. Two letters swap places. These slips are small to us and huge to an exact test. One wrong letter in an email makes a brand-new string, and the row looks like a new person.

Typos cluster in long values. Emails and street names suffer most, since they are long and are typed fast. Double letters are a known trap: “Phillips” with one L, “Accommodation” with one M. No one means to make a duplicate. Their fingers just do it. Any dedupe plan that cannot shrug off one wrong letter will miss a large share of real duplicates.

Typos also have a pattern worth knowing: they grow with list age. A fresh list, typed once, has few. A list that has been exported, edited, and re-imported for years has many — each move was a chance for a slip, and slips never heal on their own. So the older your list, the less you should trust a strict tool's “all clean” report. Age is a fair guess at how much is hiding.

Hideout two: short forms and nicknames

People do not write their names the same way each time. William becomes Bill on one form and Will on the next. Margaret is Peggy to her friends. A firm drops its “Inc.” or swaps “and” for “&.” None of these are typos. Each form is “right.” They just are not the same text, so exact match sees two or three people where you see one.

Same person, first rowSame person, next rowWhy exact match fails
William CarterBill CarterNickname, not a typo
Acme Parts Inc.Acme PartsFirm suffix dropped
10 Main Street10 Main St.Short form of a word
+1 555 010 2233555-010-2233Same phone, new format
Garcia, MariaMaria GarciaField order swapped

Read down that table and you will see the pattern. The facts agree. The forms differ. Dedupe that only tests text will call each pair two people. Dedupe that first makes forms the same — one shape for names, phones, and streets — can at least give the pair a fair test.

Hideout three: format slips

Formats slip in quiet ways. A phone picks up a country code. A date flips day and month. A zip code gains its dash and four more digits. A name field holds “Last, First” in one list and “First Last” in the other. Each slip is small. Each breaks an exact test on that field, and one broken field is enough to hide the pair.

The fix is to normalize before you match. That word just means: put each kind of value into one set form first. Phones become digits only. Emails become small letters, with common tricks — like dots in Gmail addresses — ironed out. Names lose extra spaces and get a set order. After that step, exact match suddenly finds far more, because the texts at last say what the facts mean.

But note the limit. Normalizing fixes form, not spelling. “Jon” and “John” are both clean forms of a name, and they are still not the same text. For those pairs you need the next idea: a match that can be close, not just the same.

One more form trap hides in plain sight: the same value in two scripts of data entry. A firm typed as “AT&T” in one file is “AT and T” in the next, because a form stripped the odd marks. Zeros and the letter O trade places in codes. Each is a tiny thing. Each one, alone, is enough to split a pair. Form fixes cannot guess them all — which is one more reason the fuzzy pass comes after, not instead of, the tidy pass.

What fuzzy matching does about it

Fuzzy matching scores how alike two values are, instead of asking if they are the same. Two names that share most letters score high. Two that share few score low. You set a line — call it a threshold — and pairs above the line group as likely duplicates. Pairs near the line wait for your review. Pairs below it stay apart.

A good fuzzy tool looks at more than one field at once. A name that is close plus a phone that is the same is strong proof. A name that is close plus a street that clashes is a warning sign. It also shows its reasons in plain words — “email matches,” “last name is similar” — so your review is fast. DedupeCSV works this way: exact groups first, then fuzzy groups with scores and reasons, all in front of you before anything is removed.

Fuzzy matching is not magic, and it is not a license to merge on a hunch. It is a net with a finer mesh. You still review the catch. If you want to see the net work, run your list through the tool — the free plan covers files of up to 1,000 rows, which is enough to feel the difference on a real list.

Where exact match is still the right tool

None of this means exact match is useless. It is the right tool for a clear class of jobs. When a column holds true IDs — order numbers, member numbers, codes made by one system — exactness is the point. Two rows with the same order ID are the same order. Two rows one digit apart are not a “near match.” They are two orders, and a fuzzy tool that merged them would do real harm.

Exact match is also the right first pass on any list. It clears the plain copies with zero risk, fast. Only after those are gone does the fuzzy pass earn its keep, on the smaller, harder set that is left. Good dedupe is a ladder: exact rungs first, fuzzy rungs next, human eyes on the top rung for the pairs no rule should decide alone.

The mistake is not using exact match. The mistake is stopping there and calling the list clean. That error is easy to make because the tool reports success: “12 duplicates removed.” True — and silent about the 40 near pairs it walked past. A count of what a tool found is not a count of what was there. Keep that gap in mind whenever a dedupe tool brags.

There is one more place exact rules shine: after you clean. Once a file has been normalized and deduped, a strict re-check is a fine guard before an import — which is why a final exact pass sits inside the pre-import cleaning routine. Strictness at the gate is a virtue. Strictness as the whole search is a blindfold.

So judge tools by the whole ladder. Does it normalize first? Does it score near pairs and show its reasons? Does it let you review before anything is removed, and does it keep an audit file? A tool that does those things will still use exact match — as its safest rung, not its only one. The ladder is the product. The first rung alone is just a button.

And judge your own habits by the same ladder. If your cleanup ends at the sheet tool's button, you now know what is still in the file. The good news: the near pairs are not hiding out of spite. They follow the five patterns in this guide, and each pattern has a fix. Work the patterns, and the “clean” list you get at the end will deserve the name.

How much does exact match miss? A plain test

We test dedupe tools on real lists from public sources — city and state business lists, where the same firm shows up in many rows. On those lists, exact rules on name and address columns often remove nothing at all in whole files, because no two rows for one firm are spelled the same way in full. A fuzzy pass on the same files finds most of the true pairs. The gap is not small. It is the gap between “found a few” and “found most.”

You can run a small test of your own. Take one file you know has duplicates. Run exact dedupe and note the count. Then scan the file by eye, sorted by name, and count the near pairs you spot in ten minutes. Most people find the eye count is two or three times the exact count. That is the size of the blind spot. Your list is not worse than most. Your tool is just strict where life is loose.

Strict is safe, but strict is blind

Exact match is a fine first pass. It never merges strangers, and it clears the plain copies. But it sees text, not truth, so it misses the typos, nicknames, and format slips that make up most real duplicates. Normalize the forms, add fuzzy matching with review, and the hidden half of your duplicates comes into view.

The hardest hideout is the name itself. Our guide on deduping when names are spelled differently goes deep on nicknames, typos, and swapped fields — and how to catch them without merging two real people.

Keep the ladder in mind: exact first, fuzzy next, your eyes last. Each rung catches what the one below it missed — and together they catch nearly all of what is really there.

Sources and further reading


← All guides