Phone numbers look like data but behave like text. The same subscriber line can be written a dozen ways, all of them correct to a human reader and all of them different to a database. E.164 exists to collapse that ambiguity into a single canonical form.
How an E.164 number is built
Three parts, in order:
- The plus sign. Notation, not a digit. It marks the string as an international number so no dialling prefix has to be guessed.
- The country code. One to three digits assigned by the ITU.
1covers the United States, Canada and a number of Caribbean territories;44is the United Kingdom;91is India. - The national significant number. Everything else — in the US, a three-digit area code, a three-digit exchange code and a four-digit line number.
Total length after the plus is capped at fifteen digits. There is no minimum defined by the standard; national numbering plans set their own lengths, which is why a valid E.164 number from one country can be materially shorter than one from another.
The same number, five ways
(415) 555-0142 · 415-555-0142 · 415.555.0142 · 4155550142 · 1 (415) 555-0142
All five are the same line. All five are distinct strings. Exactly one E.164 form exists: +14155550142.
Why it matters for a calling list
The practical value is deduplication and lookup. A purchased lead list assembled from several sources will contain the same subscriber written several ways, and a naive duplicate check treats them as different people. You pay to process the same number more than once, and your agents call it more than once — which is both wasted spend and, if the contact has asked you to stop, a compliance problem.
Normalising to E.164 first makes the duplicates collapse. It also makes every downstream check work: carrier and line type lookups, litigator database matching, and suppression lists all key on a canonical number. A list that has not been normalised will return misses that look like clean results.
Where normalisation goes wrong
- Assumed country codes. A ten-digit string with no country code is only unambiguous if you already know the country. Tools that default to
+1will happily produce a valid-looking US number from a foreign one. - Leading trunk codes. Many countries write domestic numbers with a leading
0that is dropped in international format. Keeping it produces a number that fails to route. - Spreadsheet coercion. Opening a CSV in a spreadsheet application frequently strips leading zeros and reformats long digit strings into scientific notation. This corrupts numbers before any tool sees them, and it is the single most common cause of "the file was fine when I sent it".
- Extensions. E.164 has no room for an extension. Extensions belong in a separate field, not appended to the number.
Format valid is not the same as real
A number can be perfectly formed E.164 and still be worthless to call. The standard describes structure, not status: it says nothing about whether the line is in service, whether it is a mobile or a landline, or who it belongs to now. +15005550000 is valid E.164 and reaches nobody.
That is the distinction between syntactic validation, which a regular expression can do for free, and carrier-level validation, which requires querying live routing data. Only the second tells you whether a number will connect. See line type for what that query returns.
NumberBroom normalises every uploaded row to E.164 before any check runs, so the same number written five ways is billed and dialled once. Try a single number free.
Frequently asked questions
How many digits can an E.164 number have?
Fifteen at most, counting the country code and the national number together but not the leading plus sign. A US number uses eleven of those fifteen: country code 1 plus a ten-digit national number.
Does E.164 include the plus sign?
The plus is a notation convention rather than a digit. It signals "what follows is an international number, interpret it from the country code onward" and is not counted toward the fifteen-digit limit. Most APIs require it; some accept a bare digit string and assume a default country, which is exactly where silent errors come from.
What is the difference between E.164 and a formatted phone number?
A formatted number is written for humans and varies by country: (415) 555-0142 in the US, 020 7946 0958 in the UK. E.164 is written for machines and is identical everywhere: +14155550142, +442079460958. One number has many human formats but exactly one E.164 representation, which is why it works as a database key and a formatted string does not.
Do I need E.164 format to send SMS?
In practice, yes. Every major messaging and voice API — Twilio, Vonage, Amazon SNS, and the carrier aggregators behind them — expects E.164 on the destination field. Numbers submitted in a local format are either rejected or coerced using an assumed country code, and the second failure mode is worse because it fails quietly.