On this page
The China phone number format for mobiles is +86 followed by 11 digits that always start with 1, written +86 13X XXXX XXXX from abroad and 13X XXXX XXXX at home, with no leading 0. Store it in E.164 as +8613XXXXXXXXX. Landlines are different: a 2- or 3-digit area code after the trunk prefix 0 (010 for Beijing), dropped after +86. Mobile numbers can be ported between operators, so the 13X–19X block tells you where the number started, not which network serves it today.
This guide is part of our phone numbers by country series. The tables are generated from libphonenumber's metadata and our public catalog. Example numbers are masked with X. "China" here means mainland China (CN). Hong Kong and Macau have their own numbering plans, covered below.
What does a Chinese phone number look like?
A mobile number has 11 digits and starts with 1: 13X XXXX XXXX, grouped 3-4-4. Unlike landlines, mobile numbers are written without a trunk prefix, so the national and international forms differ only by +86. Landlines use the trunk prefix 0 and an area code. The largest cities have 2-digit area codes and 8-digit local numbers, such as 010 Beijing, 020 Guangzhou and 021 Shanghai. Elsewhere the area code has 3 digits, such as 0755 for Shenzhen, and the local number 7 or 8 digits (Wikipedia).
| Item | Value |
|---|---|
| Country calling code | +86 |
| International call prefix (dialling out) | 00 |
| Trunk prefix (dialling at home) | 0 |
| Mobile: digits after +86 | 11 |
| Fixed line: digits after +86 | 7–11 |
| Toll-free: digits after +86 | 10, 12 |
| Premium rate: digits after +86 | 8 |
| Shared cost: digits after +86 | 7–11 |
| Mobile, national format (masked) | 13X XXXX XXXX |
| Mobile, international (masked) | +86 13X XXXX XXXX |
| Mobile, E.164 (masked) | +8613XXXXXXXXX |
| Fixed line, national format (masked) | 031X XXXX XXXX |
| Fixed line, international (masked) | +86 31X XXXX XXXX |
| Fixed line, E.164 (masked) | +8631XXXXXXXXX |
From abroad, drop the 0 of a landline: 010 XXXX XXXX becomes +86 10 XXXX XXXX. Forms in China often collect numbers as 13XXXXXXXXX or 8613XXXXXXXXX without a plus; a numbering-plan library with the default region CN turns both into +8613….
Which prefixes are mobile numbers?
All mobile numbers start with 1, but not every block is in use. For each 2-digit block, the generator counted every 11-digit number that libphonenumber's mobile pattern for CN accepts:
| National prefix | International | Share of the block that is mobile (11-digit numbers) | 3-digit sub-blocks that aren't fully mobile |
|---|---|---|---|
13 | +86 13 | 100% | — |
14 | +86 14 | 20.0% | not mobile: 140–144, 146, 148, 149 |
15 | +86 15 | 90.0% | not mobile: 154 |
16 | +86 16 | 41.0% | not mobile: 160, 163, 164, 168, 169; partly mobile: 161 (10.0%) |
17 | +86 17 | 80.6% | not mobile: 179; partly mobile: 174 (6.0%) |
18 | +86 18 | 100% | — |
19 | +86 19 | 90.0% | not mobile: 194 |
In short: 13X and 18X are fully in use, 15X except 154, 19X except 194. The 14X and 16X blocks are only partly used. In 161, only 1610 is a mobile range. In 174, only 17400 to 17405, opened for China Telecom in 2017 (ITU).
Which operator does each block belong to?
Each block was allocated to one operator. This table follows libphonenumber's carrier file for +86 (86.txt, read on 2026-10-10 via the Python port 9.0.40) and the Ministry of Industry and Information Technology's (MIIT) notifications to the ITU:
| Original operator | Mobile blocks |
|---|---|
| China Mobile | 1340–1348, 135–139, 147, 150–152, 157–159, 172, 178, 182–184, 187, 188, 195, 197, 198 |
| China Unicom | 130–132, 145, 155, 156, 166, 175, 176, 185, 186, 196 |
| China Telecom | 133, 153, 162, 173, 177, 180, 181, 189, 190, 191, 193, 199, 17400–17405 |
| China Broadcasting Network (CBN) | 192, 1610 |
| Virtual operators (MVNOs), by host network | 170 (1700–1702 China Telecom; 1703, 1705, 1706 China Mobile; 1704, 1707–1709 China Unicom), 171 (China Unicom), 165 (China Mobile), 167 (China Unicom) |
The ITU filings date several of these: 171 for China Unicom's virtual operators from 24 July 2015, 165 for China Mobile's from 1 January 2018, 167 for China Unicom's from 1 November 2018, 162 for China Telecom from 30 September 2018, and 190 and 193 for China Telecom from 10 September 2020 (ITU). The same filings list IoT-only ranges: 11-digit 146 (China Unicom) and 148 (China Mobile), and 13-digit numbers such as 1440, all from 2017. libphonenumber's CN mobile pattern rejects all of them, so a device SIM can fail validation and still be a working number. 1349, which Wikipedia lists as a former satellite range, passes the pattern but has no operator in the carrier file.
Treat the table as the range holder, never as the current network. We explain why below.
How do I validate a Chinese number in code?
Use a libphonenumber port with full metadata and the default region CN, and check the region it returns. With CN as the default, +852 and +853 numbers still parse, as Hong Kong and Macau numbers.
import { parsePhoneNumberFromString } from "libphonenumber-js/max";
/** "13X XXXX XXXX", "+86 13X …", "0086 13X …", "8613X…" → E.164 for a mainland China mobile, or null. */
export function normalizeCn(raw) {
const phone = parsePhoneNumberFromString(String(raw), "CN");
return phone?.isValid() && phone.country === "CN" && phone.getType() === "MOBILE" ? phone.number : null;
}We ran it on 2026-10-10 with libphonenumber-js 1.13.13 (metadata 9.0.39). It returned an E.164 number for rows 1 to 5 below and null for the rest. The shape regex column tests ^(?:\+86|0086|0)?1\d{10}$, the pattern most tutorials give, after spaces, dashes and brackets are removed:
| # | Case | Input (masked) | Shape regex ^(?:\+86|0086|0)?1\d{10}$ | libphonenumber (CN) |
|---|---|---|---|---|
| 1 | National format (no trunk prefix written) | 13X XXXX XXXX | passes | valid, MOBILE |
| 2 | International, with spaces | +86 13X XXXX XXXX | passes | valid, MOBILE |
| 3 | International dialling prefix 00 | 0086 13X XXXX XXXX | passes | valid, MOBILE |
| 4 | E.164 | +8613XXXXXXXXX | passes | valid, MOBILE |
| 5 | Dashes and brackets | (13X) XXXX-XXXX | passes | valid, MOBILE |
| 6 | One digit short | 13XXXXXXXX | fails | invalid |
| 7 | One digit too many | 13XXXXXXXXXX | fails | invalid |
| 8 | Mobile shape, unused block 10 | 10XXXXXXXXX | passes | invalid |
| 9 | Fixed line | 031X XXXX XXXX | fails | valid, FIXED_LINE |
| 10 | Toll-free range | 010 8XX XXX XXXX | fails | valid, TOLL_FREE |
Row 8 is the one to remember: 10X… has the right length and passes the regex, but no mobile range starts there. The same goes for 154, 179 and 194. A stricter regex like ^1[3-9]\d{9}$ still accepts every unused block from 13 to 19. Row 10 is the 12-digit 10800 toll-free range: the regex rejects it, while libphonenumber knows it as toll-free. More languages are in our JavaScript guide and the E.164 guide.
Does number portability change the carrier?
Yes. China's porting service, 携号转网, launched nationwide on 27 November 2019, after pilots in five provincial-level regions where about 3.16 million subscribers had already ported (China Daily/Xinhua, 2019). MIIT issued its rules for the service, the Provisions on the Administration of Number Portability Services, on 11 November 2019. Its explanation of those rules says the service doesn't currently cover IoT, satellite or MVNO (resale) numbers (MIIT).
<!-- country-data:CN:mnp:start --> <!-- generated by apps/web/scripts/gen-country-guide-data.mjs (MNP atlas 2026); edit the script, not this table -->Our MNP atlas has no verified row for China yet.
<!-- country-data:CN:mnp:end -->So a 139 number may be served by China Telecom today, and a 189 number by China Mobile. libphonenumber's carrier data names the operator a range was first assigned to, which isn't necessarily the current one. For routing, SMS cost or fraud rules, look the number up. Our MNP lookup returns ported or not_ported and the current MCC/MNC; see how to get the MCC and MNC from a number.
What does real-name registration mean for validation?
Mainland phone lines are registered to the subscriber's real identity. MIIT Order No. 25 made real-name registration mandatory for fixed and mobile lines from 1 September 2013 (gov.cn). The Anti-Telecom and Online Fraud Law, in force since 1 December 2022, requires operators to apply it fully (Xinhua).
This is useful context, not a data source. The identity behind a number stays with the operator. No lawful lookup, ours included, returns a subscriber's name or ID number, and a valid, registered number tells you nothing about who is using it.
Which messaging apps work with +86 numbers?
SMS reaches every active mobile. WhatsApp is blocked in mainland China, and on 19 April 2024 Apple removed WhatsApp and Threads from its China App Store on the order of the Cyberspace Administration of China; Telegram and Signal were not available there either (HKFP/Reuters, 2024). The same report notes that some users still reach blocked apps through a VPN.
The block is on network access in the mainland, not on the number itself. A +86 number can still hold an account, for example when its owner lives or travels abroad. So a "registered" result for a +86 number is a fact about the account, not evidence that the person uses the app day to day. For OTP and service messages to mainland users, plan for SMS first. Our channel-by-country guide shows how to choose from your own opted-in data.
Are Hong Kong and Macau numbers Chinese numbers?
Not for validation. Hong Kong has the country code +852 and Macau +853. Both use 8-digit numbers without area codes, and Macau mobiles start with 6 (libphonenumber). They are separate numbering plans, administered separately from the mainland's, so store and check them as region HK or MO, never as CN. A form that hard-codes "+86" for every Chinese customer breaks for them, which is why normalizeCn() above checks phone.country. For lists that mix all three, parse with region detection and report the region per row. Our Hong Kong and Macau phone number guides cover +852 and +853 in detail.
What changed recently?
The rows for CN and +86 in our numbering-plan changes dataset, built from libphonenumber's release notes:
| Change named in the release notes (2019-01-08 to 2026-09-23) | Releases |
|---|---|
| Numbering-plan metadata (validation, lengths, types) | 12 |
| Original-carrier prefix data | 7 |
| Geocoding (area names) | 5 |
| Short numbers | 3 |
| All | 27 |
Latest numbering-plan updates for CN: 2026-07-16 (v9.0.35), 2024-08-07 (v8.13.43), 2024-07-11 (v8.13.41), 2024-03-06 (v8.13.32), 2023-02-23 (v8.13.7).
China's metadata changes more often than most countries' in this series. Update your validation library at least monthly, or numbers from newly opened ranges will fail.
What can MobileValidate check for Chinese numbers?
Generated from our public catalog:
<!-- country-data:CN:coverage:start --> <!-- generated by apps/web/scripts/gen-country-guide-data.mjs (public catalog https://api.mobilevalidate.com/v1/services, fetched 2026-10-12); edit the script, not this table -->| Check | Accepts China numbers | Notes |
|---|---|---|
| Format and country (every lookup) | Yes | Each number is parsed first; an invalid number returns invalid_number and is never billed. |
| Carrier lookup (beta) | Yes | Line type and current network where data exists; no data means unknown, not billed. Real time and bulk. |
| US/CA carrier lookup (premium) | No (US, CA only) | Answers unsupported_country for other countries, not billed. |
| Live network status (HLR) | Yes | Live reachability, porting, roaming (true or false) and current network; unknown is free. Real time and bulk. |
| Number portability (MNP) | Yes | Ported or not ported, and the current network code; unknown is free. Real time and bulk. |
| Spam reputation | Limited access | All countries except sanctioned ones; report coverage is strongest in North America and Europe. |
| Messaging apps | Yes: WhatsApp, Telegram, Viber, Signal*, RCS*, LINE*, Zalo, Botim*, Facebook Messenger* | Not for China numbers: iMessage (every country except China). |
| Social networks | Yes: Facebook, Instagram, Threads, X (Twitter), TikTok*, Snapchat* | Not for China numbers: LinkedIn (US, IN only). |
| Online accounts (Apple, Amazon, Microsoft, Netflix) | Yes: Apple†, Amazon, Microsoft, Netflix | Registered, not registered or unknown; unknown is free. |
* bulk jobs only. † real time only for China numbers (not in bulk jobs). Catalog as fetched on 2026-10-12; the live list is at GET /v1/services.
Three gaps are specific to mainland China. The iMessage check doesn't cover +86 numbers. The Apple Account and WhatsApp registration checks cover them in real time only: in a bulk job, +86 rows answer unsupported_country and are free, and the job estimate lists them before you start. See Apple ID number check. A lookup returns network and registration facts, never a subscriber's name or ID number.
Here is the porting check from code, after normalizeCn(). It uses the public sandbox key mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym and our test values, which are UK drama numbers because the sandbox accepts only those. With a live key, pass the output of normalizeCn(). We ran it on 2026-10-10 with Node.js 24.
const API = "https://api.mobilevalidate.com/v1/lookup";
/** Current network per number. The 13X–19X block only shows where the range was first allocated. */
export async function currentNetwork(numbers) {
const res = await fetch(API, {
method: "POST",
headers: { Authorization: `Bearer ${process.env.MOBILEVALIDATE_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ numbers, checks: ["mnp"], wait: 5 }),
});
if (!res.ok) throw new Error(`lookup failed: ${res.status}`);
const { results } = await res.json();
return results.map((row) => {
const mnp = row.checks["number.mnp"];
return { e164: row.e164, status: mnp.status, porting: mnp.attributes?.porting ?? null, mccMnc: mnp.attributes?.mcc_mnc ?? null, billed: mnp.billed };
});
}
console.table(await currentNetwork(["+447700900001", "+447700900006", "+447700900005"]));| Test value | status | porting | mccMnc | billed |
|---|---|---|---|---|
+447700900001 | completed | not_ported | 23415 | false |
+447700900006 | completed | ported | 23410 | false |
+447700900005 | unsupported_country | null | null | false |
Test mode never bills; in live mode, unknown and unsupported_country answers aren't billed either. The same call with curl:
curl https://api.mobilevalidate.com/v1/lookup \
-H "Authorization: Bearer $MOBILEVALIDATE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"numbers": ["+447700900006"], "checks": ["mnp"], "wait": 5}'See MNP lookup and HLR lookup for the fields, and pricing for prices.
What are the key takeaways?
- Mainland mobiles are
+86 1plus ten digits, written without a leading0; store the E.164 form. - Not every
1XXblock is live:154,179,194and most of14Xand16Xaren't mobile ranges today. - The block shows the original operator. Porting has been nationwide since November 2019, so look up the current network when it matters.
- Hong Kong (
+852) and Macau (+853) are separate plans; check the region a parser returns. - WhatsApp is blocked in the mainland, so read registration results for +86 numbers with care. No lawful lookup returns who owns a number.
Platform, regulator and company names are used descriptively. MobileValidate is not affiliated with any of them.
Sources
- China (country code +86): communications on the national numbering plan, 2017 to 2020 — ITU (notifications from the Ministry of Industry and Information Technology), 2020
- libphonenumber PhoneNumberMetadata.xml (region CN), carrier/en/86.txt and release notes — libphonenumber project (Apache License 2.0), 2026
- Telephone numbers in China — Wikipedia, 2026
- Interpretation of the Provisions on the Administration of Number Portability Services (携号转网服务管理规定) — Ministry of Industry and Information Technology (MIIT), 2019
- China launches mobile number portability program (27 November 2019) — China Daily / Xinhua, 2019
- Provisions on Registration of Real Identity Information of Telephone Users (MIIT Order No. 25) — State Council Gazette (gov.cn), 2013
- Anti-Telecom and Online Fraud Law adopted (2 September 2022) — Xinhua, 2022
- Apple removes WhatsApp, Threads from App Store in China on government orders (19 April 2024) — Hong Kong Free Press (Reuters), 2024
Frequently asked questions
How many digits is a Chinese mobile number?
Eleven. Every mainland China mobile number has 11 digits and starts with 1, for example 13X XXXX XXXX. In E.164 format it is +86 followed by those 11 digits, 13 digits in total without the plus sign.
Do I add a 0 before a Chinese mobile number?
No. Mobile numbers are written without a trunk prefix: 13X XXXX XXXX at home and +86 13X XXXX XXXX from abroad. The 0 belongs only in front of landline area codes, such as 010 for Beijing, and is dropped after +86.
Does the 13X, 15X or 18X block tell me the operator?
Only the operator the block was first allocated to. Mobile number portability has been available nationwide in mainland China since November 2019, so a number that started on one operator may now be served by another. Look up the current network when it matters.
Are Hong Kong and Macau numbers Chinese numbers?
Not for validation. Hong Kong uses the country code +852 and Macau +853, each with its own 8-digit numbering plan. A +852 or +853 number never passes a +86 check, and a validator should report HK or MO as the region, not CN.
Can a lookup tell me who owns a Chinese number?
No. Real-name registration data stays with the operators. A MobileValidate lookup returns network and registration facts, never a name, an ID number or an address.
Related services and guides
More from the blog
All articlesGuides
Phone numbers by country: formats, portability, channels and rules
How phone numbers differ by country: formats and E.164, numbering changes, portability, line types, messaging channels, and a dated tracker of calling and texting rules.
10 min read
Developers
E.164 phone number format: a practical guide for developers
How to normalize phone numbers to E.164 in JavaScript and Python, the pitfalls that break deduplication, and how the MobileValidate API normalizes input.
8 min read
Guides
How to get the MCC and MNC from a phone number (and why the prefix can be wrong)
MCC/MNC lookup by phone number: why the prefix shows only the original network, how to get the current code with MNP or HLR, and 5 mistakes to avoid.
8 min read

