Free tool — no signup

Free phone number validator

Paste a number with its country code. You get what libphonenumber-grade metadata can prove — whether it's a valid number, its country, and canonical E.164 — plus an honest note on the carrier and live-reachability checks that metadata alone can't answer.

Include the country code — try or .

SampleA real response for this input — press Verify to run it live.

+1 (650) 447-2983Valid number
Line typeFixed line or mobile
CountryUS
E.164+16504472983
National(650) 447-2983

Checked

FormatRegionLine typeAllocation

Not claimed — we won't fake it

CarrierPorted statusHLR liveness

What the free check covers

Everything it checks — and everything it won't fake.

Checked

Runs on every result above.

Format

Whether the digits form a possible and valid number for their country, using Google's libphonenumber ruleset — the same engine that ships in Android.

Region

The country the number belongs to, derived from its country code and prefix.

Line type

Mobile, fixed line, toll-free and so on — where the national numbering plan makes it derivable. Some ranges are genuinely ambiguous (fixed-or-mobile), and the result says so instead of picking one.

Not claimed

Marked not-run in the result, never guessed.

Carrier

Which network currently serves the number. That needs a live carrier lookup, which this metadata tool doesn't run.

Ported status

Whether the number has been moved between carriers — the reason a prefix no longer tells you the network. Same live lookup, marked not-run.

HLR liveness

Whether the handset is switched on and reachable right now. That's a paid live query priced to its wholesale cost; it's marked not-run until it runs, never assumed.

What E.164 is, and why you want to store it

The international standard format. Store numbers this way and they dedupe cleanly and drop straight into any dialer, SMS API or CRM.

+16504472983

pluscountry codenational number

Up to fifteen digits, no spaces or punctuation. This validator returns the E.164 form for any valid number, so you normalize on the way in.

Possible, valid, reachable — three different questions

Metadata answers the first two with confidence, and cannot answer the third.

  1. PossibleDoes it have a plausible length for its country? runs here
  2. ValidDoes it fit an allocated range in the numbering plan? runs here
  3. ReachableWould a live handset answer right now? not run

A number can be perfectly valid and long disconnected. Anyone selling "valid" as "reachable" is charging you for a hope.

Why not just use a regex

International numbering is too varied for a pattern — lengths, prefixes and mobile/fixed rules differ by country and change over time.

One regex

Accepts impossible numbers

A pattern loose enough for every real number is loose enough for a pile of junk.

libphonenumber

Actual per-country rules

The allocated ranges themselves, updated as they change.

Which is why it's the baseline this tool builds on, rather than a hand-rolled expression.

Questions

Is the phone number validator free?

Yes — no signup, no card. It runs the same zero-cost metadata checks the free API tier runs, with an hourly per-visitor limit. The free tier gives you 250 checks a month if you want to call it from code, and credits never expire.

Does it tell me the carrier or whether the number is active?

No — and it marks both as not-run rather than guessing. Carrier, ported status and live reachability (HLR) all need a paid live lookup. This tool answers what the numbering plan can prove: is it a valid number, for which country, in what format.

What is E.164 format?

The international standard format: a plus sign, the country code, and the national number with no spaces or dashes, e.g. +16504472983. It's the safest way to store phone numbers because it's unambiguous worldwide. The validator returns it for any valid number.

Can it validate numbers from any country?

Yes. Include the country code (the leading +) and it validates against that country's rules. Without a country code you can pass a default country and it'll interpret the national number accordingly.

How do I validate phone numbers in my code?

One POST to /v1/verify/phone with a bearer key. You get valid, country, line_type, the E.164 and national formats, and the checks.performed / not_performed lists so your code knows exactly what was checked. Reference at boundstone.io/docs.

Need to validate numbers in your app, or clean a whole call list?

The same checks, one HTTP call — with checks.performed / not_performed on every response, so your code knows what a verdict was based on.

curl -X POST https://api.boundstone.io/v1/verify/phone \
  -H "authorization: Bearer bs_live_YOUR_KEY" \
  -H "content-type: application/json" \
  -d '{"phone":"+16504472983"}'
# → { valid, country, line_type, e164, national_format,
#     checks: { performed, not_performed } }

Early access — free tier is 250 credits/month, forever

The API is live — start free without waiting. This list gets benchmark № 001 the day it publishes. One email. We validate emails for a living — we're not going to spam yours.