Insights · Updated 2026-08
How to find the mobile carrier from a phone number
"What carrier is this number on?" sounds like it should have a clean answer. It usually does not — number portability means a phone number and its network can drift apart. But you can get a long way with the right layers: the country is deterministic, the original carrier is a good guess, and the live carrier needs a real network query. Here is how each layer works and where MCC/MNC fits in.
Start with what a number can tell you
A phone number is an E.164 address, not a network identity. Written in international form — +420 601 234 567 — it reliably encodes one thing: the country. The leading calling code (+420) maps to a region, and the national number follows a country-specific plan. That is different from the Mobile Country Code: the +420 you dial is not the MCC 230 that identifies Czech networks on the air.
The open-source library libphonenumber (Google) is the standard tool for this first layer. Given a raw string it will parse, validate and normalise the number, tell you the region, and classify it as mobile, fixed-line or other. That already answers "which country, and is it even a mobile?" without any lookup service.
Guessing the original carrier (offline)
Before mobile number portability (MNP), operators were handed number ranges, so a prefix mapped cleanly to one carrier. libphonenumber ships a PhoneNumberToCarrierMapper built from those historical ranges — it returns the carrier a number was originally allocated to. It is offline, free and instant, and it is right most of the time. But it does not know about porting: if the customer moved to another network, the answer will be stale. Treat it as a strong hint, not the truth.
Getting the live carrier (network query)
For the network a number is actually on right now, you have to ask the network. A HLR lookup (Home Location Register query), sometimes exposed as a "number lookup" or "MNP lookup" API from an SMS/telco provider, interrogates the operator infrastructure and returns the current serving network. Crucially, that response usually comes back as an MCC + MNC pair — the network's identity — plus a ported flag. That is exactly the identifier this site is built around.
Once you hold an MCC/MNC (say 230/01), you resolve it to a human-readable operator. That is where MCC-MNC.dev comes in: look up the PLMN 23001 in the registry to get the brand, operator name, status and country, or call the free JSON API to do it in code.
Putting the layers together
2. Original carrier → e.g. "T-Mobile" (carrier mapper, pre-port)
3. HLR lookup → MCC 230, MNC 01, ported = true (network query)
4. Resolve 230-01 → T-Mobile CZ (PLMN 23001) (MCC-MNC.dev API / registry)
Steps 1–2 are free and offline and answer "country + likely carrier". Steps 3–4 are what you need when the answer must reflect reality — anti-fraud, routing, verification. In the Czech Republic, for example, the three network operators sit at 23001 (T-Mobile), 23002 (O2) and 23003 (Vodafone); MVNOs appear as extra MNCs but ride on one of those three networks, which is why the phone number can't reveal them on its own.
What you cannot get
- The subscriber's name or address — not encoded in the number, and privacy-protected.
- The MNC directly from a phone number — MNC belongs to the SIM/network, not the dialled address; you only recover it via a live lookup.
- A guaranteed carrier without a network query — porting and MVNOs defeat prefix-only methods.