Phone number formatter
This formatter rewrites up to 200 phone numbers at a time in E.164, national and international form, with each number's country, the numbering plan's line type and its time zones, all read from libphonenumber's metadata (version 9.0.40). Paste one number per line. The numbers are not stored. Free, no signup.
try:
Numbers are not stored: they are formatted in memory and nothing is cached. Each request leaves one row for 90 days holding a salted hash of the list, of your IP address and of your session (and your account, if you are signed in), never the values, with the country and network of the connection, as the privacy notice describes for every free tool.
What each column means
- e164
- The form to store, and to hand to an SMS or voice API: a plus sign, the calling code and the national number, with no spaces and no trunk prefix. The E.164 glossary entry says why a number needs its country to get there.
- national · international
- The number written for a reader inside its own country, with the trunk prefix where the country has one, and for a reader abroad, without it. An extension is kept in both and left out of e164, which cannot carry one.
- country
- The region whose plan the number belongs to, read from the number itself: +1 and +7 are each shared by several regions. Empty for the codes that belong to no country, such as +800.
- plan line type
- The type the metadata gives the range the number sits in, not the number's own history: a ported number keeps its range's type. The North American plan hands out mobile and landline numbers from the same blocks, so +1 numbers answer fixed_line_or_mobile; why, and what the block holder can settle.
- time zone · local time
- The zones libphonenumber names for the range, narrowed to the number's own country: where the range is, never where the person is. The local time is read when you press Format and shown only when every zone shares one UTC offset.
- fits the plan
- Yes when the metadata lists the number as valid, or when it sits in a range reserved for fiction that declares a line type, such as Ofcom's drama numbers. It is not the lookup's valid: the phone number lookup also reads the regulator's allocation table where one is installed, and answers valid false with the reason unassigned_block for a number in a block nobody holds, except a number in a range reserved for fiction, which stays valid.
- reason and did you mean
- A number that does not fit carries the reason the lookup gives (missing_country, too_short, invalid_number and the rest are in the reason reference) and, when exactly one other reading of its digits fits a plan, with a plus in front or with a foreign international prefix such as 011 removed, that reading as a suggestion. It is never applied, and a reading in a block the regulator lists as unassigned is not offered unless a range reserved for fiction claims it.
Trunk prefixes: dialled at home, dropped after the calling code
A trunk prefix is the digit or digits dialled in front of a number inside its own country and left out after the calling code. Of the 245 numbering regions in libphonenumber 9.0.40, 113 use 0, 101 have none and 31 use another prefix. In 17 of the regions without one, a number can itself start with a 0, which then stays in international and E.164 form.
That is why +44 (0)20 7946 0018 is wrong. ITU-T Recommendation E.123 uses parentheses for digits that are not always dialled and says they should not be used in an international number (clause 7.2), and it notes that callers abroad have to leave out a foreign trunk prefix (clause 2.8). This formatter, like libphonenumber, reads that spelling as +44 20 7946 0018; a system that keeps every digit stores +4402079460018, which is not a number in the UK plan.
The opposite mistake hits Italy, Vatican City, Benin, Gabon and San Marino. There is no trunk prefix there, and a landline number starts with a 0 that belongs to it: 02 1234 5678 is +39 02 1234 5678, E.164 +390212345678. A system that strips a leading 0 after every calling code drops a digit of the number itself.
Regions whose trunk prefix is not 0, or whose numbers keep a leading 0
| region | calling code | trunk prefix | international prefix | example: national · international |
|---|---|---|---|---|
| United States, American Samoa, Anguilla, Antigua & Barbuda, Bahamas, Barbados, Bermuda, British Virgin Islands, Canada, Cayman Islands, Dominica, Dominican Republic, Grenada, Guam, Jamaica, Montserrat, Northern Mariana Islands, Puerto Rico, Sint Maarten, St. Kitts & Nevis, St. Lucia, St. Vincent & Grenadines, Trinidad & Tobago, Turks & Caicos Islands, U.S. Virgin Islands | +1 | 1 | 011 | (201) 555-0123 +1 201-555-0123 |
| Russia, Kazakhstan | +7 | 8 | 8~10 | 8 (301) 123-45-67 +7 301 123-45-67 |
| Hungary | +36 | 06 | 00 | (06 1) 234 5678 +36 1 234 5678 |
| Italy, Vatican City | +39 | none; 0 kept in fixed_line | 00 | 02 1234 5678 +39 02 1234 5678 |
| Norway, Svalbard & Jan Mayen | +47 | none; 0 kept in uan | 00 | 02000 +47 02000 |
| Côte d’Ivoire | +225 | none; 0 kept in mobile | 00 | 01 23 45 6789 +225 01 23 45 6789 |
| Niger | +227 | none; 0 kept in toll_free, premium_rate | 00 | 08 123 456 +227 08 123 456 |
| Benin | +229 | none; 0 kept in fixed_line, mobile | 00 | 01 20 21 12 34 +229 01 20 21 12 34 |
| Gabon | +241 | none; 0 kept in fixed_line, mobile | 00 | 01 44 12 34 +241 01 44 12 34 |
| Congo - Brazzaville | +242 | none; 0 kept in mobile | 00 | 06 123 4567 +242 06 123 4567 |
| Botswana | +267 | none; 0 kept in toll_free | 00 | 0800 012 345 +267 0800 012 345 |
| Eswatini | +268 | none; 0 kept in toll_free | 00 | 0800 1234 +268 0800 1234 |
| Belarus | +375 | 8 | 8~10 | 8 0152 45-09-11 +375 152 45-09-11 |
| San Marino | +378 | none; 0 kept in fixed_line | 00 | 0549 886377 +378 0549 886377 |
| Belize | +501 | none; 0 kept in toll_free | 00 | 0-800-1234-123 +501 0-800-1234-123 |
| Tonga | +676 | none; 0 kept in toll_free | 00 | 0800 222 +676 0800 222 |
| Fiji | +679 | none; 0 kept in toll_free | 00 | 0800 123 4567 +679 0800 123 4567 |
| New Caledonia | +687 | none; 0 kept in toll_free | 00 | 05.00.12 +687 05.00.12 |
| Marshall Islands | +692 | 1 | 011 | 247-1234 +692 247-1234 |
| Macao SAR China | +853 | none; 0 kept in toll_free | 00 | 0800 501 +853 0800 501 |
| Turkmenistan | +993 | 8 | 8~10 | (8 12) 34-56-78 +993 12 34-56-78 |
The North American plan writes its numbers without the trunk 1, which is also its calling code; E.123 gives the zone its own national notation for that reason (clause 2.4). A ~ in a prefix means wait for a second dial tone (clause 7.6): 8~10 is 8, the tone, then 10. Which line types keep a 0 is read from the metadata's example numbers, so it says an example of that type starts with 0, not that every number does. Every example is libphonenumber's own, not a subscriber's number.
International call prefixes other than 00
The international prefix is what is dialled to leave a country, and what the + stands for in a written number. 185 of the 245 regions dial 00, or name it as the preferred choice among several. The rest dial:
| prefix | regions |
|---|---|
| 011 | American Samoa, Anguilla, Antigua & Barbuda, Bahamas, Barbados, Bermuda, British Virgin Islands, Canada, Cayman Islands, Dominica, Dominican Republic, Grenada, Guam, Jamaica, Marshall Islands, Montserrat, Northern Mariana Islands, Puerto Rico, Sint Maarten, St. Kitts & Nevis, St. Lucia, St. Vincent & Grenadines, Trinidad & Tobago, Turks & Caicos Islands, U.S. Virgin Islands, United States |
| 8~10 | Belarus, Kazakhstan, Russia, Tajikistan, Turkmenistan |
| 0011 | Australia, Christmas Island, Cocos (Keeling) Islands |
| 0 | Cape Verde, Samoa |
| 001 | Guyana, Mongolia |
| 000 | Kenya |
| 009 | Nigeria |
| 010 | Japan |
| 020 | Mauritius |
| 0~0 | Ukraine |
| 119 | Cuba |
| more than one | Bolivia, Brazil, Cambodia, Chile, Colombia, Indonesia, Israel, North Korea, Palau, Singapore, Solomon Islands, South Korea, Taiwan, Tanzania, Thailand, Uganda |
"More than one" is where the metadata stores a pattern of several prefixes and names no preferred one. Source for both tables: libphonenumber 9.0.40 (Apache License 2.0), read on this server. Each region's calling code and an example number per line type are on its page under phone facts by country.
Frequently asked questions
Are the numbers I paste stored?
No. They are formatted in memory for your request and are not stored or cached. Like every free tool on this site, each request leaves one row for 90 days holding a salted hash of what was pasted, of your IP address and of your browser session (and your account, if you are signed in), never the numbers or the address themselves, with the country and network our own IP lookup gives for the connection, so that a free endpoint can be watched for abuse. The privacy notice lists it.
Does "fits the numbering plan" mean a number is in service?
No. It means the number has a length and a range its country's plan uses, according to libphonenumber's metadata, or that it sits in a range reserved for fiction that declares a line type. The phone number lookup also reads the regulator's allocation table where one is installed and answers valid false, with the reason unassigned_block, for a number in a block nobody holds, except a number in a range reserved for fiction, which stays valid. Neither tool says whether a number is in service today.
Why is +44 (0)20 wrong, and why does Italy keep its 0?
ITU-T Recommendation E.123 uses parentheses for digits that are not always dialled and says they should not be used in an international number, because the trunk prefix is dialled only inside the country. The UK trunk 0 is therefore left out after +44: +44 20 7946 0018. Italy has no trunk prefix. The 0 at the start of an Italian landline number is part of the number, so it stays: +39 02 1234 5678.
Is there a limit?
Up to 200 numbers a request and ten requests a minute per visitor. For longer lists, the API takes batches and bulk jobs of up to 100,000 numbers and adds the regulator tables, the flags and the risk score, and the SPAW_PHONE function returns the same forms for a column in Google Sheets. Both need an API key, which comes with 10 free lookups a month; after that a valid number costs 1 credit and an invalid one nothing.
Longer lists: batch and bulk jobs in the API, or SPAW_PHONE in Google Sheets.
More free tools
All free toolsNeed this at scale?
The Spaw API runs the same lookup with batch and bulk endpoints, monitored number lists, your own suppression list and SMS outcome reporting — 10 free lookups a month, no card required.