Home · Free tools · Fuzzy match
Fuzzy match two lists
Paste one list on the left and the other on the right. Every value in the first list is paired
with its closest counterpart in the second, and each pair carries the score it earned — so
Acme Corp. finds ACME Corporation, and you can see exactly how confident
that was before you accept it. There is no add-in to install and nothing is uploaded.
List A the values you are looking up
List B the list to look them up in
Nothing is uploaded. The file is read by JavaScript in this tab and never leaves your computer — no server sees it, and closing the tab throws it away.
How to fuzzy match two lists
- Paste both lists. One value per line. Copy a column straight out of Excel or Google Sheets — a copied column arrives as one value per line already.
- Set how close is close enough. The slider is the score a pair must reach to count as a match. 80% is a sensible starting point for company and person names.
- Read the score on every row. Each value in list A shows its best counterpart and the score it earned, so a borderline pair is visible rather than silently accepted.
- Move the threshold and watch. Raise it until the wrong pairs drop out, lower it until the right ones come back. Then download the result as CSV.
What fuzzy matching is
Fuzzy matching pairs two values that refer to the same thing but are not written the same way. Exact matching asks "is this string in the other list"; fuzzy matching asks "which entry over there is this one, spelled differently" — and answers with a score between 0 and 100% rather than a yes or a no.
It is the tool for the job when two systems disagree about the same customer:
Acme Corp. and ACME Corporation, Jon Smith and
John Smith, Smith & Co Ltd and Ltd Smith and Co. If your
two lists hold identical values and you just need the overlap,
exact list comparison is faster and has no threshold to
get wrong.
Three ways two values can be close
A single similarity measure gets one of these right and the other two wrong, so each pair is scored three ways and keeps its best result:
- Mistyped. Edit distance, counting a swapped pair of letters as one mistake rather than
two — the most common typing error there is.
MichealagainstMichaelscores 93%. - Reordered. The same comparison run on the sorted, de-duplicated words.
Corp AcmeagainstAcme Corpscores 100%; on raw edit distance it would score about 40%. - Abbreviated. How well the shorter value sits inside the longer one, scaled down so a
short string is not declared a match for every long string that contains it.
Acme Corp.againstACME Corporationscores 90%.
Before any of that, both sides are trimmed, folded to a single case, normalized for full-width
characters and accents (Unicode NFKC), and stripped of punctuation and repeated spaces — so
Acme Corp. and Acme Corp never reach the scoring stage as different
values at all.
Numbers are identifiers, not spelling
Invoice 1001 and Invoice 1002 are 92% similar as text, and they are two
different invoices. Fuzzy matching that silently pairs them is worse than no fuzzy matching at
all, because the error is invisible in the output. So when both values contain digits and the
digits differ, the pair is held below the threshold no matter how similar the letters are. Order
numbers, SKUs, account numbers and postcodes are safe by default. The checkbox turns the rule off
if your data uses numbers as words rather than as identifiers.
Why this is not the Fuzzy Lookup Add-In
Microsoft's Fuzzy Lookup Add-In does this job well and has two costs: it is a separate download that only runs in Excel on Windows, and in many organizations installing an add-in is an IT request rather than a decision. The Power Query route needs no download but does need a merge step, a similarity option and a re-run each time the data changes. Both give you a threshold and neither shows you, per row, what score a pair actually earned — which is the number you need to decide where the threshold belongs.
This page shows the score on every row, recomputes as you drag the slider, and runs anywhere a browser does, including on a Mac.
What it will not do
Being explicit about the limits, because a matching tool that overstates itself costs more than it saves:
- Abbreviations it cannot know.
LtdagainstLimitedscores 70% and needs the threshold lowered. There is no dictionary of legal forms behind this — matching is on the characters, not on meaning. - One answer per value. Each entry in list A gets its single best counterpart, the way a lookup behaves. It does not return every candidate above the threshold.
- Two lists, not two tables. Paste the columns you want matched. To diff whole files column by column, use compare two Excel files.
Nothing leaves this tab
The lists people fuzzy match are customer names, supplier names and payroll rosters — the kind of data that is awkward to paste into someone else's server. Both lists are scored by JavaScript running in this tab. There is no request to send, so nothing to intercept, log or retain.
Questions people ask
How do I do a fuzzy match in Excel?
Inside Excel the options are the Fuzzy Lookup Add-In, which is a separate download for Excel on Windows, or a merge step in Power Query with fuzzy matching switched on. Both work. This page is the version that needs neither, and it shows the score each pair earned instead of only the pairs that passed.
What threshold should I use?
80% is a reasonable start for company and person names. Raise it until the wrong pairs disappear and lower it until the right ones return — the score on every row tells you which way to go, and the result updates as you drag.
Will it match Ltd with Limited?
At 70%, so not at the default threshold. Matching is on characters rather than meaning, and there is no dictionary of legal forms behind it. Lower the threshold to about 65% for a list full of abbreviated company forms, then check the pairs it adds.
Why did Invoice 1001 not match Invoice 1002?
On purpose. When both values contain digits and the digits differ, they are treated as different records however similar the letters are — invoice numbers, SKUs and account numbers are identifiers, not spelling. Turn off "Numbers must match exactly" if your data uses numbers differently.
How many rows can it handle?
Lists of a few thousand on each side score in well under a second: candidate pairs are shortlisted with a character-bigram index instead of comparing every value against every other one. The row count and the time taken are printed under the result so you can see it for yourself.
Are my files uploaded anywhere?
No. The file is read by JavaScript running in this tab, using the browser's own
DecompressionStream to unzip .xlsx and a parser that runs on your machine. There is no
server call in the page — you can watch the network tab while you use it. Close the tab and the data is gone.
Related
Do this on your own machine instead
TableDI is a desktop spreadsheet workspace that runs entirely on your machine. Import the file, fix it, chart it — nothing is uploaded, and there is no account to create.
Free forever, not a trial — no account, no card. macOS today; a Windows build is in progress. What the paid tier adds.
Last reviewed 2026-09-01 by the TableDI team. Something wrong on this page? Tell us — it is one inbox, read by the people who build TableDI.