E.164 Phone Number Format Explained: The Standard Every System Uses

Phone numbers are messy. The same US number might be written as (415) 555-2671, 415-555-2671, 1-415-555-2671, or +1 415 555 2671 depending on who typed it and where. Humans can read all of those. Software cannot, or at least not reliably. That is why the telecom world settled on a single canonical format: E.164.

If you work with phone lists, SMS APIs, or any kind of phone validation, you will run into E.164 constantly. Here is what it is, how it works, and the mistakes that break things.

What E.164 is

E.164 is an international telephone numbering plan defined by the ITU, the International Telecommunication Union. It specifies exactly one way to write any phone number in the world so that every system agrees on what the number is.

An E.164 number has three parts and no decoration:

  1. A plus sign at the start.
  2. The country code, one to three digits.
  3. The national number, including area code and subscriber number.

That is it. No spaces, no dashes, no parentheses, no dots. Just a plus sign followed by digits. The total length, not counting the plus sign, can be at most 15 digits.

So the US number (415) 555-2671 becomes +14155552671. The plus sign, the country code 1, then the ten-digit national number. A UK number like 020 7946 0321 becomes +442079460321: country code 44, then the national number with the trunk zero dropped. A Pakistani mobile like 0300 1234567 becomes +923001234567.

Why the plus sign matters

The plus sign is not decoration. It stands in for the international dialing prefix, which differs by country. From the US you dial 011 to call abroad; from most of Europe you dial 00; on mobile phones you can usually just dial the plus directly. By writing the number with a plus, you are saying “insert the correct international prefix here,” which makes the number dialable from anywhere in the world.

This is why storing numbers in E.164 is so powerful. A number stored as +14155552671 works whether the sender is in New York, London, or Karachi. A number stored as 415-555-2671 only makes sense if you already know it is American.

The 15-digit maximum

E.164 numbers can be at most 15 digits long, excluding the plus sign. Most real numbers are much shorter: US numbers are 11 digits after the plus, UK numbers are usually 12, and many countries fall in a similar range. The 15-digit ceiling mostly matters for validation. If a “phone number” in your data has 20 digits, something went wrong upstream, and no amount of formatting will fix it.

Country codes themselves are one to three digits. Single-digit codes cover the NANP countries (1 for the US, Canada, and much of the Caribbean). Two and three-digit codes cover the rest of the world. The national number that follows includes whatever area codes and subscriber digits the country’s own numbering plan requires.

The trunk zero trap

The most common E.164 mistake is keeping the trunk zero. Many countries use a leading zero for domestic dialing: the UK’s 020, Pakistan’s 0300, Germany’s 030. That zero is a domestic trunk prefix, and it must be dropped when you add the country code.

So 020 7946 0321 becomes +442079460321, not +4402079460321. The version with the extra zero will fail or route to the wrong place. If your data comes from local sources, stripping trunk zeros during conversion is one of the most valuable cleaning steps you can do. Our phone list cleaner handles this kind of normalization so your lists come out consistent.

Why every serious system uses E.164

There are a few reasons E.164 became the universal standard.

APIs require it. Twilio, Vonage, and virtually every SMS and voice API expect numbers in E.164. Send anything else and you get an error or, worse, a misrouted message.

Deduplication works. The same number written five different ways looks like five different records to a database. Convert everything to E.164 first, and duplicates collapse into one.

Validation is simpler. Once numbers are in a canonical format, checking length, country code, and digit patterns becomes straightforward. Most bulk validation tools normalize to E.164 as their first step for exactly this reason.

International sending just works. If your SMS campaigns cross borders, E.164 is the only format that is unambiguous everywhere. A CSV of mixed local formats is a support ticket waiting to happen.

Converting your data to E.164

If your lists are a mix of formats, here is the practical conversion process:

  1. Strip everything that is not a digit or a leading plus: spaces, dashes, parentheses, dots, all gone.
  2. If the number starts with a plus, you likely already have a country code. Verify the digit count looks right for that country.
  3. If there is no country code, add the right one for the number’s country. This is the step that requires knowing where the number belongs, so keep country information alongside your numbers.
  4. Drop any trunk zero after adding the country code.
  5. Check the total digit count. Anything over 15 digits is invalid; anything far shorter than the country’s normal length deserves a second look.

For one-off conversions this is quick manual work. For lists, do it programmatically or with a cleaning tool before the data ever reaches your SMS platform. Getting this right upstream prevents a whole category of failed sends.

Common mistakes to avoid

Storing numbers without country codes is the biggest one. A ten-digit number could belong to several countries, and your system has to guess. Always store the full international form.

Mixing formats in the same column is next. If half your CSV is E.164 and half is local format, every downstream process has to handle both. Pick one format, E.164, and convert on import.

Forgetting that E.164 is for storage, not display, is a subtler mistake. +14155552671 is perfect for your database and your API calls, but humans prefer to see (415) 555-2671. Format for display at the last moment, from the E.164 original.

Finally, do not confuse formatting with validation. E.164 tells you the number is well-formed. It does not tell you the number is live, that it belongs to a mobile line, or that the owner consented to your messages. Those need separate checks. Our guide to bulk SMS CSV formatting covers how to structure the whole file, not just the numbers.

Frequently Asked Questions

Is E.164 the same as international format?

Essentially, yes. When people say “international format” for a phone number, they almost always mean E.164: plus sign, country code, national number, no punctuation.

Does E.164 include spaces or dashes?

No. Strict E.164 is digits only after the plus sign. Spaces and dashes are display formatting. Some systems tolerate them on input, but for storage and API calls, strip them.

What is the longest possible E.164 number?

15 digits, not counting the plus sign. That includes the country code. Most countries use far fewer.

Do I need the plus sign, or can I just use the digits?

Use the plus sign. Without it, systems cannot distinguish an international number from a local one, and some APIs will reject the number outright.

Can a number be valid E.164 but still not work for SMS?

Yes. E.164 only guarantees the format is correct. The number might be disconnected, it might be a landline that cannot receive texts, or it might belong to someone who never consented to your messages. Format first, then validate.

Getting your number formats right is one of those boring fundamentals that quietly determines whether your SMS operation runs smoothly. Standardize on E.164, validate what you store, and a surprising number of downstream headaches disappear.