Free Phone Number Validator
Check whether any phone number is valid for its country — verifies digit count, area codes, and numbering plan rules for 240+ countries using Google's libphonenumber. No signup. No data stored.
Enter phone number with country code or select country below.
Up to 100 numbers. Include country code or select a default country below.
| Original | E.164 | International | National | Valid |
|---|
What Does Phone Number Validation Check?
A valid phone number isn't just the right length — it must be possible under that country's national numbering plan. Our validator checks three layers:
Digit Count
Every country's regulator defines an exact digit count. US numbers are always 10 digits; French numbers always 9 (after the trunk 0). Wrong-length numbers fail immediately.
Area Code & Prefix Rules
Not all combinations of digits are valid area codes. US area codes cannot start with 0 or 1; Indian mobiles must start with 6–9. Impossible prefixes are caught here.
Mobile vs. Landline Plan
The numbering plan specifies which ranges are mobile, geographic, freephone, or premium. A number in an unallocated range — such as UK drama range 07700 900xxx — is flagged invalid.
Why Validate Before You Store or Send
Invalid phone numbers in a database cause silent failures — SMS messages that never deliver, voice calls that never connect, and CRM deduplication that misses duplicates. Validating at the point of entry with a country-aware tool catches these before they propagate.
- SMS & voice APIs — Twilio, Vonage, AWS SNS, and MessageBird all reject numbers that are not valid E.164. A structurally invalid number is an API error before it becomes a failed delivery.
- CRM deduplication — Salesforce and HubSpot match contacts by phone. A number
stored as
07700900123and the same number as+447700900123appear as two different contacts unless normalised and validated to E.164 first. - Form validation — A regex like
/^\+?[0-9]15$/accepts obviously wrong numbers. Country-aware validation rejects them at submission time, when the user can still correct the entry. - Data migration — Legacy contact exports often contain national-format numbers with no country code. Validation identifies which records are parseable and which need manual review before import.
import { isValidPhoneNumber, parsePhoneNumber } from 'libphonenumber-js/min';
// Validate a number for a specific country
isValidPhoneNumber('+14155550132') // true
isValidPhoneNumber('07700 900123', 'GB') // false (drama range)
isValidPhoneNumber('+447911123456') // true
// Parse to get E.164 and country
const phone = parsePhoneNumber('+447911123456');
phone.country // 'GB'
phone.number // '+447911123456'
phone.isValid() // true Phone Number Validator — FAQ
What is phone number validation?
Phone number validation checks whether a number is structurally possible for a given country — verifying digit count, area code ranges, and numbering plan rules defined by the national regulator.
A valid number produces parseable E.164, International, National, and RFC3966 outputs. An invalid number fails before formatting, returning an error instead.
How does this validator work?
Enter any number in any format and select a country. The validator runs Google's libphonenumber — the same library used by Google Contacts, WhatsApp, and Twilio — against the full national numbering plan for that country.
All processing happens in your browser. No data is sent to a server and nothing is stored.
What is the difference between formatting and validation?
Validation answers: "is this number structurally possible for this country?" Formatting answers: "what does this number look like in E.164 / International / National?"
Our tool does both together — it validates first, then formats. A number that fails validation cannot be formatted, which is why invalid numbers show an error rather than format outputs.
How do I validate a phone number in E.164 format?
Enter the number (with or without the leading +), select the country, and check
whether a valid E.164 output appears. A valid E.164 number follows
+[CountryCode][Number] with no spaces, up to 15 digits total.
Examples of valid E.164 numbers:
+14155550132— US+447911123456— UK+919876543210— India+8613812345678— China
Can I validate without an API key or sign-up?
Yes — this tool is completely free and requires no account, no API key, and no server
request. Your phone numbers are processed entirely in your browser using the
libphonenumber-js library and never leave your device.
For developers: npm install libphonenumber-js and use the same validation
logic in your own JavaScript or TypeScript project.
What makes a phone number invalid?
A number fails validation when it breaks one or more of these rules:
- Wrong digit count — e.g. 9 digits for a 10-digit country
- Impossible area code — e.g. US area codes cannot start with 0 or 1
- Wrong mobile prefix — e.g. Indian mobiles must start with 6, 7, 8, or 9
- Unallocated range — e.g. UK drama range 07700 900xxx is reserved and not assigned to subscribers
Regex-only validators miss most of these; libphonenumber catches all of them using the full numbering plan for each country.
How do I validate international phone numbers in JavaScript?
import { isValidPhoneNumber } from 'libphonenumber-js/min';
// With full E.164 number
isValidPhoneNumber('+14155550132') // true
// With national number + country code
isValidPhoneNumber('07911 123456', 'GB') // true
isValidPhoneNumber('0800 123456', 'DE') // true
Install via npm install libphonenumber-js. The /min bundle is
lighter — use /mobile or the full package if you need type detection too.
Which countries are supported?
All 240+ countries and territories worldwide, using the same country metadata embedded in Android, WhatsApp, and Google Contacts. Every national numbering plan is covered — digit counts, area code rules, mobile vs. landline distinction, and special number ranges.