Free tool · Runs in your browser · No signup

E.164 Phone Number Normalizer & Batch Formatter

Paste a list of numbers in whatever format they arrived in — spaces, dashes, parentheses, a leading 00, a leading 0, no plus sign at all — and get back clean +<countrycode><number> E.164 on every line, with a status flag for anything too short, too long, or unrecognized. Built for cleaning contact lists and CSVs before they hit an SMS API.

No signupStatic, client-sideUp to 5,000 numbers/run

Paste your numbers

Nothing is sent anywhere — this runs entirely in your browser. Up to 5,000 lines per run.

Used only for numbers that have no + and no 00/011 prefix. A leading national trunk 0 is stripped by the common trunk-prefix convention — verify against the national numbering plan (ITU) for the country you're formatting.

What E.164 is, and why the format matters

E.164 is the ITU-T recommendation for international telephone number formatting. A number in E.164 form starts with a plus sign, followed immediately by the country calling code, followed by the national subscriber number — no spaces, no dashes, no parentheses, no leading zero. +491712345678 is E.164. 0049 171 2345678, +49 171 2345678, and 0171-2345678 (dialed from inside Germany) can all refer to the same subscriber, but only the first form is unambiguous outside the country it was dialed from. The one hard, global rule in the spec: the total digit count after the plus sign, country code included, cannot exceed 15.

Beyond that 15-digit ceiling, E.164 does not fix how many digits belong to the country code versus the subscriber number — that split is set independently by each country's own national numbering plan, published and indexed by the ITU. This tool asserts the 15-digit maximum as a hard fact because it's a spec-level constant; it does not invent per-country subscriber-length rules, because those genuinely vary and change over time. Where a country-specific detail would matter, this page points to the ITU's national numbering plans index instead of guessing.

Why SMS APIs insist on E.164

Every SMS gateway and carrier route ultimately needs to know two things about a destination number: which country's mobile network to hand it to, and the exact subscriber number within that network. A number with an ambiguous or missing country code can't be routed at all, or worse, gets silently routed to the wrong country by a gateway that assumes a default. That's why virtually every SMS and voice API — and the underlying SS7/SMPP carrier interconnects behind them — expects E.164 as the canonical input format. Numbers that arrive in local or mixed formats have to be normalized before they're usable, and doing that by hand across a few thousand contacts is exactly the kind of tedious, error-prone work this tool exists to remove.

Common pitfalls when cleaning a number list

  • The national trunk 0. Many countries prefix domestic calls with a leading 0 that is dropped entirely in the international format — the 0 in UK 07123 456789 becomes nothing in +447123456789. This is a common trunk-prefix convention, not a universal law; some numbering plans work differently, so verify against the country's plan when it matters for delivery, not just formatting.
  • 00 vs +. 00 is the ITU-recommended international dialing prefix used across most of the world outside North America (NANP countries use 011 instead). Both mean exactly the same thing as a leading + and should be treated identically — the number that follows already includes its country calling code, so no default country and no trunk-zero stripping should be applied.
  • WhatsApp-style copy-paste formatting. Numbers copied from chat apps, email signatures, or spreadsheets often carry spaces, dots, dashes, or parentheses around the area code — +1 (555) 123-4567 is common and perfectly valid once the punctuation is stripped, but a literal string compare or a naive "digits only" split will mishandle it if the leading + or 00 isn't detected first.
  • Guessing the country for prefix-less numbers. A bare local number with no +, no 00, and no 011 is genuinely ambiguous without external context (which contact list, which signup form, which country was selected). The default-country dropdown above exists for exactly this case — pick the country the batch is known to belong to, and re-run any numbers that don't fit that assumption separately.

Three worked examples

Input to normalized E.164
InputDefault countryNormalizedWhat happened
0049 171 2345678any+491712345678Leading 00 detected as an international prefix; the country code that follows (49, Germany) wins outright, so the default-country dropdown is ignored.
07123 456789United Kingdom (+44)+447123456789No +/00/011 prefix, so the default country applies; the leading national trunk 0 is stripped before the 44 country code is prepended.
+1 (555) 123-4567any+15551234567Leading + detected; punctuation is stripped and the 1 (NANP) country code is read directly from the digits, no default needed.

NANP note: +1 covers the US, Canada, and 19 Caribbean nations sharing the North American Numbering Plan. This tool does not attempt to guess the specific NANP country from the area code — it reports +1<number> as valid E.164 and leaves country-level disambiguation to the numbering plan.

Related tools

Frequently asked questions

What is E.164 format?

E.164 is the ITU-T numbering plan recommendation for international telephone numbers. It requires a leading plus sign, the country calling code, and the national subscriber number, with no spaces, dashes, or parentheses — for example +491712345678. The total number of digits after the plus sign, including the country code, cannot exceed 15. Almost every SMS API and carrier gateway expects numbers in this exact shape.

How do I convert 0049 to +49?

00 is the ITU-recommended international dialing prefix used in most of the world outside North America; it means the same thing as a leading plus sign. To convert, drop the leading 00 and put a + in its place: 0049 171 2345678 becomes +49 171 2345678, which normalizes to +491712345678 once spaces are removed. This tool does that conversion automatically and applies it before falling back to any default country you select.

Why do international numbers need a + or 00 prefix?

Without a + or 00 prefix, a number is ambiguous: a local number like 0171 2345678 could belong to any country that assigns leading zeros as a domestic trunk prefix. The + (or 00) tells software and switches that what follows is a country calling code, not a domestic trunk digit, so the number can be routed correctly regardless of where the message or call originates.

What's the maximum length of an E.164 phone number?

15 digits, not counting the leading plus sign. That is a hard limit set by the ITU-T E.164 recommendation itself, covering the country calling code plus the national subscriber number combined. It is one of the only numbering-plan facts that holds globally — exactly how many of those digits belong to the country code versus the local number varies by country and is set by each country's own national numbering plan.