# How to check if a phone number is active (and what "active" really means)

> Valid, active, reachable and registered mean different things. The methods for checking each one, what they cost and where every method falls short.

Canonical: https://mobilevalidate.com/blog/how-to-check-if-a-phone-number-is-active · Last updated: 2026-09-25

![Cover: How to check if a phone number is active (and what "active" really means)](https://mobilevalidate.com/og/blog/how-to-check-if-a-phone-number-is-active.png)


By MobileValidate team (https://mobilevalidate.com/about) · Published: 2026-09-25 · Category: Guides · Tags: Number reachability, HLR lookup, Carrier lookup, Number validation, Reassigned numbers

To check if a phone number is active, first decide which kind of "active" you need. A number can be **valid** (the digits are possible), **in service** (assigned to a line), **reachable** (the phone is on the network now) or **registered** (it has an account on an app). Each needs a different check, and only a reply from the person proves they hold the phone.

## What are the four meanings of "active"?

People say "active number" and mean different things. Separating them avoids paying for the wrong check.

| Meaning | Question | Changes how often | Example of a number that fails |
|---|---|---|---|
| Valid | Do the digits fit the country's numbering plan? | Rarely (plan changes) | `+44 7911 12345`: one digit short |
| In service | Is the number assigned to a line with some operator? | Weeks to years | A mobile number disconnected when a contract ended |
| Reachable | Is the phone attached to a network right now? | Minutes | A phone switched off overnight |
| Registered | Does the number have an account on a given app or service? | Months | A basic phone with no messaging apps |

The layers are independent. A number can be valid and never assigned. It can be in service and unreachable because the phone is off. It can be reachable and registered nowhere. The [number reachability glossary entry](/glossary/number-reachability) describes the same ladder from the network's point of view.

## How do you check that a number is valid?

Validation compares the number with the numbering plan of its country. The international format, E.164, allows at most 15 digits including the country code ([ITU, 2010](https://www.itu.int/rec/T-REC-E.164/en)), and each country's plan sets the lengths and ranges inside that. Open-source libraries encode those plans, so the check runs offline and costs nothing.

MobileValidate validates and normalizes every number on every request. You see the outcome in `number_status`: `valid`, `invalid_number` or `duplicate` (the same number appeared earlier in the request after conversion to [E.164](/glossary/e164)). Invalid and duplicate rows are never checked and never charged.

A real test-mode request shows how three inputs collapse into one number plus one error:

```bash
curl https://api.mobilevalidate.com/v1/lookup \
  -H "Authorization: Bearer $MOBILEVALIDATE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"numbers": ["07700 900001", "0044 7700-900001", "12345"], "checks": ["whatsapp"], "default_country": "GB"}'
```

The results come back as `valid`, `duplicate` and `invalid_number`, in input order. Validation is the right first filter. It removes typos while the person is still on your form. It says nothing about whether the line exists.

## How do you check that a number is in service?

A number is in service when an operator has assigned it to a line. Two kinds of data help.

**Carrier and line-type data.** A [carrier lookup](/services/carrier-lookup) returns the number's `line_type`, the current `carrier` and its `country` from reference data. If we hold no data for a valid number, the answer is `unknown` with reason `NO_DATA` and it is free. Data for a number is a sign it belongs to an operator's active ranges, but reference data isn't refreshed every minute, and it doesn't prove a subscriber holds that exact number.

**A live network query.** For mobile numbers, the home network's subscriber register knows whether a number is assigned. An [HLR lookup](/glossary/hlr-lookup) asks it directly and gets back reachable, unreachable or invalid (not assigned). This is the most direct in-service test for mobile numbers. MobileValidate's [HLR lookup](/services/hlr-lookup) is **coming soon**; today a request for it returns `403 service_disabled`, even with a test key.

Neither method works the same way for landlines, and most VoIP numbers have no subscriber register an outsider can query.

## How do you check that a phone is reachable right now?

Reachability is the most short-lived property on the list. The home network knows whether the SIM is currently attached; that changes whenever the phone is switched off, loses coverage or goes into a tunnel.

A live network query reports it without contacting the handset. The planned `number.hlr` service defines these states:

| `status` | Meaning | What to do |
|---|---|---|
| `reachable` | Assigned and attached | Send or call |
| `unreachable` | Assigned, but not attached now | Retry later, or use another channel |
| `invalid` | Not assigned | Remove from the list |
| `unknown` | No conclusive answer (network error, timeout) | Keep your default behaviour; not charged |

Two cautions. First, a single `unreachable` is not a verdict. A phone off at 3 a.m. is fine at 9 a.m.; repeated answers over several weeks are what suggest an abandoned number. Second, some operators block or mask external queries, so a good service returns `unknown` rather than a guess.

## How do you check that a number is registered on an app?

Messaging apps keep their own account databases, and each one verified the number at sign-up. A channel check asks whether an account exists for the number, without sending a message and without returning any name or profile.

In MobileValidate, [WhatsApp](/services/whatsapp-number-check), [Telegram](/services/telegram-number-check) and [Viber](/services/viber-number-check) checks run in real time; others, such as iMessage, RCS and Signal, run in bulk jobs. Each answers `registered: true`, `false` or `null` (unknown), with `checked_at`.

What a registration tells you: somebody completed the app's verification with this number at some point and the account still exists. What it doesn't tell you: whether that person still holds the number, or whether the phone is on today. Apps remove inactive accounts only after a period they set themselves, so a recycled number can keep the previous owner's account for a while.

Use channel checks to choose a channel for messages people agreed to receive, and as one sign of real use. See [check if a number is on WhatsApp](/blog/check-if-a-number-is-on-whatsapp-api-guide).

## What is the only definitive test?

Contacting the person, and getting an answer back. A one-time passcode that is entered on your site proves that whoever is in front of the screen controls the phone right now. That is why authentication standards treat the code, not a lookup, as the verification step. They also warn that the phone channel has weaknesses: NIST's 2025 guidelines classify out-of-band codes sent over the phone network as a *restricted* authenticator and say verifiers should consider risk indicators such as a SIM change or a number port before relying on it ([NIST, 2025](https://csrc.nist.gov/pubs/sp/800/63/b/4/final)).

So lookups and codes play different roles:

- **Lookups** run before you contact anyone. They are cheap filters that decide whether a message is worth sending, and on which channel.
- **A confirmed code or a call answered** proves possession. It costs a message and needs the person's cooperation.

Don't send test messages to numbers that never agreed to hear from you. A lookup exists precisely so you don't have to.

## How do you know if a number now belongs to someone else?

This is the question none of the network or app checks answer. Operators recycle numbers after disconnection. A reassigned number is valid, in service, reachable and possibly registered on apps, all for its new owner.

In the US there is a dedicated source. The FCC's Reassigned Numbers Database became operational on 1 November 2021, and by 17 February 2023 it held over 305.9 million geographic and toll-free numbers; providers must report permanent disconnections monthly ([FCC, 2023](https://www.fcc.gov/reassigned-numbers-database)). Under US rules, callers who query it may qualify for a safe harbor from liability for calls to reassigned numbers; check the conditions with your counsel.

A reachability or porting result is not a substitute for that database. In other countries, the practical approach is to reconfirm consent when you haven't been in touch for a long time, and to treat a change in carrier or line type since your last check as a prompt to reconfirm.

## Which checks should you combine?

Pick by the cost of being wrong:

| Situation | Checks | Notes |
|---|---|---|
| Sign-up form | Validation + line type | Instant feedback; add a channel check if you deliver codes by app |
| Before sending an OTP | Validation + line type; reachability once available | Don't block on `unknown`; fall back to your normal flow |
| Cleaning an old list before a consented campaign | Validation + line type in a bulk job; reachability once available | See [cleaning a list in bulk](/blog/how-to-clean-a-phone-number-list-in-bulk) |
| Choosing a channel for an opted-in customer | Channel checks | Refresh monthly or after a failed delivery |
| US calling list | The FCC database for reassignment, plus line type | Network checks don't answer "same person?" |

In MobileValidate, you pay per check and only for conclusive answers. You're not charged for inconclusive results (unknown, unsupported country, timeout, invalid, duplicate). See [pricing](/pricing).

## How do you test this without real numbers?

Use numbers that can never belong to anyone. The UK regulator reserves `07700 900000` to `07700 900999` for drama, and they are never assigned ([Ofcom](https://www.ofcom.org.uk/phones-and-broadband/phone-numbers/numbers-for-drama)). MobileValidate's [test mode](/docs/test-mode) uses this range: `+447700900001` answers registered or with carrier data, `…002` answers "no" or no data, `…003` simulates a timeout, `…004` stays pending for about five seconds, and `…005` returns unsupported country. Test keys never reach a real network and are never billed, so you can build every branch of your "is it active?" logic first.

## What are the key takeaways?

- "Active" means one of four things: valid, in service, reachable or registered. Decide which you need first.
- Validation is free and catches typos, but not dead numbers.
- Carrier data shows line type and network; a live network query (HLR, coming soon in MobileValidate) shows whether a mobile phone is attached right now.
- App registration shows real use at some point, not today's state.
- Only a reply from the person proves possession. In the US, the FCC's database is the dedicated source for whether a number was disconnected and may have changed hands.
- Treat `unknown` as missing data, never as a negative. It is free.

For the difference between the network checks, read [HLR vs MNP vs number validation](/blog/hlr-vs-mnp-vs-number-validation).

## Sources

1. [Recommendation ITU-T E.164: The international public telecommunication numbering plan](https://www.itu.int/rec/T-REC-E.164/en) — ITU, 2010
2. [Reassigned Numbers Database](https://www.fcc.gov/reassigned-numbers-database) — FCC, 2023
3. [NIST SP 800-63B-4: Digital Identity Guidelines, Authentication and Authenticator Management](https://csrc.nist.gov/pubs/sp/800/63/b/4/final) — NIST, 2025
4. [Telephone numbers for use in TV and radio drama programmes](https://www.ofcom.org.uk/phones-and-broadband/phone-numbers/numbers-for-drama) — Ofcom, 2025

## Frequently asked questions

### Can I check whether a number is active without sending a message?

Partly. Validation, a carrier lookup, a live network query (HLR) and channel checks all work without contacting the person. Only a message or call that the person answers proves they hold the phone right now.

### Does a WhatsApp account prove a number is active?

It shows the number passed WhatsApp's sign-up verification at some point and still has an account. It doesn't prove the phone is on today, and a recycled number can still show the previous owner's account for a while.

### What does unreachable mean in a live network check?

The number is assigned, but the phone is switched off, out of coverage or not attached to the network at that moment. Treat a single unreachable answer as 'try later', not as 'dead'.

### How do I know if a US number was reassigned to someone else?

The FCC's Reassigned Numbers Database is built for that question: it tells callers whether a US number has been permanently disconnected since a given date, based on providers' reports. Network and channel checks can't tell you whether the person behind a number changed.
