Messaging

Phone number validator

Check whether a phone number is a real, assigned range, and see every format it's used in.

Free, no accountIn your browser

With its country code (+44, +1) or, without one, give the country below.

Two letters, for a number written without its +country code. Ignored when the number starts with +.

Try

Result

Nothing to validate yet

Enter a phone number and it is checked as you type.

What this is

This phone number validator checks whether a number is a real, assigned range in its country's numbering plan, says what kind of line it was assigned to, and gives you every common format - E.164, international, national and RFC 3966's tel: - each with its own copy button.

A phone number is valid in the sense this tool means when its shape matches a real range a country's numbering plan has actually assigned - not merely a length that could belong to it, and never whether the line still rings today. Google's own libphonenumber project, which this tool is built on, is explicit that it answers the range a number was assigned to, not who carries it now or whether it is in service.

How to read the result

The facts row names the country, its calling code, the national number and the type the numbering plan assigns to this range, in plain words, and whether the number is valid. Below it, each format - E.164, international, national and tel: - has its own copy button, so you can take exactly the one your system needs.

A number can be the right length for its country without being assigned at all: that shows as "right length, but not an assigned range" rather than being called valid. Every result also repeats the one caveat worth repeating: an assigned range is not proof a line is live.

A malformed number breaks every check further down the line before any of them get a chance to matter; see sending an SMS that arrives for segment pricing, sender-name rules and A2P throughput, the three checks that come after this one.

Common mistakes

What goes wrong most often, and how to tell.

  • Reading "valid" as "this line is in service"Valid means the shape matches a real assigned range, not that the line answers today. Only a live carrier check - out of scope here - can say that.
  • Typing a national number with no country code and no hintA national number with no leading + and no country hint is ambiguous: the same digits can be a valid, assigned range in more than one country's numbering plan, so this tool has no single plan to check it against.

Questions

What people ask about this tool.

  • No. It means the shape matches a real range a numbering plan has assigned. Whether the line answers, or who carries it after a porting, is not something this kind of check can see.
  • A national number on its own is ambiguous - the same digits can be a valid number in more than one country. A leading + country code carries that information itself; without one, the two-letter country field supplies it.
  • The number is the right length for that country's numbering plan, but the specific range has not actually been assigned - it is possible, as a shape, without being valid, as an assignment.
  • No. The number is parsed in your browser against the same numbering-plan metadata that shipped with this page - nothing you type here is ever sent to a server.

Sources

Every fixed value here comes from the provider’s own documentation. These pages change, so each says the day it was last read.

Use it from the API

The same check, as one request.

Request
curl -X POST https://resellerhq.com/api/tools/phone-number-validator \
  -H "Content-Type: application/json" \
  -d '{"number":"7911123456","country":""}'
Response
{
  "tool": "phone-number-validator",
  "input": {
    "number": "7911123456",
    "country": ""
  },
  "result": {
    "verdict": {
      "tone": "danger",
      "headline": "Not a phone number",
      "summary": "No country: start the number with its country code (+44, +1) or give a two-letter country below."
    },
    "findings": [
      {
        "id": "range-not-live",
        "severity": "info",
        "title": "Not a live carrier check",
        "detail": "This is the range the number was assigned to, not a live carrier or existence check: it cannot say whether the number is in service, rings, or who carries it today after porting.",
        "pinned": true
      },
      {
        "id": "could-not-parse",
        "severity": "fail",
        "title": "Could not read this as a phone number",
        "detail": "No country: start the number with its country code (+44, +1) or give a two-letter country below.",
        "fix": "Start the number with + and its calling code (for example +14155552671), or fill in the two-letter country field below so this has one country to read it against."
      }
    ],
    "parts": [],
    "limits": [
      "This is the range the number was assigned to, not a live carrier or existence check: it cannot say whether the number is in service, rings, or who carries it today after porting.",
      "Nothing is sent anywhere: the number is parsed in your browser, against metadata that ships with the page.",
      "A country the metadata covers only by length cannot have a type at all, and says so rather than guessing."
    ]
  }
}

Resell phone numbers that receive this kind of message, under your own brand.

Get started

Company names and logos are trademarks of their owners, shown only to identify each service.