An India phone number validator that checks any 10-digit Indian number — mobile or landline — against the TRAI National Numbering Plan. It identifies the number type, matches the operator series allocation for mobiles, resolves the STD city code for landlines, and formats the result in both the canonical national style and in E.164 (+91…) machine-readable form. Everything runs in your browser — no data is uploaded or sent to any server.
How Indian phone numbers are structured
India uses a 10-digit national subscriber numbering system managed by TRAI and the Department of Telecommunications (DoT). When dialling from abroad you prefix +91 (the country code); when dialling domestically you dial the trunk prefix 0 followed by the 10-digit number (making 11 digits at the handset for landlines, though modern networks accept the 10-digit form directly for mobiles).
The 10-digit number breaks down differently for mobiles and landlines:
Mobile numbers: the first digit is always 6, 7, 8, or 9 — TRAI has not allocated any mobile series below 6. The first 3 digits form the Network Access Code (NAC), which maps to a licensed operator and telecom circle. Because India has 22 licensed telecom circles (geographic regions), each operator holds multiple NAC blocks, one or more per circle.
Landline numbers: the first 2-4 digits form the STD (Subscriber Trunk Dialling) code, which identifies the city or district exchange. Major cities have 2-digit STD codes (Delhi = 11, Mumbai = 22, Kolkata = 33, Chennai = 44); smaller cities use 3 or even 4 digits. The remaining digits form the subscriber number at that exchange.
Validation algorithm
The tool applies these rules in order:
-
Normalise: strip whitespace, dashes, dots, and brackets. Convert +91 or 0091 international prefix (or the 12-digit 91XXXXXXXXXX form) to the bare 10-digit national subscriber number. Strip the trunk 0 from 11-digit national format.
-
Length check: the result must be exactly 10 digits. Fewer or more is immediately invalid.
-
Short-code detection: if 3-4 digits remain after normalisation, check the special service code table (100, 112, 1098, etc.) before reporting “too short”.
-
Type routing: first digit 6-9 routes to mobile validation; first digit 1-5 routes to landline/STD validation; first digit 0 is never valid in subscriber form.
-
Mobile prefix check: match the first 3 digits against the TRAI operator series table. If matched, report operator, circle, and formatted output. If the 3-digit NAC is in the 6xx-9xx range but unallocated, report invalid with the exact unrecognised prefix.
-
Landline STD match: try 4-digit then 3-digit then 2-digit STD codes against the city table. If matched, report the city, the STD code length, and the formatted output. If the number starts with 1-5 but no STD code matches, it is still structurally plausible as an allocated landline block not in the city table.
-
Format output: mobile numbers format as
+91 XXXXX XXXXX(5+5 split); landlines format with the STD code separated from the subscriber number.
Worked example
The mobile number 98765 43210 breaks down as:
- Length: 10 digits — correct
- First digit: 9 — mobile range
- NAC (first 3 digits): 987 — allocated to Vodafone Idea
- E.164 form:
+91 9876543210 - Formatted national:
+91 98765 43210
A landline like 011 2345 6789 normalises to 1123456789 (10 digits), then:
- STD code match: “11” = Delhi
- Subscriber portion: 23456789 (8 digits — correct for a 2-digit STD)
- E.164:
+91 11 2345 6789
| Input | Type | Operator / City | Valid? |
|---|---|---|---|
| 98765 43210 | Mobile | Vodafone Idea | Yes |
| +91 70001 23456 | Mobile | Jio | Yes |
| 011-2345-6789 | Landline | Delhi | Yes |
| 55555 55555 | Mobile | — (5xx unallocated) | No |
| 12345 6789 | — | 9 digits | No |
Every validation runs in your browser — no data is uploaded, no server is contacted, and no lookup service is queried. Mobile Number Portability (MNP) means the shown operator is the original series holder; the actual current operator may differ if the subscriber has ported their number.