Guides

Hong Kong phone number format: +852, mobile prefixes, validation and messaging rules

Hong Kong phone number format: +852 and 8 digits, no area codes or trunk 0, which first digits are mobile, tested validation code, porting and SIM rules.

By Published 13 min read

On this page

A Hong Kong phone number is the country code +852 followed by eight digits, with no area code and no trunk prefix: a mobile looks like +852 5XXX XXXX from abroad and 5XXX XXXX at home. Mobile numbers start with 4, 5, 6, 7, 8 or 9 and landlines with 2 or 3, but only some blocks under each digit are mobile, and because porting has been possible since 1999, the prefix doesn't tell you the current network.

This guide is part of our phone numbers by country series. The tables are generated from libphonenumber's metadata, our MNP atlas and our public catalog. Example numbers are masked with X. We read the Office of the Communications Authority (OFCA) allocation dataset, updated 4 September 2026, and the government and Legislative Council documents cited below on 2026-10-10. This is a summary, not legal advice.

What does a Hong Kong phone number look like?

Every ordinary Hong Kong number has eight digits, and you dial all eight anywhere in the territory. There are no area codes and no trunk 0, so the national number and the digits after +852 are the same. According to Wikipedia's summary, landlines moved to eight digits on 1 January 1995, when a 2 was put in front of the old seven-digit numbers.

<!-- country-data:HK:format:start --> <!-- generated by apps/web/scripts/gen-country-guide-data.mjs (libphonenumber metadata 9.0.39 via libphonenumber-js 1.13.13); edit the script, not this table -->
ItemValue
Country calling code+852
International call prefix (dialling out)00
Trunk prefix (dialling at home)none
Mobile: digits after +8528
Fixed line: digits after +8528
Toll-free: digits after +8529
Premium rate: digits after +8525–8, 11
Personal number: digits after +8528
Pager: digits after +8528
Universal access (UAN): digits after +8528
Mobile, national format (masked)51XX XXXX
Mobile, international (masked)+852 51XX XXXX
Mobile, E.164 (masked)+85251XXXXXX
Fixed line, national format (masked)21XX XXXX
Fixed line, international (masked)+852 21XX XXXX
Fixed line, E.164 (masked)+85221XXXXXX
<!-- country-data:HK:format:end -->

People write the same number as 5XXX XXXX, 5XXX-XXXX, +852 5XXX XXXX or 852 5XXX XXXX without the plus. A numbering-plan library handles all of these if you pass the default region HK. The last form is unambiguous because OFCA reserves the national block 852 itself, so no local number starts with those digits. Store only the E.164 result, +8525XXXXXXX.

A +852 chip over eight digit boxes and an abstract harbour skyline, a grid of first digits with 5, 6 and 9 highlighted and 4, 7 and 8 marked partly mobile, a registered SIM, an ID tile, a # sender and porting since 1999.A +852 chip over eight digit boxes and an abstract harbour skyline, a grid of first digits with 5, 6 and 9 highlighted and 4, 7 and 8 marked partly mobile, a registered SIM, an ID tile, a # sender and porting since 1999.
Hong Kong numbers are eight digits with no area code; the first digit alone doesn't say mobile.

Which prefixes are mobile numbers?

Hong Kong has never had separate mobile codes. Mobiles first started with 9, blocks under 5 and 6 followed, and when those ran short OFCA opened vacant blocks under 4, 7 and 8. Its press release of 5 February 2018 says the first 4, 7 and 8 mobile numbers were expected to be available for assignment that month: about 10.6 million new numbers, used alongside the existing 5, 6 and 9 mobiles and expected to meet demand until at least 2029 (OFCA, 2018). The same release scheduled a third phase from 1 July 2021, freeing 71 to 73 blocks after paging numbers moved out.

The table counts, for each 2-digit block, how many 8-digit numbers libphonenumber's mobile pattern for HK accepts:

<!-- country-data:HK:prefixes:start --> <!-- generated by apps/web/scripts/gen-country-guide-data.mjs (exact count over the mobile pattern, libphonenumber metadata 9.0.39); edit the script, not this table -->
National prefixInternationalShare of the block that is mobile (8-digit numbers)3-digit sub-blocks that aren't fully mobile
40+852 408.0%not mobile: 400–405, 407, 408; partly mobile: 406 (40.0%), 409 (40.0%)
42+852 424.0%not mobile: 420–423, 425–429; partly mobile: 424 (40.0%)
44+852 4499.0%partly mobile: 444 (90.0%)
46+852 4696.0%partly mobile: 464 (90.0%), 466 (70.0%)
47+852 4762.0%not mobile: 477–479; partly mobile: 474 (60.0%), 476 (60.0%)
AA, for 3 blocks AA = 51, 54, 55+852 AA90.0%not mobile: AA5
AA, for 2 blocks AA = 52, 53+852 AA95.0%partly mobile: AA5 (50.0%)
56+852 5680.0%not mobile: 565, 567
57+852 5787.0%not mobile: 575; partly mobile: 573 (70.0%)
59+852 5999.0%partly mobile: 595 (90.0%)
AA, for 2 blocks AA = 60, 90+852 AA90.0%not mobile: AA0
AA, for 8 blocks AA = 61, 63–65, 69, 94, 96, 97+852 AA100%—
62+852 6298.0%partly mobile: 626 (80.0%)
66+852 6696.0%partly mobile: 666 (60.0%)
67+852 6796.0%partly mobile: 678 (60.0%)
68+852 6890.0%not mobile: 686
70+852 7077.0%not mobile: 700, 706; partly mobile: 707 (80.0%), 708 (90.0%)
71+852 714.0%not mobile: 711–719; partly mobile: 710 (40.0%)
84+852 8462.0%not mobile: 845–847; partly mobile: 844 (30.0%), 848 (90.0%)
91+852 9190.0%not mobile: 911
92+852 9299.0%partly mobile: 929 (90.0%)
93+852 9398.0%partly mobile: 939 (80.0%)
95+852 9597.0%partly mobile: 959 (70.0%)
98+852 9891.0%partly mobile: 989 (10.0%)
<!-- country-data:HK:prefixes:end -->

What else lives under the same first digits?

OFCA's allocation dataset (OFCA numbering plan) shows why a first-digit rule fails. Next to the mobile blocks it lists:

  • 2 and 3: fixed services. Some 3 blocks are access codes rather than subscriber numbers.
  • 58: fixed services in OFCA's "Class Two" category, not mobiles.
  • 7: paging blocks such as 710, 711 and 716, next to the mobile blocks 70 and 71.
  • 81 to 83: the personal number service, mixed with spare mobile blocks.
  • 800, 801, 808, 809: freephone numbers with nine digits.
  • 4500: machine-to-machine numbers with twelve digits, assigned to the mobile operators.
  • 1: short codes, including the emergency numbers 999 and, from mobiles, 112.

Many mobile blocks are marked spare in the dataset: all of 43, 45, 48, 49, 72, 73, 85 to 87 and 89, for example. A number there has the right shape but nobody can hold it today. libphonenumber follows the assignments, so it rejects them.

Why a prefix doesn't name the operator

OFCA allocates each block to one operator. Most mobile blocks belong to Hong Kong Telecommunications (HKT), China Mobile Hong Kong, Hutchison Telephone (which trades as 3) and SmarTone, with smaller holders such as China Unicom (Hong Kong) and China Telecom Global. That tells you who first held the range, not who serves the number after a port, so we don't print a prefix-to-operator table.

How do I validate a Hong Kong number in code?

Use a libphonenumber port with full metadata and the default region HK. There is one Hong Kong trap. OFCA assigns 008 as an international access code (one operator's gateway), and libphonenumber's international-prefix pattern for Hong Kong accepts 00 plus an optional digit such as 1 or 8. So 00852 5XXX XXXX, a common way to write a Hong Kong number for dialling from abroad, is read as 008 plus 52, Mexico's country code, and fails. The function below turns a leading 00852 into +852 first; in Python's phonenumbers, apply the same rewrite before phonenumbers.parse(text, "HK").

JavaScript (npm install libphonenumber-js):

JavaScript
import { parsePhoneNumberFromString } from "libphonenumber-js/max";

/** "5XXX XXXX", "+852 5XXX XXXX", "00852 …", "852…" → E.164 for a Hong Kong mobile, or null. */
export function normalizeHk(raw) {
  const input = String(raw).trim().replace(/^00(?=\s*852)/, "+"); // 00852 would parse as 008 + 52 (Mexico)
  const phone = parsePhoneNumberFromString(input, "HK");
  if (!phone?.isValid() || phone.country !== "HK" || phone.getType() !== "MOBILE") return null;
  return phone.number;
}

We ran it on 2026-10-10 with libphonenumber-js 1.13.13 (metadata 9.0.39), and the same logic in Python with phonenumbers 9.0.40, which reads 00852 the same way. Both returned one E.164 number for the national, +852, 00852, 852 and bracketed forms, and nothing for a seven-digit number, a number in the unused 41 block, a landline, a personal number or a Macau number. The table shows the raw library calls without the 00852 fix. The shape regex column tests ^(?:\+852|00852)?[4-9]\d{7}$, a typical "8 digits starting 4 to 9" rule, after spaces, dashes and brackets are removed:

<!-- country-data:HK:tests:start --> <!-- generated by apps/web/scripts/gen-country-guide-data.mjs (libphonenumber-js 1.13.13, region HK); edit the script, not this table -->
#CaseInput (masked)Shape regex ^(?:\+852|00852)?[4-9]\d{7}$libphonenumber (HK)
1National (no trunk prefix)51XX XXXXpassesvalid, MOBILE
2International, with spaces+852 51XX XXXXpassesvalid, MOBILE
3International dialling prefix 0000852 51XX XXXXpassesinvalid
4E.164+85251XXXXXXpassesvalid, MOBILE
5Dashes and brackets(51XX) XXXXpassesvalid, MOBILE
6One digit short51XXXXXfailsinvalid
7One digit too many51XXXXXXXfailsinvalid
8Mobile shape, unused block 4141XXXXXXpassesinvalid
9Fixed line21XX XXXXfailsvalid, FIXED_LINE
10Personal number range81XX XXXXpassesvalid, PERSONAL_NUMBER
<!-- country-data:HK:tests:end -->

Rows 8 and 10 are why the regex isn't enough: a number in the unused 41 block and a personal number both pass it. Row 3 is the 008 trap described above. Our JavaScript validation guide and why an E.164 regex is not enough cover the general case.

Hong Kong, Macau and mainland China are separate plans

The ITU assigns three different country codes (ITU E.164 list): +852 for Hong Kong, +853 for Macau and +86 for mainland China. A call between them is an international call. Macau numbers also have eight digits, with mobiles starting 6, so a bare 6XXX XXXX could belong to either city: ask for the country on forms instead of guessing. A mainland mobile has 11 digits starting with 1 and doesn't validate under HK at all. Our China phone number format guide covers +86 in detail.

Does number portability change the carrier?

Yes. The Telecommunications Authority directed all fixed and mobile operators on 28 August 1998 to provide mobile number portability by 1 March 1999, and the service launched that day. In its first four weeks, 88,116 numbers were ported (LegCo paper, 1999). Today the technical rules are OFCA's HKCA 2103 and 2104 specifications, which describe a database solution with a central administration database. The Hong Kong row of our MNP atlas:

<!-- country-data:HK:mnp:start --> <!-- generated by apps/web/scripts/gen-country-guide-data.mjs (row from content/datasets/mnp-atlas-2026); edit the script, not this table -->
ItemValue
Mobile number portabilityYes
Mobile porting sincenot verified
Maximum porting timenot verified
Governing ruleOFCA MNP arrangements (HKCA 2103/2104 specifications)
Published porting volumemonthly (Mar 2026): 50,987 successful ports (2026)
Sourceofca.gov.hk, ofca.gov.hk
Checked2026-09-25
<!-- country-data:HK:mnp:end -->

OFCA counted 50,987 successful ports in March 2026 alone, so prefix tables go stale quickly. If you route, price or score numbers by operator, look up the current network per number. Our MNP atlas compares Hong Kong with other countries.

Which messaging apps and channels reach people?

SMS reaches every active mobile. We haven't found a published measurement of app use in Hong Kong that we can verify, so we don't quote shares. Check which apps your opted-in customers are registered on, route from that, and keep SMS as the fallback. The flow in the last section returns WhatsApp and Telegram registration in the same call as the line type, and our channel-by-country guide covers the method.

What are the rules for SMS, sender IDs and OTP?

Summaries of the primary texts, checked on 2026-10-10. Not legal advice; ask counsel how they apply to you.

Real-name SIM registration (Cap. 106AI)

The Telecommunications (Registration of SIM Cards) Regulation (Cap. 106AI) came into force in September 2021. New SIM service plans and pre-paid cards had to be registered before activation from 1 March 2022, and existing pre-paid cards by 23 February 2023. Since 24 February 2023, every SIM card issued and used locally must complete real-name registration before activation or continued service (Hong Kong Government, 2023). For a sender, that means a working Hong Kong mobile belongs to a registered SIM. It doesn't mean you can see who registered it.

The "#" sender prefix (SMS Sender Registration Scheme)

From 28 December 2023, OFCA's SMS Sender Registration Scheme lets registered organisations send with sender IDs that start with #. Networks block other messages whose sender ID contains #, and recipients don't need to do anything (OFCA, 2023). The scheme started with telecom operators and was opened to all sectors on 21 February 2024. It doesn't cover messages where the recipient is expected to reply by phone. If you send OTPs or alerts to Hong Kong, ask your provider whether your sender ID can join.

Commercial messages (Cap. 593)

The Unsolicited Electronic Messages Ordinance (Cap. 593) governs commercial electronic messages, including SMS. Messages with a Hong Kong link must include accurate sender information and an unsubscribe facility (sections 8 and 9), and OFCA runs do-not-call registers that people can add their numbers to (Cap. 593). A one-time passcode the user asked for isn't marketing, but keep it free of offers and don't reuse numbers collected for verification for marketing without consent.

What changed recently?

The rows for HK and +852 in our numbering-plan changes dataset, built from libphonenumber's release notes:

<!-- country-data:HK:changes:start --> <!-- generated by apps/web/scripts/gen-country-guide-data.mjs (rows of content/datasets/numbering-plan-changes-2019-2026); edit the script, not this table -->
Change named in the release notes (2019-01-08 to 2026-09-23)Releases
Numbering-plan metadata (validation, lengths, types)42
Original-carrier prefix data36
All78

Latest numbering-plan updates for HK: 2026-09-09 (v9.0.39), 2026-08-26 (v9.0.38), 2026-02-25 (v9.0.25), 2026-01-13 (v9.0.22), 2025-12-17 (v9.0.21).

<!-- country-data:HK:changes:end -->

In our numbering-plan research, Hong Kong was among the three regions whose metadata changed most often between 2019 and September 2026. Each new block OFCA assigns from its spare ranges needs a metadata update before libraries accept it. Update your validation library at least monthly, or new subscribers in fresh blocks will fail your forms.

What can MobileValidate check for Hong Kong numbers?

Generated from our public catalog:

<!-- country-data:HK:coverage:start --> <!-- generated by apps/web/scripts/gen-country-guide-data.mjs (public catalog https://api.mobilevalidate.com/v1/services, fetched 2026-10-10); edit the script, not this table -->
CheckAccepts Hong Kong numbersNotes
Format and country (every lookup)YesEach number is parsed first; an invalid number returns invalid_number and is never billed.
Carrier lookup (beta)YesLine 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)YesLive reachability, porting, roaming (true or false) and current network; unknown is free. Real time and bulk.
Number portability (MNP)YesPorted or not ported, and the current network code; unknown is free. Real time and bulk.
Spam reputationLimited accessAll countries except sanctioned ones; report coverage is strongest in North America and Europe.
Messaging appsYes: WhatsApp, Telegram, Viber, Signal*, iMessage*, RCS*, LINE*, Zalo, Botim*, Facebook Messenger*Registered, not registered or unknown; unknown is free.
Social networksYes: Facebook, Instagram, Threads, X (Twitter), TikTok*, Snapchat*Not for Hong Kong numbers: LinkedIn (US, IN only).
Online accounts (Apple, Amazon, Microsoft, Netflix)Yes: Apple, Amazon, Microsoft, NetflixRegistered, not registered or unknown; unknown is free.

* bulk jobs only. Catalog as fetched on 2026-10-10; the live list is at GET /v1/services.

<!-- country-data:HK:coverage:end -->

Here is a practical flow: normalise with normalizeHk() from above, then one lookup returns the line type, the current network and WhatsApp and Telegram registration for a batch of numbers. It uses the public sandbox key mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym and our test values, which are UK drama numbers. The sandbox accepts only those, so the run below uses them; with a live key, pass the output of normalizeHk(). We ran it on 2026-10-10 with Node.js 24.

hk-profile.mjs
const API = "https://api.mobilevalidate.com/v1/lookup";
const KEY = process.env.MOBILEVALIDATE_API_KEY;

/** One lookup for a batch of E.164 numbers: line type, current network and two messaging-app checks. */
export async function profile(numbers) {
  const res = await fetch(API, {
    method: "POST",
    headers: { Authorization: `Bearer ${KEY}`, "Content-Type": "application/json" },
    body: JSON.stringify({ numbers, checks: ["carrier", "whatsapp", "telegram"], wait: 5 }),
  });
  if (!res.ok) throw new Error(`lookup failed: ${res.status}`);
  const { results } = await res.json();
  return results.map((r) => {
    const c = r.checks;
    const carrier = c["network.carrier"].status === "completed" ? c["network.carrier"].attributes : null;
    const app = (code) => (c[code].status === "completed" ? c[code].registered : null); // null = unknown, never false
    return {
      number: r.e164,
      lineType: carrier?.line_type ?? null,
      network: carrier?.carrier ?? null,
      whatsapp: app("whatsapp.registered"),
      telegram: app("telegram.registered"),
    };
  });
}

console.table(await profile(["+447700900001", "+447700900002", "+447700900003", "+447700900005"]));
Test valuelineTypenetworkwhatsapptelegramWhy
+447700900001mobileTest CarriertruetrueRegistered on both
+447700900002nullnullfalsefalseCarrier has no data (NO_DATA); not registered on either app
+447700900003nullnullnullnullEvery check timed out (UPSTREAM_TIMEOUT)
+447700900005nullnullnullnullunsupported_country

Keep null apart from false: null means we don't know, and it's never billed. For live porting status and reachability, add the MNP or HLR check. See carrier lookup and Telegram number check for the fields, and pricing for prices.

What are the key takeaways?

  • Hong Kong numbers are +852 plus 8 digits, with no area code and no trunk 0; store them as +852XXXXXXXX.
  • Mobile blocks sit under 4 to 9, but 58, the 81–83 personal numbers, pagers in 7, 800 freephone and spare blocks are not mobiles: validate with a maintained library and the region HK.
  • Rewrite 00852 to +852 before parsing, or libphonenumber reads it as 008 plus Mexico's 52.
  • Porting has run since 1 March 1999, so a prefix shows the original operator, not the current one.
  • Every SIM used locally has been real-name registered since 24 February 2023, and registered business senders use # sender IDs.
  • Hong Kong (+852), Macau (+853) and mainland China (+86) are separate numbering plans.

Platform, regulator and company names are used descriptively. MobileValidate is not affiliated with any of them.

Sources

  1. The Numbering Plan for Telecommunications Services in Hong Kong: allocation and assignment of Hong Kong telephone numbers (dataset, updated 4 September 2026) — Office of the Communications Authority (via DATA.GOV.HK), 2026
  2. Mobile numbers with new prefixes to be launched soon (press release, 5 February 2018) — Office of the Communications Authority, 2018
  3. Implementation of Mobile Number Portability (paper for the Panel on Information Technology and Broadcasting, 1999) — Legislative Council of Hong Kong, 1999
  4. Service reactivation arrangements for deactivated pre-paid SIM cards not having completed real-name registration before deadline (press release, 24 February 2023) — Hong Kong SAR Government, 2023
  5. SMS Sender Registration Scheme to be launched on December 28 to assist in combating SMS scams (press release, 20 December 2023) — Office of the Communications Authority, 2023
  6. Unsolicited Electronic Messages Ordinance (Cap. 593) — Hong Kong e-Legislation, Department of Justice, 2026
  7. List of ITU-T Recommendation E.164 assigned country codes — ITU, 2026
  8. libphonenumber PhoneNumberMetadata.xml (region HK) and release notes — libphonenumber project (Apache License 2.0), 2026
  9. Telephone numbers in Hong Kong — Wikipedia, 2026

Frequently asked questions

How many digits is a Hong Kong phone number?

Eight, for both mobiles and landlines, with no area code and no trunk prefix. A mobile is written 5XXX XXXX at home and +852 5XXX XXXX from abroad. Toll-free 800 numbers have nine digits, and machine-to-machine numbers starting 4500 have twelve.

What is the Hong Kong country code for WhatsApp and international use?

+852. Nothing is dropped: the eight local digits follow the code as they are, so 5XXX XXXX becomes +852 5XXX XXXX, stored in E.164 as +8525XXXXXXX. Use that form for every platform.

Which Hong Kong numbers are mobile numbers?

Mobile blocks start with 4, 5, 6, 7, 8 or 9, but not every block does. Numbers starting 2 or 3 are fixed lines, 81 to 83 are mostly personal numbers, parts of 7 are pagers and 800 is toll-free. Validate with a maintained library rather than a first-digit rule.

Can I tell a Hong Kong number's network from its prefix?

No. Mobile number portability has run in Hong Kong since 1 March 1999, so subscribers can change operator and keep the number. The prefix shows which operator the block was allocated to, not the one serving the number today.

Are Hong Kong, Macau and mainland China numbers the same?

No. They are three separate numbering plans with three country codes: +852 for Hong Kong, +853 for Macau and +86 for mainland China. Calls between them are international, and a mainland mobile has 11 digits starting with 1.

Do Hong Kong SIM cards have to be registered?

Yes. Since 24 February 2023, every SIM card issued and used locally, including pre-paid cards, must complete real-name registration before service starts. The operators hold the registration records: no lookup, ours included, returns a subscriber's identity.

All articles

Know before you send.

Tell us about your use case. We review every request and set you up with test and live keys.