Phone number formats, prefixes and validation, for developers.
Valid fixed line or mobile number in United States.
| Country | United States numbering plan |
|---|---|
| Line type | Fixed line or mobile |
| Carrier the block was allocated to | No carrier on record for this prefix |
| E.164 | +12015550123 |
| International | +1 201-555-0123 |
| National | (201) 555-0123 |
| RFC 3966 | tel:+1-201-555-0123 |
Source: North American Numbering Plan Administrator (NANPA); Canadian Numbering Administrator (CNAC); National numbering plans, ITU-T E.164 (ITU)
The same answer from a terminal: curl https://phonelookup.dev/+14155552671
What you can do here
Explore the world by calling code
All 245 numbering plans as tiles in the ITU's nine zones, coloured by number length, portability or exit code, with every plan's facts in a table.
A corner of Europe, coloured by mobile number length.
Facts about numbering plans
What the plans have in common and where they differ: zones, shared codes, exit codes, trunk prefixes, number lengths, portability, computed from the data.
| 4 digits | 2 |
|---|---|
| 5 digits | 7 |
| 6 digits | 12 |
| 7 digits | 41 |
| 8 digits | 71 |
| 9 digits | 99 |
| 10 digits | 65 |
| 11 digits | 7 |
| 12 digits | 2 |
| 13 digits | 1 |
plans allowing that length
Build a validation regex
Pick a country and the line types you accept; get the plan's anchored pattern and a validator in JavaScript, TypeScript, Python, Java, Go, PHP, Ruby, C# or Rust.
The United Kingdom's mobile numbers, as the plan defines them:
^(?:7(?:457[0-57-9]|700[01]|911[028])\d{5}|7(?:[1-3]\d\d|4(?:[0-46-9]\d|5[0-689])|5(?:0[0-8]|[13-9]\d|2[0-35-9])|7(?:0[1-9]|[1-7]\d|8[02-9]|9[0-689])|8(?:[014-9]\d|[23][0-8])|9(?:[024-9]\d|1[02-9]|3[0-689]))\d{6})$How to dial, from anywhere to anywhere
Where you are, whom you call, the number: the exit code, the country code, the national number without its trunk prefix, and why.
From the United Kingdom, dial 00 33 6 12 34 56 78.
Phone numbers in your language
One tested file per language that reads a number as typed, validates it against the plans you pick, names its line type, writes E.164 and says what to dial.
>>> parse("07400 123456", "GB")
PhoneNumber(e164='+447400123456', region='GB', type='mobile', cc='44', nsn='7400123456')Country by country
One page per numbering plan: at a glance, the checker, the regex tester, the prefix tree, then the full tables — formats, lengths, patterns and carrier blocks.
- Australia+61 412 345 678
- Belgium+32 450 00 12 34
- Brazil+55 11 96123-4567
- Canada+1 506-234-5678
- France+33 6 12 34 56 78
- Germany+49 1512 3456789
- India+91 81234 56789
- Indonesia+62 812-345-678
- Ireland+353 85 012 3456
- Italy+39 312 345 6789
- Mexico+52 222 123 4567
- Netherlands+31 6 12345678
- Nigeria+234 802 123 4567
- Pakistan+92 301 2345678
- Philippines+63 905 123 4567
- Poland+48 512 345 678
- Saudi Arabia+966 51 234 5678
- South Africa+27 71 123 4567
- Spain+34 612 34 56 78
- Sweden+46 70 123 45 67
- Switzerland+41 78 123 45 67
- Türkiye+90 501 234 56 78
- United Arab Emirates+971 50 123 4567
- United Kingdom+44 7400 123456
- United States+1 201-555-0123
More countries follow as their data clears the bar.
What a numbering plan can and cannot tell you
A numbering plan says what a number looks like, how long it is, which line type its range belongs to and which carrier the block was first allocated to. It cannot say whether a particular number is in service, or, in a country with number portability, which carrier serves it today: that is a question for the networks themselves, answered by an HLR or MNP query, not by any table.