Indonesia is the world’s fourth most populous country, spread across more than 17,000 islands, and its telephone numbering system reflects that complexity. The BRTI (Badan Regulasi Telekomunikasi Indonesia) — the national telecommunications regulator — maintains a detailed numbering plan that allocates prefixes to mobile operators and geographic area codes to fixed-line zones. This validator implements that plan so you can verify any Indonesian phone number instantly, identify its operator or area, and produce a clean formatted output — all without sending a single byte over the network.
Whether you are building a user registration form, cleaning a contact database, verifying a supplier’s details, or just checking whether a number you received is structurally plausible, this tool gives you a fast, authoritative answer based on the published BRTI allocation table.
How it works
Step 1 — Normalisation. The validator strips all spaces, hyphens, dots, and brackets. It then handles three common input conventions:
- National format with a leading
0(e.g.0812 3456 7890) - International format with
+62(e.g.+62 812 3456 7890) - International format with
0062(e.g.0062 812 3456 7890)
The +62 and 0062 prefixes are both converted to a leading 0, producing a canonical national-format digit string.
Step 2 — Length pre-check. Indonesian national numbers are 7 to 13 digits long. Any input outside that range is rejected immediately with a clear message.
Step 3 — Prefix lookup. The validator walks the BRTI plan table from longest prefix to shortest, selecting the first entry whose prefix matches the start of the normalised number. Greedy longest-prefix matching is essential here because, for example, 0274 (Yogyakarta) must be matched before the shorter 02x pattern to avoid a false fixed-line attribution.
Step 4 — Length validation. Each prefix entry in the plan carries a minimum and maximum total digit count. The validator checks that the normalised number falls within those bounds. A Telkomsel 0812 number that is only 10 digits long (one digit short) is caught here, as is a 13-digit landline number on a prefix that only supports 11 digits.
Step 5 — Output. A passing number is formatted in both national style (0xxx-xxxx-xxxx) and E.164 international style (+62xxxxxxxxxx). The operator or geographic area is reported alongside the service type (Mobile, Fixed Line, or Toll-Free). Both formatted strings can be copied to the clipboard with one click.
Worked example
Take the number +62 812-3456-7890:
| Step | Value |
|---|---|
| Strip and normalise | 081234567890 |
| Length | 12 digits — within global range |
| Longest matching prefix | 0812 (Telkomsel Simpati/Halo) |
Min/max for 0812 | 11–13 digits |
| Length check | 12 is between 11 and 13 — pass |
| National format | 0812-3456-7890 |
| E.164 format | +62812345678 90 |
| Result | Valid — Telkomsel (Simpati/Halo), Mobile |
Now try 021-5551234 (a Jakarta landline):
| Step | Value |
|---|---|
| Normalise | 02155551234 |
| Length | 11 digits |
| Longest matching prefix | 021 (Telkom, Jakarta/Banten) |
Min/max for 021 | 10–12 digits |
| Length check | 11 is between 10 and 12 — pass |
| National format | 021-555-51234 |
| E.164 format | +6221555 51234 |
| Result | Valid — Telkom (Jakarta / Banten), Fixed Line |
The same logic catches a number like 0812 345 (only 7 digits with the leading 0) and reports it as too short for the 0812 prefix range.
Every calculation happens in your browser. No numbers are transmitted, stored, or logged.