E.164 Phone Number Format

E.164 is the international standard (defined by the ITU) for writing phone numbers unambiguously: a plus sign, the country code, then the subscriber number — digits only, no spaces, brackets or dashes, and at most 15 digits in total.

E.164 exists so that a phone number stored once works everywhere. +14155550132 dials correctly from any phone, in any country, and matches exactly in any database — there is exactly one way to write each number.

Virtually every communications API standardizes on E.164: Twilio, WhatsApp Business, Vonage, AWS SNS, Firebase Auth, and SMS gateways all reject or misroute numbers that are not in this form. CRMs like Salesforce and HubSpot deduplicate contacts far more reliably when numbers are normalized to E.164 first.

E.164 Syntax Rules

  • Starts with + followed by the country calling code (1–3 digits).
  • Maximum 15 digits total (excluding the +).
  • No spaces, hyphens, parentheses, dots or letters — digits only.
  • National trunk prefixes (like the UK or German leading 0) are removed.
  • Example: UK national 07400 123456 → E.164 +447400123456.

E.164 Numbers Around the World

The same numbers from our country guides, written in E.164 format:

CountryE.164 example
🇺🇸 United States (+1) +14155550132
🇬🇧 United Kingdom (+44) +447400123456
🇨🇦 Canada (+1) +14165550199
🇦🇺 Australia (+61) +61491570156
🇮🇳 India (+91) +919876543210
🇩🇪 Germany (+49) +4915123456789
🇫🇷 France (+33) +33612345678
🇪🇸 Spain (+34) +34612345678
🇮🇹 Italy (+39) +393123456789
🇧🇷 Brazil (+55) +5511912345678

Where E.164 Is Required

  • Storing phone numbers in any database or CRM (one canonical form prevents duplicates).
  • Sending SMS or WhatsApp messages through APIs like Twilio or Vonage.
  • User sign-up and OTP verification flows (Firebase, Auth0).
  • Syncing contacts between systems or running deduplication jobs.

Converting to E.164 in Code

JavaScript (libphonenumber-js)
import { parsePhoneNumber } from 'libphonenumber-js';

const phone = parsePhoneNumber('020 7946 0958', 'GB');
phone.format('E.164'); // '+442079460958'
Python (phonenumbers)
import phonenumbers

n = phonenumbers.parse("020 7946 0958", "GB")
phonenumbers.format_number(n, phonenumbers.PhoneNumberFormat.E164)
# '+442079460958'
Validation regex (basic shape check only)
^\+[1-9]\d{1,14}$
// Checks E.164 shape — NOT whether the number actually exists.
// Use libphonenumber for real validation.

Normalize Any Number to E.164

Paste a number in any national or international style and get the strict +E.164 form your database, CRM or SMS API expects.

Enter phone number with country code or select country below.

Try:

E.164: Developer Questions

What does E.164 stand for?

E.164 is the name of the ITU-T recommendation that defines the international public telecommunication numbering plan. The "E series" covers overall network operation; recommendation 164 specifies number structure.

Is E.164 the same as international format?

Almost — E.164 is the machine-readable version. International format (+44 7400 123456) adds spaces for human readability; E.164 (+447400123456) strips everything except + and digits.

Why is E.164 limited to 15 digits?

The ITU capped numbers at 15 digits so that switching equipment worldwide can allocate fixed-size routing fields. Country code + national number must fit within that limit.

Does Twilio require E.164?

Yes. Twilio and most SMS/voice APIs require all phone numbers in E.164. Numbers in national format are rejected or, worse, misrouted to the wrong country.

How do I convert a number to E.164?

Add the + and country code, drop the national trunk prefix (the leading 0 in most countries), and remove all formatting characters. Or paste the number into the free converter on this page.

Other Formats