Remove duplicate phone numbers
Upload a CSV or paste a list. Duplicates are matched after every number is normalised, so the same person written two ways is caught — and every other column comes back untouched.
Everything runs in your browser. Nothing you type or upload is sent, stored or logged — there is no server behind this page to send it to.
Rows whose phone cannot be read are kept, never dropped — a row you cannot check is not a duplicate.
Why your spreadsheet misses them
Excel’s Remove Duplicates and the equivalent in Google Sheets compare text. To a string comparison, (617) 555-0142 and 617-555-0142 have nothing in common — different characters, different length — so both survive, and the same person gets called twice by two different reps.
The fix is to compare the number rather than the way it was typed. Every number here is converted to E.164 first, and the comparison happens on that. Brackets, dashes, spaces, a leading country code on one row and not the next, a trunk prefix — all of it collapses to one canonical string before anything is matched.
That is also why the count of duplicates this finds is usually higher than the one your spreadsheet reported, and why the gap is largest on lists assembled from more than one source. Two exports of the same CRM rarely format numbers the same way.
What it does with the awkward rows
Three decisions, all made in the direction of not losing your data.
- No readable number. Kept, and counted separately. A row you cannot check has not been shown to duplicate anything.
- The first row wins. Processed top to bottom. Sort before uploading if a particular record should survive.
- Every column preserved. The whole row comes back in its original order. Only rows are removed, never fields.
- The column is detected. Whichever column parses as phone numbers most often is used — and you can override it.
Duplicates are also why a call ends up on the wrong CRM record — the same problem seen from the other end. There is more on that in how to log every sales call in your CRM automatically.
Deduplicating a contact list
Why does a spreadsheet miss duplicate phone numbers?
Because Excel and Google Sheets compare the text, not the number. (617) 555-0142 and 617-555-0142 are the same person and two different strings, so Remove Duplicates leaves both. This tool converts every number to E.164 first and compares that, which is why it catches pairs a spreadsheet cannot.
Which of the duplicate rows is kept?
The first one in the file. Rows are processed top to bottom, so sort your list before uploading if you want a particular record to win — most recently updated first, for example.
What happens to rows with no phone number?
They are kept. A row whose phone cannot be read has not been shown to be a duplicate of anything, and quietly dropping it would lose data you did not ask to lose. They are counted separately so you can see how many there were.
Are the other columns preserved?
Yes. The whole row comes back untouched — names, emails, owners, custom fields, in their original order. Only duplicate rows are removed, never columns.
Is my contact list uploaded?
No. The file is read by your browser with FileReader and parsed on your machine. There is no endpoint behind this page, so nothing is transmitted, stored or logged.
Now dial the clean list
CallPal imports a CSV or syncs your CRM, normalises every number the same way this page does, and power-dials the list over your own carrier — with each call logged back to the record it came from.
The other free tools are all in one place.
Start calling from your CRM today.
Sign up, connect your phone provider, and make your first call. Your own CRM, your own data.
- Every feature, up to 5 people
- No card, nothing to cancel
- Your CRM, your phone provider
Or write to us at [email protected].