# What Is the North American Numbering Plan (NANP)?

> Details why U.S. and Canadian phone numbers share similar formats and why this matters for validation and messaging.

Published 2025-06-13, updated 2026-10-03 by Marcus Whelan. Canonical: https://checkthatphone.com/blog/north-american-numbering-plan-nanp

The North American Numbering Plan (NANP) is the shared 10-digit numbering system used by the U.S. and its territories, Canada, Bermuda, and a number of Caribbean countries, all under country code +1. It is easy to assume a 10-digit number that "looks right" is a number you can text. It is not. A number can pass every format rule in the book and still bounce, ring nowhere, or reject texts outright. The reason traces back to how numbers are laid out in the first place.

If you build anything that validates, routes, or messages phone numbers across the NANP region, the NANP is the rulebook you are implicitly coding against. The [North American Numbering Plan Administrator](https://www.nanpa.com/about) (NANPA) administers it. Worth knowing where its rules end and where reality takes over.

## How a NANP number is laid out

Every NANP number is 10 digits in the shape NXX-NXX-XXXX, where N is any digit from 2 through 9 and X is any digit from 0 through 9:

**(NPA) NXX-XXXX**

- NPA is the Numbering Plan Area, what most people call the area code
- NXX is the central office code, sometimes called the exchange
- XXXX is the subscriber number, the individual line

Take (818) 555-0147. The 818 is the area code (Los Angeles County), 555 is the exchange, and 0147 is the line. For international dialing you prepend +1, so the full form is +1-818-555-0147.

That is the whole structure. It is simple, which is exactly why people overtrust it.

## Where format checks stop being useful

A number can match the NANP pattern perfectly and still be useless to you. Clean-looking lists fail in production for reasons a regex will never catch:

- Area codes get split and overlaid, so the same code can map to regions you do not expect (our [US and Canada area code list](/area-codes) shows every code's overlays, built from NANPA data)
- Some numbers are reserved: 555-0100 through 555-0199 are set aside as fictitious, non-working numbers for film and advertising, which is why examples like the one above use them ([NANPA](https://www.nanpa.com/numbering/555-line-numbers))
- Numbers are ported between carriers, deactivated, and reassigned constantly
- Plenty of valid 10-digit numbers cannot receive SMS at all

A format check answers one question: does this string follow NANP rules? It says nothing about whether the line is active, who carries it, or whether a text will land. Those are the questions that actually cost you money when you get them wrong.

## How CheckThatPhone validates NANP numbers

CheckThatPhone is built specifically for U.S. and Canadian numbers inside the NANP. Instead of checking shape, it runs a live carrier dip at lookup time and returns:

- Deliverability and recent deactivation
- Line type (mobile, VoIP, landline); see [line type lookup](/line-type-lookup-api)
- Portability and current carrier details; see [carrier lookup](/carrier-lookup-api)
- Geographic and timezone information

The response even carries both views side by side: `nanpType` and `nanpCarrier` are what the numbering plan says, and the `dip*` fields are what the carrier network says today. When they disagree, porting is usually why, and the `dip*` fields win. The full set of response fields is in the [API documentation](/docs), and [what is carrier lookup](/blog/what-is-carrier-lookup) explains the difference in more depth.

## Where this fits in B2B messaging

The payoff shows up in the obvious places, and it adds up fast:

- Qualifying and filtering sales leads
- Cleaning SMS campaign lists before you pay to send ([understanding line types](/blog/understanding-line-types) covers why landlines and VoIP matter here)
- Routing customer support calls correctly
- Catching fraud at signup
- Validating numbers on the form, before the bad data lands in your CRM

## Next step

The NANP gives you a reliable structure to parse against, and that is genuinely useful. It just does not tell you whether a number is alive. Pair the format rules with a real-time check and you stop guessing about deliverability.

[Read the CheckThatPhone documentation](/docs) to see how NANP numbers get validated in practice, or [explore available pricing plans](/pricing) to start validating numbers in your pipeline.

---

CheckThatPhone is a phone validation API for US and Canada numbers: https://checkthatphone.com (docs: https://checkthatphone.com/docs.md, pricing: https://checkthatphone.com/pricing.md).
