# 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.

Date: 2026-09-27

Number portability is a subscriber's ability to keep a telephone number when moving to another carrier. The US rules define it as the ability "to retain, at the same location, existing telecommunications numbers without impairment of quality, reliability, or convenience when switching from one telecommunications carrier to another" (47 CFR 52.21(m), https://www.law.cornell.edu/cfr/text/47/52.21, accessed 27 September 2026), and 47 U.S.C. 251(b)(2) (https://www.law.cornell.edu/uscode/text/47/251, accessed 27 September 2026) makes providing it, to the extent technically feasible, a duty of every local exchange carrier. The number moves. The block it was issued from does not, and the regulator's allocation table goes on listing the carrier the block was given to.

## What Spaw answers

`carrier`, `carrier_code` and `carrier_brand` name the holder of the number's block as the regulator's table records it, or, where no table answers, `carrier` names the network the numbering metadata's prefix data gives for the range: the original allocation either way, never who serves the number today. `line_type` and `is_virtual` read the same holder where it settles them, so a number ported away from a VoIP provider's block still answers `voip` and scores the [`virtual`](/docs/signals/phone/virtual) signal (+40), and a number from a wireless carrier's block that was later ported to a VoIP service still answers `mobile`. `block_assigned_at` dates the block, not the day the current subscriber got the number.

Only a query into the carrier networks can say whether a number was ported and who serves it now. The answer keeps that in fields of its own, `ported`, `current_carrier`, `reachable` and `roaming`, which stay null until a live check has answered, so the table's answer and the network's are never blended. The live carrier-network check (`hlr: true`) is not enabled on the service: `hlr_checked` answers false and nothing extra is charged.

## What it does not mean

A carrier read from a block is not wrong after a port; it answers a different question. It says who the numbers were issued to, which is what a regulator's table can prove, and the [phone intelligence guide](/docs/phone-intelligence#sources) says so where it lists the sources. A port also leaves the number's code where it was: the number keeps its area code and the [rate centre](/glossary/rate-centre) its code was assigned in, so `region` describes where the number was issued before and after the move, never where the subscriber is. Nothing in the answer names the subscriber either, because Spaw does no reverse lookup. The US block tables are summarised on [the United States phone facts](/tools/phone-number-lookup/countries/us).

Reference: https://spaw.co/glossary/number-portability
