Guide
Standardizing phone numbers in a spreadsheet to E.164 and international formats
Phone numbers arrive in every shape: “(415) 555-0132”, “0170 1234567”, “+44 20 7946 0958”, “415.555.0132 ext 12”. People reading them cope; software does not. SMS gateways, CRMs, WhatsApp integrations and dialers usually need one strict format, and a single odd entry can make an import fail or a message go nowhere. This tool rewrites a phone column into a consistent format and checks every number against the numbering rules of its country.
How numbers are understood
Parsing uses libphonenumber-js, a port of the phone number library Google maintains for Android, with the full metadata for every country. It knows national prefixes like the leading 0 in Germany or the United Kingdom, the lengths of mobile and landline numbers, and which prefixes exist. The rules are loaded once when you open a file.
Choosing the column and countries
Pick the column with the numbers; a column named phone, mobile, tel or similar is preselected. Numbers that start with + carry their own country code. For numbers written in national form, choose the default country, which starts as the one from your browser settings. If your list covers several countries and has a column with two-letter codes such as US, GB, DE or IN, choose it as “Country per row”, and each row is read with its own country.
Output formats
E.164, such as +14155550132, is what most SMS services, APIs and CRMs expect. International format adds readable spaces, like +1 415 555 0132. National format is how people dial within the country, like (415) 555-0132. Digits only drops the plus sign for systems that do not accept it. tel: links suit websites and email signatures, where tapping the number starts a call.
Extensions
Extensions written as “ext. 12”, “x12” or similar are recognized. They are kept as “ext. 12” after the number in E.164, international and national formats, and included in tel: links as ;ext=12. Digits-only output contains the main number without the extension.
The check column
Each number is marked Valid, Possible, Invalid or Empty. Valid means it fits the numbering plan of its country. Possible means the length is plausible but the number could not be confirmed. Invalid entries are kept exactly as written, so nothing is lost, and the summary counts them so you can fix them by hand. Cells that are not a phone number as a whole, such as “call after 5pm, 555-0132”, are marked invalid rather than guessed.
New column or replace
By default the cleaned numbers go into a new column next to the original, so you can compare. Switch on “Replace the original column” to overwrite it in the download. The original file on your device is never changed.
What validation cannot tell
A valid number follows the rules, but nobody can tell offline whether it is in service or who owns it. For campaigns, combine this clean-up with consent records and your provider’s delivery reports.
Privacy
Phone numbers are personal data. The list is processed in your browser and never uploaded.
Related tools
Remove repeated contacts afterwards with Dedupe CSV. Turn the cleaned list into phone contacts with CSV to vCard, or split full names with Split Names.
Checked against the current version of the Clean Phone Numbers on .

