Phone number validator
Paste any phone number — we tell you if it's valid, format it for every system (E.164, international, national, click-to-call), identify the country and line type (mobile, landline, VoIP, toll-free), and explain what each means. 100% in your browser. No signup. No data leaves your device.
Enter a phone number
Works with any input format — paste with country codes, dashes, parens, or spaces. Validation happens locally in your browser (libphonenumber). Nothing is stored or sent to a server.
Result
What does a phone number validator actually check?
A phone number isn't just a string of digits — it's a hierarchy. A country code at the top (1 for the US and Canada, 44 for the UK, 91 for India), then an area or city code, then a subscriber number. Each country's regulator publishes which ranges are assigned to which carriers and for what purpose. A real validator (like this one) loads that metadata and checks four things at once.
- Country code is real. If you type +99, you get rejected — no country uses that code. Most validators that fail here are doing string-length checks instead of metadata lookups.
- Length is right for that country.US numbers are 10 digits after the country code. UK mobiles are 10. German mobiles are 11. India is 10. Wrong length means the number can't exist.
- The number falls inside an assigned range.Even if the length is right, the prefix has to be one a carrier actually uses. US numbers starting with 555-01XX are fictional (reserved for movies and TV). Numbers starting with unassigned prefixes are flagged as "possibly valid" — length is right, but no carrier owns that block.
- Line type is identified. Mobile, landline, VoIP, toll-free, premium rate — each has different SMS behavior, different cost implications, and different fraud signals. The validator above tells you which one.
What this tool doesn't check: whether the line is currently in service. A number can pass all four checks above and still be disconnected, or belong to someone who hasn't paid their bill in six months. To check live carrier status you need a paid API (Twilio Lookup, Numverify) — most use cases don't need that.
When to validate a phone number
- Before saving to your database.Always normalize to E.164 on write. A number stored as "(415) 555-0182" in one row and "+14155550182" in another will break every dedupe, lookup, and SMS send that touches them.
- Before sending an SMS.Landlines don't accept SMS — sending anyway burns Twilio credit on guaranteed-fail messages. Validate the line type first; fall back to voice for landlines.
- Before placing a phone call from your app. Twilio, Telnyx, and similar APIs return cryptic errors when given a malformed number. Catch it in the form, not at runtime.
- On every form submit. Validate client-side and reject obviously bad numbers before the user moves on. Bad data in is harder to fix later than bad data at the form.
- When cleaning a CRM export.Bulk import from a CSV? Validate each row, normalize to E.164, flag rows that won't parse. Then dedupe by the normalized form — you'll find duplicates that surface formatting was hiding.
Phone number line types explained
libphonenumber distinguishes between several line types. Each behaves differently — especially for SMS, cost, and fraud signals.
Mobile· MOBILE
Cell phone. SMS, MMS, and most carrier features work. Safe default for two-factor auth and reminders.
Landline· FIXED_LINE
Traditional wired phone. SMS usually fails — voice only. Common for offices, older businesses, and homes.
Landline or mobile· FIXED_LINE_OR_MOBILE
Carrier doesn't distinguish — could be either. Treat as mobile for SMS but don't guarantee delivery.
VoIP· VOIP
Internet-based line (Google Voice, OpenPhone, Vonage, virtual receptionists). SMS works on most modern providers; older PBX VoIP may not.
Toll-free· TOLL_FREE
Free for the caller. US: 800, 833, 844, 855, 866, 877, 888. Used by businesses for inbound customer service.
Premium rate· PREMIUM_RATE
Caller pays per minute. Paid hotlines, voting lines, adult services. Be careful — accidental dialing is expensive.
Personal number· PERSONAL_NUMBER
A forwarding number not tied to a single device. Common in the UK (070 prefix).
The four phone number formats you actually use
E.164
+14155550182
The international standard. Plus sign, country code, subscriber number, no punctuation. Every phone API expects this. Always store this in your database.
International
+1 415 555 0182
Human-readable across countries. Use this when displaying a number to someone who might be outside the country it belongs to.
National
(415) 555-0182
Country-local display style. (415) 555-0182 in the US, 020 7946 0958 in the UK. Use this when you know the reader is local.
Click-to-call (tel:)
tel:+14155550182
Drop into href on a link or button. Tapping on a phone opens the dialer with the number pre-filled. Use the E.164 form so it works when the visitor is roaming.
Phone number validator FAQ
What is a phone number validator?+
A phone number validator checks whether a string of digits is actually dialable — that the country code is real, the length is right, and the number falls inside a range that a carrier in that country actually uses. A good validator also identifies the country, the line type (mobile, landline, VoIP, toll-free), and gives you the number in the formats different systems expect: E.164 for APIs, International for human display, National for inside-country display, and a tel: URI for click-to-call links.
What is E.164 format?+
E.164 is the international standard for phone numbers — a plus sign, then the country code, then the subscriber number, with no spaces or punctuation. A US example: +14155550182. Every phone API on earth (Twilio, Stripe, RingOwl, your CRM) wants numbers in E.164. If you store numbers any other way, you'll have format mismatches the moment a customer enters a different style.
Is this validator accurate?+
It uses Google's libphonenumber metadata — the same library that powers Android's phone app and most major carriers' validation systems. It catches: invalid country codes, wrong-length numbers, numbers outside any assigned carrier range, common typos. What it cannot tell you is whether a number is currently in service (whether someone is paying their bill, whether the line has been disconnected). For that you need a live lookup API (Twilio Lookup, Numverify) — those cost money per query and aren't necessary for most use cases.
Why does my number show "possibly valid" instead of valid?+
"Possibly valid" means the length is plausible for the country but the number doesn't fall inside any range a carrier in that country is known to use. This usually means: (1) the country is wrong — try a different country in the dropdown, (2) the number is a fictional/test number (like 555-0100 in the US), or (3) the number range is too new and hasn't been published in the latest metadata yet. For real customer data, treat "possibly valid" as invalid and ask for a correction.
Will SMS work on a landline number?+
Usually not. Most landlines (FIXED_LINE in our output) don't accept SMS — texts sent to them either fail silently or get read aloud by a robot service the customer never set up. If you're collecting numbers for SMS reminders or two-factor auth, validate the type up-front and either reject landlines or fall back to a voice call. RingOwl's missed-call texts handle this automatically — landline customers get a callback voicemail instead of an SMS.
What about VoIP numbers — are they safe to text?+
Depends on the provider. Google Voice, OpenPhone, and most modern business VoIP lines accept SMS just fine. Older PBX VoIP and corporate switchboards may not. The safest rule: treat VoIP as "send and verify" — send the SMS, but also have a voice fallback. If you're filtering signups for fraud, VoIP is a weak signal (real customers use Google Voice constantly) — don't auto-reject VoIP numbers.
How do I add a click-to-call link to my website?+
Use the click-to-call URI from the result above — it starts with tel: and includes the E.164 number. Drop it into the href on a button or link: <a href="tel:+14155550182">Call us</a>. On a phone, tapping the link opens the dialer with the number pre-filled. Use the E.164 form, not the formatted national form — country code matters when the visitor is roaming.
Does this work for numbers outside the US?+
Yes — all 240+ countries libphonenumber supports. Pick the country from the dropdown (or paste a number with a + and country code and we'll auto-detect). Validation rules, length, and type identification all come from the country-specific metadata. The metadata is updated regularly by Google's libphonenumber team as carriers assign new ranges.
Is my phone number sent to a server?+
No. The entire validation happens in your browser — libphonenumber-js ships with all the country metadata bundled, so no API calls leave your device. RingOwl doesn't log, store, or see anything you type here. Refresh the page and it's gone.
Can I bulk-validate a list of phone numbers?+
Not in this tool — it's built for single-number checks. For bulk validation (cleaning a CRM export, deduping a list, format-normalizing thousands of contacts to E.164), use libphonenumber-js directly in a script, or a service like Twilio Lookup if you also need live carrier status. If you have a few dozen numbers, paste them one at a time — the validator runs instantly.
Validating numbers is the easy part
Answering them is where most businesses lose.
RingOwl is the AI answering service for appointment-heavy SMBs. Every caller hears a friendly receptionist, every booking lands in your calendar, every lead gets texted to you with a structured summary — no missed calls, no voicemail tag.
7-day trial · 30 minutes included · No credit card.
Related free tools