Skip to content
AZ Tools

Phone Number Formatter (E.164 / International / National)

Normalize messy phone input into E.164 (+15551234567), international (+1 555 123 4567), national, and tel: URI formats.

Pick the country the number belongs to. Leading 0, country code, and separators are handled automatically.

Enter a phone number above.

How to use

  1. Pick the country the number belongs to.
  2. Paste or type the number — copy/paste from a CRM is fine.
  3. Copy whichever format you need: E.164 for storage, international for printing, tel: URI for <a href>.

About this tool

Show

Paste a phone number in any format — with or without country code, spaces, dashes, parens — and get back the canonical formats: E.164 (for storage / API submission), international (for printing), national (for local display), and tel: URI (for clickable links). 20 country presets cover the most common dialing codes; local conventions (Korean 010-, German 030 leading 0, etc.) are handled per country.

E.164 is the form to store, and the reason is that it is the only one that is unambiguous on its own. It carries the country code, has no spaces or punctuation to normalise, and is capped at fifteen digits worldwide. A number stored in national format is a number whose meaning depends on knowing where it came from, and that context is exactly what gets lost when a record moves between systems.

The leading zero is the detail that breaks naive conversions. Many countries write a trunk prefix, usually 0, when dialling inside the country and drop it when dialling in from outside: London's 020 7946 0958 becomes +44 20 7946 0958, not +44 020. Italy is the well-known exception where the zero is part of the number and stays. A formatter that simply concatenates the country code onto what it was given produces a number that will not connect.

The national display conventions are genuinely local rather than derived from the digits. Korea groups as 010-1234-5678, Germany splits between a variable-length area code and the rest, France pairs the digits, and North America uses parentheses around the area code. There is no rule that generates all of these from the number alone, which is why the presets exist.

Formatting is not validation. A number can be well-formed, correctly grouped and completely unassigned, since whether a range is in service is something only a carrier lookup answers. Treat a clean result as a syntactic check and nothing more.

Frequently asked questions

What's E.164?

The international standard for phone numbers: +, country code, national number, no separators. Max 15 digits. Use E.164 for storage and API calls — it's unambiguous.

Why doesn't it validate the number?

True validation requires the full libphonenumber dataset (~500KB) — out of scope for a static tool. Formatting works for valid input; junk input may produce wrong output.

Can I add my country?

The 20 included countries cover ~80% of global users. For others, type the international format directly — the E.164 output works as long as the input starts with +.

Why is the national format different per country?

Spacing/grouping conventions are local. US groups as (NNN) NNN-NNNN, France as NN NN NN NN NN, Korea as 0NN-NNNN-NNNN. Each preset matches its country's convention.

Related tools