How to find similar duplicates in Excel
- Load the list. An Excel, ODS or CSV file, or a column pasted from Excel. Each row is one customer, supplier, contact or product.
- Pick the column to compare, usually the name. If two rows can only be duplicates when they share a city, country or postcode, add that column as an exact match.
- Click Find duplicates. Rows whose similarity reaches the threshold are linked into groups.
- Review each group. The most complete row is ticked. Tick another one, keep several, or click “Keep all” when they are different people or companies.
- Download the Excel file with the clean list, the full list with group and similarity columns, and the groups for your records.
Private by design: no upload
Customer and contact lists contain personal data. This tool reads and compares them with JavaScript inside your browser, in a background worker. Nothing is sent to a server: the page only downloads its own code and the open-source library that reads Excel files (SheetJS).
You can check it in the Network tab of the developer tools, or disconnect from the internet after the page has loaded and keep working.
Why Excel’s Remove Duplicates is not enough
Data → Remove Duplicates, UNIQUE() and conditional formatting with “Duplicate values” all look for identical cells. In a real CRM or supplier list the same company appears as “Talleres Unidos S.L.U.”, “TALLERES UNIDOS” and “Talleres Unidos, SLU”: three different values for Excel. Cleaning them by hand with TRIM, LOWER and SUBSTITUTE helps with spaces and case, but not with accents, legal suffixes, typos or the order of first name and surname.
This tool normalises those differences first and then measures how similar the texts are, from 0 to 100. Exact duplicates are found too, so you do not need to run Remove Duplicates first. If you only need exact duplicates, remove duplicates in Excel is faster.
What counts as a similar duplicate
These are real similarity scores from this tool. With the default threshold of 88, the first seven pairs are grouped.
| Row | Other row | Similarity | Why |
| José García | JOSÉ GARCÍA | 100 | Only case and accents |
| José García | Jose Garcia S.L. | 100 | Accents and legal suffix |
| María Fernández López | Fernández López, María | 100 | Surname first |
| Pied Piper | Pied Pipper LLC | 96 | Typo and suffix |
| Jon Smith | John Smith | 96 | Typo, or two people: check the email |
| Müller GmbH | Mueller GmbH | 92 | Different transliteration |
| José García | José García Pérez | 89 | Missing second surname: review |
| Calle Mayor 5 Apartments | Calle Mayor 6 Apartments | 68 | Different numbers |
How the groups are built
Comparing every row with every other row grows with the square of the list: 10,000 rows are 50 million pairs. Instead, each name is split into three-letter pieces (trigrams) and only rows that share enough of them are scored, which keeps 10,000 rows to a second or two. Every pair above the threshold is linked, and linked rows form a group, also when the link is indirect (A is like B and B is like C). That is why a very low threshold can produce long chains: if a group looks too large, raise the threshold or add a column that must match exactly.
Common uses
- CRM clean-upMerge accounts created twice by different sales reps before a migration or a mailing.
- Supplier master dataFind vendors entered as “Acme Inc.” and “ACME, Inc” and avoid paying the same invoice twice.
- Newsletter and event listsSpot people who signed up twice with their name written differently.
- Product cataloguesDetect the same product listed under slightly different names.
- Donor and member databasesGroup records of the same person before counting donors or members.
- Research dataHarmonise names of institutions, places or species typed by hand.
Known limitations
- The similarity is an estimate. Two different people with the same name can be grouped; check another column, such as email or date of birth, before you remove rows.
- Groups are chains: with a low threshold, rows that are not alike can end up in the same group through an intermediate row.
- Rows are kept or removed, never merged: values from several rows are not combined into one.
- Abbreviations and nicknames are not expanded (“Hnos.” and “Hermanos”, “Bob” and “Robert” score low).
- Only the 40 most promising candidates of each row (by shared trigrams) are fully scored; in very repetitive lists a weak link may be missed.
- One sheet and one column are compared at a time. Pairs below a similarity of 70 are not stored.