Phone Number Validator
Validate international phone numbers with libphonenumber — real per-region rules, line type, and E.164 / national / international formats.
How phone number validation works
Phone numbers follow country-specific rules defined by the ITU-T E.164 standard. This validator uses libphonenumber— Google’s phone-number library (the same rules behind Android) — so it validates 200+ regions with real length and prefix rules, detects the line type (mobile, fixed line, toll-free, VoIP, …), and formats the number three ways: E.164 (the canonical international form, e.g. +14155552671), national, and international. Numbers typed without a +code are interpreted using the selected default region. Your number stays on your device — it is never uploaded, and (unlike most inputs on this site) it is deliberately kept out of the shareable page URL.
Built and maintained by Meet Shah · Last updated
What this tool is used for
- Checking whether a number is well formed for its country before storing it.
- Detecting which country a number belongs to from its prefix.
- Normalising a number to E.164 for an API.
- Validating a list of numbers before an import.
- Distinguishing a malformed number from an unreachable one.
Frequently Asked Questions
- What does validation actually confirm?
- That the number is possible and correctly formed for its country — right length, valid prefix, plausible number type. It cannot confirm the line exists or that anyone answers it; that requires an actual carrier lookup, which no client-side tool can do.
- What is E.164 format?
- The international standard: a plus sign, the country code, then the national number with no spaces or punctuation, maximum 15 digits — `+442071838750`. It is the only format that is unambiguous worldwide, which is why it is what you store rather than what you display.
- Why does a number need a default country?
- Because a national-format number is meaningless without one. `020 7183 8750` is a London number in the UK and nothing anywhere else, and the leading zero is a national trunk prefix that is dropped in E.164 — which is the single most common phone-formatting mistake.
- What does the number type tell me?
- Whether it is mobile, fixed line, toll-free, premium rate or VoIP, inferred from the prefix. It matters practically: you cannot SMS most fixed lines, and premium-rate numbers cost the caller, so a form accepting one where it expected the other creates real problems.
- Can I validate with a regular expression?
- Not reliably. Numbering plans differ by country, change over time, and have exceptions — a regex that appears to work is usually rejecting valid numbers from countries nobody tested. That is precisely why libphonenumber exists and is the size it is.
Common errors and gotchas
- Reading well-formed as reachable, which only a call or a message establishes.
- Assuming the country from the user's locale rather than the number itself.
- Dropping a leading zero that belongs to the national format but not after the country code.
- Accepting a number that is valid in format but assigned to a range that cannot receive messages.
- Validating length against one rule, when it varies by country and by number type.