Find the same person entered twice.
Not identical rows — the same person recorded twice with a different email, a married name or a flat number. Every match arrives with its evidence and a decision you can reverse.
No account needed to start. You only pay when you like what you see.
- .xlsx. Excel workbook. Every sheet read, including the ones that are notes rather than data.
- .xls. Excel 97–2003. Read the same as a modern workbook.
- .xlsm. Excel, macro-enabled. Values and formulas are read. Macros are never executed.
- .ods. OpenDocument spreadsheet. LibreOffice and OpenOffice workbooks, read like Excel.
- .numbers. Apple Numbers. Tables are pulled out of the Numbers package sheet by sheet.
- .csv. CSV. Delimiter, quoting and encoding detected rather than assumed.
- .tsv. Tab-separated. Read as delimited text.
- .json. JSON. Nested objects are flattened into tables, keeping the path as the column name.
- .ndjson. Newline-delimited JSON. Streamed a record at a time, so an export of any size is fine.
- .xml. XML. Repeated elements become rows; attributes become columns.
- .parquet. Parquet. Read columnwise, with the file's own types kept.
- .sqlite. SQLite database. Every table read, with the foreign keys used to work out how they relate.
- .db. SQLite database. Read as SQLite when the file is one, and reported plainly when it is not.
- .txt. Plain text. Read as notes, or as data when the contents turn out to be a table.
- .md. Markdown. Markdown tables become tables; the rest becomes context for the analysis.
- .zip. Zip archive. Unpacked, and each file inside is treated as though you had uploaded it yourself.
What comes back
Your retention is 11 points better than you think, and your income is far less safe.
704 of the 6,214 constituent records are the same people entered twice, mostly by online appeals creating a new record for someone already in the postal file. Counting records, retention is 47.2%; counting people, it is 58.1% — above the sector benchmark rather than below it. The same defect has been hiding the number that matters more: eleven households give 52% of unrestricted income, and two of those eleven are one household.
The same donors, counted two ways
- 015,510 people are stored as 6,214 records, and it is depressing your retention.
- 02The win-back appeal is addressed to 312 people who are giving right now.
- 03Eleven households are 52% of unrestricted income, and one of them ends this year.
01
It compares people, not strings
Removing identical rows finds almost nothing in a real list, because real duplicates disagree in every field. Matching runs on email, on name with address, and on behaviour. Two records that never appear in the same year, and whose gifts or orders alternate, are one person taking turns.
02
It refuses to guess the hard ones
A father and his adult son at one address are not a duplicate, and no threshold reliably separates them from a maiden name. Pairs above the confidence line are merged and listed; the rest are held as decisions with the evidence for and against each. The worked example has 88 of them.
03
It shows what the duplication was costing
Deduplication is only interesting for what it changes. In the example it raises measured retention by 10.9 points, removes 312 people from a win-back mailing they should never have been on, and merges two of the eleven largest donors into one household. That is a governance fact, not a tidiness one.
It expects a mess.
Most files that arrive here have several tables on one sheet, a title block above the data, totals stranded in the middle of it, and dates in more than one format. That is the normal case, not the awkward one.
- Matched pairs, each with the evidence for the match
- A merged copy of your list
- The pairs it will not decide for you, with both sides
- Change log, reversible row by row
- Your original file, untouched
| Order | Date | Customer | Amt |
|---|---|---|---|
| 10241 | 07/02/26 | John Smith | $84.00 |
| 10242 | 2 July 2026 | SARAH LOPEZ | $41.00 |
| 10242 | 2 July 2026 | SARAH LOPEZ | $41.00 |
| 10243 | 45840 | s. lopez | 41 |
| Not supplied | Not supplied | SUBTOTAL | $166.00 |
| 10244 | 2026-07-03 | Amara Osei | $127.50 |

Questions it works through
- How many of these records are actually the same person?
- Which duplicates were created by my own web form?
- What is the double-counting doing to my numbers?
- Which of these pairs are really two people at one address?
Questions people ask
How is this different from “Remove Duplicates” in Excel?
That compares cells and needs them to be identical. It will not match `e.whitfield@…` to `Eleanor Whitfield` at the same address, which is what a duplicate actually looks like once a list has a web form attached to it — 704 of the 6,214 records in the worked example, none of which Excel would have found.
Will it merge two people who are not the same?
Only above a confidence threshold, and every merge is listed and individually reversible. Below it, nothing is merged — the pair is handed to you with what supports and what contradicts it. Your original file is never modified either way.
Mine is not people. Can it match products or suppliers?
Yes. The same approach works on anything with an identity — SKUs written four ways, suppliers under a trading name and a legal name, addresses with and without a flat number. The demo is a donor file because that is where duplication is most expensive.
Can I run the same matching next quarter?
The rules it worked out are saved as a recipe, so the next export takes minutes and your accepted and rejected pairs are remembered rather than re-asked.
Related
Upload your list
No account needed to start. You only pay when you like what you see.