Skip to content

Carrier-grade NAT (CGNAT)

published · September 12, 2026 · updated · October 2, 2026

Carrier-grade NAT puts many subscribers behind one public IP address, so one address is many people and a per-address decision reaches all of them.

Carrier-grade NAT is address sharing at the operator's scale: because there are not enough IPv4 addresses for every subscriber, a mobile carrier or a large ISP gives each customer a private address from the 100.64.0.0/10 block reserved for the purpose (RFC 6598) and translates it to one public address shared by hundreds or thousands of them. The public address a server sees is the carrier's gateway, and it changes as the handset moves.

What Spaw answers

Two things follow. The shared-address block itself, 100.64.0.0/10, answers reason: reserved_range and is free, because it can never be a public visitor. And a carrier's public gateway addresses are where is_mobile matters: the flag comes from a curated, positive-only list of mobile-carrier autonomous systems, and connection_type reads mobile for them. Their located city is the gateway's, so location_confidence answers low for them even where the carrier's own geofeed names it. Nothing in the answer can separate one subscriber behind that gateway from the next.

What it does not mean

A block or a rate limit keyed on a CGNAT address hits everyone behind it, which is a lot of innocent handsets. The velocity count in seen_by_you and any outcome you report are keyed by address too, so on a mobile network they describe the gateway, not the person; use them with that in mind, and prefer the signals that travel with the session rather than with the address.

Related

markdown version: /glossary/cgnat.md

Verify addresses the same way

The Spaw API runs every check described here on each lookup, with an SMTP handshake that never sends mail. 10 free lookups a month, no card required.

Get your API key

More glossary

  • Area-code overlay

    An area-code overlay is a new area code added over the same area as an existing one, instead of splitting it, so neighbours can hold different codes and local calls need ten digits.

  • Calling window

    A calling window is the span of local hours a sender contacts people in. Spaw answers in_call_window from the number's time zones: clock arithmetic, not compliance advice.

  • Fictional number

    A fictional number sits in a range kept out of service for films, TV and other fiction: 555-0100 to 555-0199 in North America, and ranges Ofcom, ARCEP, ACMA and ComReg reserve elsewhere.

  • International (exit) prefix

    An international prefix is what is dialled to leave a country before the calling code: 00 in most of the world, 011 in North America. Spaw reads it and suggests a fix in did_you_mean.

  • International network number

    An international network number sits under a calling code the ITU gives a global service rather than a country, such as +870, +881, +882 or +883, so its country is null.

  • Live carrier check (HLR lookup)

    A live carrier check asks the mobile networks, at the moment of the lookup, whether a number is in service, which network serves it and whether it is roaming. On Spaw it is not enabled.

  • Number pooling (thousands-blocks)

    Number pooling splits a North American central office code into ten blocks of a thousand numbers, each assigned to a carrier separately, so one code can hold several carriers' numbers.

  • Number portability

    Number portability lets a subscriber keep a phone number when changing carrier. The number's block stays listed under the carrier it was issued to, so block data names the original holder.