How to Check if a Phone Number Is Valid (4 Levels, Free to Paid)
To check if a phone number is valid, test it against the country's numbering plan: is the length right, is the prefix allocated, which country and line type does it belong to? That catches every number that can never connect, and it is free to run. To know whether the number is in service right now, you need a carrier lookup, and to know a person answers, you need to call or text it.
Those are different questions with different costs, so it helps to treat them as four levels.
Level 1: does it look like a phone number?
The weakest check is shape: digits, an optional +, a plausible length. A regular expression like ^\+?[0-9 ()\-.]{7,20}$ will reject call me and n/a, and that is about all. It accepts +1 000 000 0000, and it cannot tell that a 10-digit number is right for the US but wrong for Germany.
Shape checks are fine as a first gate on a form. They are not validation. Our post on phone number regex explains why a regex can't do the next level's job.
Level 2: does the numbering plan allow it?
This is what most people mean by "valid": the number is the right length and sits in a range the country has allocated. Every country publishes its numbering plan, and Google's open-source libphonenumber bundles all of them. It answers:
- Is the number valid? Right length and an allocated prefix for its country.
- Which country? Including the small ones that share a code, such as Canada and the Caribbean under
+1. - What type of line? Mobile, landline, toll-free, premium-rate, VoIP and so on, based on the range.
- How to write it. In E.164 (
+14155552671), which is the format dialers and SMS APIs expect. See E.164 format explained.
Here is what level 2 returns for a few real-shaped inputs. We ran each one through libphonenumber 9.0.41:
| Input | Read as | Valid? | Country | Type |
|---|---|---|---|---|
12345 |
US | No | ||
(415) 555-2671 |
US | Yes | US | Mobile or landline |
020 7946 0958 |
UK | Yes | GB | Landline |
+91 98765 43210 |
Yes | IN | Mobile | |
+1 555 555 5555 |
No (555 isn't an area code) |
Level 2 is the right check for cleaning a list before import. It removes every number that cannot work and puts the rest into one format, so duplicates written three different ways collapse into one.
What it can't see: whether anyone holds the number today.
Level 3: is it in service, and with whom?
A carrier lookup asks the networks' own routing databases about the number. In North America that means the porting database that tells a call which carrier now holds the number. Depending on the provider and country, it returns:
- the current carrier, even after the number was ported;
- the real line type: mobile, landline or VoIP, including in the US and Canada, where level 2 can't separate mobile from landline;
- sometimes whether the number is active. Some providers query the mobile network's subscriber register (an HLR lookup) for this. Coverage varies by country.
Carrier lookups cost a fraction of a cent each, because every query hits a live database. That cost is why they're sold per lookup or in monthly allowances, never as truly unlimited. If you only need to know mobile from landline, our post on mobile vs landline lookup goes deeper.
Level 4: does a person answer?
The only proof that a number reaches the right person is a reply. A verification text with a code, or a call that someone answers, is the standard for signups and two-factor login. No database lookup gets you there, because numbers get reassigned. In the US, the FCC runs a Reassigned Numbers Database precisely because a valid, in-service number can belong to someone new.
For a lead list, level 4 happens naturally when you call. The point of levels 2 and 3 is to stop wasting those calls on numbers that were never going to connect.
Which level do you need?
| Your job | Level |
|---|---|
| Stop typos on a signup or checkout form | 2, live as the user types |
| Clean a CRM import or merge duplicates | 2 |
| Sort leads by country or time zone | 2 |
| Send SMS to US/Canadian numbers | 3 (texts don't reach most landlines) |
| Auto-dialer or call campaign | 2, then 3 for the lines you'll actually call |
| Account signup or 2FA | 4 |
Checking a list in bulk
Level 2 on a whole list takes seconds, so do it before anything that costs money. In SimpleVerifier, upload a CSV with a phone column on the verifier. Each row gets phone_status, phone_e164, phone_country and phone_type, and you can download only the valid numbers. Numbers without a country code are read as US numbers. If the file also has emails, they get a live mailbox check in the same pass.
A live carrier lookup on top of that is coming as part of an Email + Phone plan.
Related: free phone number validator, cleaning phone numbers in a CSV.
Common questions
How can I tell if a phone number is real without calling it?
Check it against the country's numbering plan first: that confirms the length and prefix are allocated. Then, if you need more, run a carrier lookup, which asks the phone networks' routing databases who serves the number today. Neither check rings the phone.
What makes a phone number invalid?
The wrong number of digits for its country, a prefix that has not been allocated, a missing or wrong country code, or placeholder values like 000-000-0000. Numbers that fail at this level can never connect, so they are safe to remove.
Can a phone number be valid but not working?
Yes. Validity is about the number's range, not its subscriber. A disconnected number, or one waiting to be reassigned, still sits in a valid range. Only a carrier lookup, or calling it, shows whether it is in service.
Is checking phone numbers in bulk free?
The numbering-plan check costs nothing to run, so some tools include it without a per-number fee. SimpleVerifier's $29.99 plan includes unlimited phone format validation on uploaded CSVs. Carrier lookups are paid everywhere, because each one queries a live network database.
Verify unlimited addresses for $29.99/month
Real SMTP mailbox checks. No credits, no per-email fees.
Get Started