Guides

India phone number format: +91, mobile prefixes, porting and TRAI rules

India phone number format: +91 plus 10 digits, mobile prefixes 6-9, tested validation code, porting (MNP) rules, DLT sender rules and the 140/1600 series.

By Published 18 min read

On this page

Indian phone numbers use the country code +91 followed by 10 digits, for mobiles and landlines alike. Ordinary mobiles start with 6, 7, 8 or 9, so in E.164 a mobile looks like +91 81XXX XXXXX (12 digits without the plus). The first digits don't show the current operator, because numbers have been portable since 2011. Commercial SMS must go through TRAI's DLT registration.

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 Telecom Regulatory Authority of India (TRAI) documents listed under Sources on 2026-11-03. If you only need validation code for a sign-up form, our developer post on validating Indian mobile numbers in code goes deeper on regex, PHP and C#. This is a summary, not legal advice.

What does an Indian phone number look like?

A mobile number is 10 digits, written 81XXX XXXXX at home, sometimes with a trunk 0 in front (081XXX XXXXX). From abroad it is +91 81XXX XXXXX, or 0091 81XXX XXXXX with India's international dialling prefix. India's National Numbering Plan 2003, published by the Department of Telecommunications (DoT), fixed the national number at 10 digits for mobile and fixed-line services (ITU list of national numbering plans, India). A landline is a 2- to 4-digit area code (the plan calls it the SDCA code) plus the subscriber number, again 10 digits in total.

ItemValue
Country calling code+91
International call prefix (dialling out)00
Trunk prefix (dialling at home)0
Mobile: digits after +9110
Fixed line: digits after +9110
Toll-free: digits after +918–13
Premium rate: digits after +9113
Shared cost: digits after +9111
Universal access (UAN): digits after +9110
Mobile, national format (masked)081XXX XXXXX
Mobile, international (masked)+91 81XXX XXXXX
Mobile, E.164 (masked)+9181XXXXXXXX
Fixed line, national format (masked)011 XXXX XXXX
Fixed line, international (masked)+91 11 XXXX XXXX
Fixed line, E.164 (masked)+9111XXXXXXXX

Store only the E.164 form: +91 and the 10 digits, no spaces. Indian forms often collect numbers as 9XXXXXXXXX, 09XXXXXXXXX, 919XXXXXXXXX without a plus, or typed in Devanagari digits (९८…). A numbering-plan library with the default region IN turns most of these into +91…; the Devanagari digits need one extra step in JavaScript, shown below.

How many digits does an Indian number have?

NumberDigits after +91Example (masked)
Mobile10+91 81XXX XXXXX
Landline10 (area code + subscriber number)+91 11 XXXX XXXX (Delhi)
Toll-free (1800)8 to 13 in libphonenumber's metadata1800 XXX XXXX
140 promotional and 1600/1601 service call series10140X XXX XXX, 1600 XXX XXX
Machine-to-machine (M2M) SIMs13 for the dedicated M2M seriesnot dialled by people

The last row matters if you handle IoT devices. TRAI has asked DoT to move all SIM-based M2M connections that still use 10-digit mobile numbers to the 13-digit M2M series "at the earliest" (TRAI recommendations, 2025, para 3.11). A 13-digit Indian number is therefore not necessarily a typo, but it isn't a person's phone either.

Four typed forms of an Indian number (0091, +91, 0, 91) merge into one +91 ten-digit strip starting 6-9, which splits into a mobile lane (yes) and the 1600 and 140 call series (no), beside DLT header suffixes and a UPC porting card.Four typed forms of an Indian number (0091, +91, 0, 91) merge into one +91 ten-digit strip starting 6-9, which splits into a mobile lane (yes) and the 1600 and 140 call series (no), beside DLT header suffixes and a UPC porting card.
One E.164 form for every Indian number, and only 6-9 mobiles for sign-ups.

Which prefixes are mobile numbers?

Every ordinary mobile starts with 6, 7, 8 or 9. For each two-digit block, the generator counted every 10-digit number that libphonenumber's mobile pattern for IN accepts. The "National prefix" column uses the optional trunk 0:

National prefixInternationalShare of the block that is mobile (10-digit numbers)3-digit sub-blocks that aren't fully mobile
016+91 162.0%not mobile: 0161–0169; partly mobile: 0160 (20.0%)
0AA, for 17 blocks AA = 60, 69, 70, 72, 74, 84, 85, 90–99+91 AA100%—
061+91 6170.1%partly mobile: 0611 (40.0%), 0612 (41.0%), 0613 (40.0%), 0615 (40.0%), 0618 (40.0%)
062+91 6270.0%partly mobile: 0621 (40.0%), 0622 (40.0%), 0624 (40.0%), 0625 (40.0%), 0627 (40.0%)
063+91 6376.0%partly mobile: 0631 (40.0%), 0632 (40.0%), 0633 (40.0%), 0634 (40.0%)
064+91 6464.0%partly mobile: 0641 (40.0%), 0642 (40.0%), 0643 (40.0%), 0645 (40.0%), 0646 (40.0%), 0647 (40.0%)
065+91 6546.0%partly mobile: 0651 (40.0%), 0652 (40.0%), 0653 (40.0%), 0654 (40.0%), 0655 (40.0%), 0656 (40.0%), 0657 (40.0%), 0658 (40.0%), 0659 (40.0%)
066+91 6658.0%partly mobile: 0661 (40.0%), 0662 (40.0%), 0663 (40.0%), 0664 (40.0%), 0665 (40.0%), 0667 (40.0%), 0668 (40.0%)
067+91 6750.2%partly mobile: 0671 (40.0%), 0672 (40.0%), 0673 (40.0%), 0674 (16.0%), 0675 (40.0%), 0676 (40.0%), 0678 (46.0%), 0679 (40.0%)
068+91 6854.1%not mobile: 0683; partly mobile: 0680 (40.0%), 0681 (40.0%), 0682 (41.0%), 0684 (40.0%), 0685 (40.0%), 0686 (40.0%)
071+91 7143.6%partly mobile: 0710 (40.0%), 0711 (40.0%), 0712 (40.0%), 0713 (40.0%), 0714 (40.0%), 0715 (40.0%), 0716 (40.0%), 0717 (40.0%), 0718 (40.0%), 0719 (76.0%)
073+91 7378.8%partly mobile: 0731 (48.0%), 0732 (64.0%), 0733 (50.0%), 0734 (50.0%), 0739 (76.0%)
075+91 7584.0%partly mobile: 0751 (50.0%), 0752 (82.0%), 0755 (50.0%), 0759 (58.0%)
076+91 7677.2%partly mobile: 0760 (76.0%), 0761 (70.0%), 0762 (70.0%), 0763 (52.0%), 0764 (40.0%), 0765 (64.0%)
077+91 7796.4%partly mobile: 0770 (64.0%)
078+91 7894.3%partly mobile: 0788 (43.0%)
079+91 7940.1%not mobile: 0791, 0792, 0794–0796; partly mobile: 0793 (1.0%)
080+91 8060.7%not mobile: 0802–0804; partly mobile: 0806 (20.0%), 0807 (87.0%)
081+91 8194.8%partly mobile: 0816 (48.0%)
082+91 8284.4%partly mobile: 0820 (48.0%), 0821 (48.0%), 0824 (48.0%)
083+91 8384.4%partly mobile: 0831 (48.0%), 0832 (48.0%), 0836 (48.0%)
086+91 8684.4%partly mobile: 0861 (48.0%), 0863 (48.0%), 0866 (48.0%)
087+91 8784.6%partly mobile: 0870 (50.0%), 0877 (48.0%), 0878 (48.0%)
088+91 8890.6%partly mobile: 0883 (48.0%), 0884 (58.0%)
089+91 8995.8%partly mobile: 0891 (58.0%)

Three things stand out:

  • Seventeen blocks are fully mobile: 60, 69, 70, 72, 74, 84, 85 and 90 to 99. Any valid 10-digit number there is a mobile.
  • Many 6, 7 and 8 blocks are shared with landlines. Area codes such as Bengaluru's 80 sit inside the same digit space, which is why 0802 to 0804 show as "not mobile". A rule like "starts with 6 to 9 means mobile" accepts some landlines. Our developer post measures how many.
  • The 016 row is the 1600 and 1601 call series, which the metadata types as mobile. They are explained in the next section.

Which operator holds a prefix?

DoT allocates mobile number blocks to operators by licensed service area (a state or a group of states, called an LSA or "circle"). The same leading digits can belong to different operators in different circles, and a ported number keeps its digits on a new network. We found no current public DoT list mapping every block to an operator. So we don't publish a "98XXX means operator A" table: it would be wrong for millions of numbers. What TRAI does publish is how many mobile subscriptions each operator has (TRAI PR 140/2026, Annexure II):

OperatorWireless (mobile) subscriptions, 30 September 2026
Reliance Jio511.14 million
Bharti Airtel494.29 million
Vodafone Idea200.12 million
BSNL94.30 million
MTNL0.15 million
All operators1,300.00 million

These figures include machine-to-machine SIMs. On the date of peak network activity in September 2026, 1,212.80 million wireless subscribers were active. To learn the operator of one number today, look it up: our MNP lookup returns ported or not ported and the current network code.

What are 140, 1600 and 1601 numbers?

They are number series reserved for commercial calls, so people can tell a bank's service call from a sales call:

SeriesUsed forSource
140Promotional calls, which follow people's do-not-disturb preferencesTRAI PR 91/2026
1600Service and transactional calls from entities regulated by RBI, SEBI, IRDAI and PFRDA, and from government bodiesTRAI PR 135/2025, PR 91/2026
1601Service and transactional calls from other sectors, starting with utilities and courier and logistics firms in August 2026TRAI PR 113/2026

For number handling, two points matter. People don't sign up with these numbers, so a sign-up form may reject them (the code below does). But if you process caller IDs or call logs, a ^[6-9] rule silently drops them. TRAI's September 2026 amendment also bars call management apps from blanket-blocking or spam-tagging these series (TRAI PR 119/2026). Our guide to TRAI's 2026 anti-spam rules covers the amendment, its dates and the sender checklist.

How do I validate an Indian number in code?

Use a libphonenumber port with full metadata and the default region IN, then keep only mobiles that start with 6 to 9. Treat FIXED_LINE_OR_MOBILE as a possible mobile: the metadata can't tell the two apart in shared blocks.

Python (pip install phonenumbers):

Python
import phonenumbers
from phonenumbers import PhoneNumberType as T

SIGNUP_TYPES = {T.MOBILE, T.FIXED_LINE_OR_MOBILE}


def normalize_in(raw: str) -> str | None:
    """E.164 for an Indian mobile a person can sign up with, or None."""
    try:
        n = phonenumbers.parse(raw, "IN")
    except phonenumbers.NumberParseException:
        return None
    if (not phonenumbers.is_valid_number(n) or phonenumbers.region_code_for_number(n) != "IN"
            or phonenumbers.number_type(n) not in SIGNUP_TYPES):
        return None
    e164 = phonenumbers.format_number(n, phonenumbers.PhoneNumberFormat.E164)
    return e164 if e164[3] in "6789" else None  # drops the 1600/1601 call series

JavaScript (npm install libphonenumber-js):

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

const SIGNUP_TYPES = new Set(["MOBILE", "FIXED_LINE_OR_MOBILE"]);

/** "081234 56789", "+91 …", "0091 …", "91…" or Devanagari digits → E.164 for a 6–9 mobile, or null. */
export function normalizeIn(raw) {
  const ascii = String(raw).replace(/[०-९]/g, (d) => String(d.charCodeAt(0) - 0x0966)); // ०–९ → 0–9
  const phone = parsePhoneNumberFromString(ascii, "IN");
  return phone?.isValid() && phone.country === "IN" && SIGNUP_TYPES.has(phone.getType()) && /^\+91[6-9]/.test(phone.number)
    ? phone.number : null;
}

We ran both on 2026-11-03 (Python 3.12 with phonenumbers 9.0.40, Node.js 24 with libphonenumber-js 1.13.13). Both returned an E.164 number for rows 1 to 5 below and nothing for rows 6 to 10. Both also accepted 91 plus 10 digits without a plus, returned nothing for a 1600 number and for a US number, and gave the same answer for a number typed in Devanagari digits, but only after the conversion line in JavaScript: without it, libphonenumber-js returned nothing. The shape regex column tests a pattern derived from the metadata, after spaces, dashes and brackets are removed:

#CaseInput (masked)Shape regex ^(?:\+91|0091|0)?[16-9]\d{9}$libphonenumber (IN)
1National, with trunk prefix081XXX XXXXXpassesvalid, MOBILE
2International, with spaces+91 81XXX XXXXXpassesvalid, MOBILE
3International dialling prefix 000091 81XXX XXXXXpassesvalid, MOBILE
4E.164+9181XXXXXXXXpassesvalid, MOBILE
5Dashes and brackets(081XXX) XXXXXpassesvalid, MOBILE
6One digit short081XXXXXXXfailsinvalid
7One digit too many081XXXXXXXXXfailsinvalid
8Mobile shape, unused block 010010XXXXXXXXpassesinvalid
9Fixed line011 XXXX XXXXpassesvalid, FIXED_LINE
10Universal access (UAN) range14X XXX XXXXpassesvalid, UAN

Row 8 is the one to remember: 010 has the right length and passes the regex, but it isn't a valid range, so an OTP sent to it is wasted. Rows 9 and 10 pass this regex too, because it has to allow the leading 1 of the 1600 series. The popular ^[6-9]\d{9}$ has the opposite problem; our developer post shows what it accepts and rejects, with PHP and C# versions. For more languages, see our Python and JavaScript guides.

Does number portability change the carrier?

Yes. Mobile number portability (MNP) began in the Haryana service area on 25 November 2010 and across the rest of India on 20 January 2011. At first it worked only within one service area; porting between service areas followed nationwide on 3 July 2015 (TRAI PR 140/2026). The rules, as of November 2026:

  • Mobile to mobile. The regulations define portability as keeping a mobile number when moving between operators or mobile technologies (MNP Regulations, 2009, regulation 2). Landline numbers aren't covered.
  • 90-day wait. A number can be ported once 90 days have passed since activation or since its last port.
  • Unique porting code (UPC). The subscriber texts PORT and the 10-digit number to 1900 and receives an eight-character code, valid for 4 days (30 days in Jammu & Kashmir, Assam and the North East) (TRAI MNP FAQ).
  • No port right after a SIM swap. Since 1 July 2024, no UPC is issued within 7 days of a SIM swap or replacement, to stop fraudsters porting a hijacked number (Ninth Amendment, 2024).
  • Porting time. Up to 3 working days within a service area, 5 working days between areas or for corporate numbers, and up to 15 working days in Jammu & Kashmir, Assam and the North East.

Porting is common. In September 2026 alone, 16.77 million subscribers asked to port their numbers (TRAI PR 140/2026).

The India row of our MNP atlas:

ItemValue
Mobile number portabilityYes
Mobile porting since2011-01-20
Maximum porting time3 working days within a service area; 5 working days between areas or corporate; up to 15 in J&K, Assam, North East
Governing ruleTelecommunication Mobile Number Portability Regulations, 2009 (8 of 2009), as amended; Ninth Amendment 2024 (7-day wait after a SIM swap, from 2024-07-01)
Published porting volumemonthly (Sep 2026): 16.77 million porting requests (2026)
Sourcetrai.gov.in, trai.gov.in
Checked2026-11-03

Our MNP atlas compares India with other countries. For routing, pricing or fraud rules, look up the current network per number instead of guessing from the prefix. Our SMS routing with MNP and HLR use case shows where that pays off.

Are disconnected Indian numbers reused?

Yes, after a quarantine. DoT instructions of 20 April 2017 forbid operators from giving a deactivated mobile number to a new customer for at least 90 days, whether it was cut off for non-use or at the subscriber's request (TRAI recommendations, 2025, para 2.40.2). In February 2025, TRAI recommended stricter rules: 90 days of non-use before deactivation, mandatory deactivation after a further 365 days, and longer waits before reuse. These are recommendations to DoT. A number in your CRM that was valid in 2024 may belong to someone else today, so re-check old lists before you message them. A live network status (HLR) check shows whether a number is reachable now.

Which messaging apps and channels reach people?

SMS reaches every active mobile, within the DLT rules below. For WhatsApp, India is a standalone market on Meta's rate card. Meta raised India's marketing rate on 1 January 2026 and its authentication-international rate on 1 April 2026. Solution providers and directly integrated businesses whose sold-to country is India must move every messaging account to rupee (INR) billing by 31 December 2026. From 1 January 2027, Meta stops delivering messages from their non-INR accounts (Meta pricing, read on 2026-11-03). Our WhatsApp Business API pricing post compares the categories.

We didn't find a primary source that measures messaging-app use in India in a way we can verify, so we don't quote shares. The practical answer is to measure your own opted-in customers. Check which apps they are registered on, route each person to the channel they use, and keep SMS as the fallback. Our channel-by-country guide shows the method.

How do I check WhatsApp registration for an Indian customer list?

Normalise every row first, then run one check per number. A check tells you whether a number is registered at the time of the check. It can't tell you whether the person wants your messages:

AnswerWhat it meansWhat to do
registered: trueThe number has a WhatsApp account at checked_atOffer WhatsApp to customers who opted in to it
registered: falseNo account at checked_atUse SMS or another channel
unknownNo conclusive answer (not billed)Keep the current channel; retry later
invalid_numberFailed format validation (not billed)Fix the data at the source

For lists, use a bulk job. WhatsApp checks get the bulk price only for groups of at least 132 numbers from the same country in one job, so collect a day's Indian numbers into one job rather than many small ones. Upload a CSV whose numbers are written nationally (9XXXXXXXXX) with default_country=IN:

Bulk WhatsApp and porting check for a customer CSV
curl https://api.mobilevalidate.com/v1/jobs \
  -H "Authorization: Bearer $MOBILEVALIDATE_API_KEY" \
  -F file=@customers.csv -F checks=whatsapp,mnp -F default_country=IN

Send the same body to POST /v1/jobs/estimate first: it is free and shows the maximum cost before anything runs. Unknown or inconclusive results are never charged; see current prices. Our bulk WhatsApp number check post walks through the whole flow.

Do I need DLT registration to send SMS to India?

Yes, for any commercial SMS. These points summarise TRAI's regulations as we read them on 2026-11-03. Ask Indian counsel how they apply to you.

Registration on DLT

The Telecom Commercial Communications Customer Preference Regulations, 2018 (TCCCPR) made Indian operators run their commercial-messaging registers on distributed ledger technology (DLT). There are separate registers for entities (senders), headers, content templates, consent and customer preferences (TCCCPR, 2018). In practice:

  1. Register the business (the "principal entity") on an operator's DLT platform.
  2. Register each header, the sender name people see, and each content template, in the right category.
  3. Send only through a registered telemarketer chain, usually your SMS provider, which links your traffic to your DLT registration.

Operators check commercial traffic against these registers and block messages that don't match a registered header and template. A foreign business sending to India needs the same registration, usually arranged through its Indian SMS partner.

Header suffixes: -P, -S, -T, -G

Since the 2025 amendment, people can see the type of a commercial SMS from its header. Operators add -P (promotional), -S (service), -T (transactional) or -G (government) to the registered header (TCCCPR Second Amendment, 2025). A one-time passcode template registered in the wrong category is a compliance problem, not only a delivery one.

What changed in 2026

TRAI's Third Amendment, announced on 18 September 2026, adds AI-based spam flagging shared between operators. It also suspends misused headers within six hours, requires automated calls to be declared, and limits messages based on an inquiry to seven days (TRAI PR 119/2026). We don't repeat it here: our TRAI 2026 anti-spam rules post has the details and a ten-point checklist.

Personal data

The Digital Personal Data Protection Rules, 2025 were notified on 14 November 2025, putting the Digital Personal Data Protection Act, 2023 into effect in phases over 18 months. Every data fiduciary must give a separate, plain consent notice that states the purpose (PIB, 2025). A registration check on a customer's number is processing of personal data. Follow the baseline in our consent guide: your own customers, a stated purpose, minimal data and honoured objections. Ask counsel which duties apply to you and from when.

What changed recently?

The rows for IN and +91 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)9
Alternate formatting5
Geocoding (area names)5
Original-carrier prefix data3
All22

Latest numbering-plan updates for IN: 2026-09-09 (v9.0.39), 2026-08-26 (v9.0.38), 2026-05-20 (v9.0.31), 2026-05-06 (v9.0.30), 2025-12-17 (v9.0.21).

India's numbering-plan metadata changed in two libphonenumber releases between August and September 2026, and in two more in May 2026. A library that is a few months old will reject some valid new numbers, so update it at least monthly.

Landlines may change next. In February 2025 TRAI recommended a "closed" 10-digit scheme for fixed lines: every landline-to-landline call, even a local one, would be dialled as 0 + area code + number. Mobile dialling would stay as it is (TRAI recommendations, 2025, para 3.3). As of 2026-11-03 we found no DoT notification putting it into effect. Storing every number in E.164 makes your data immune to that kind of change.

What can MobileValidate check for Indian numbers?

Generated from our public catalog:

CheckAccepts India 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*, LinkedIn*Registered, not registered or unknown; unknown is free.
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-11-03; the live list is at GET /v1/services.

A lookup returns network and registration facts. It never returns a subscriber's name, Aadhaar or other ID number, or address, and we don't offer "number details" searches.

How to start without paying:

  • Free test key. Get a test key: it never touches a real network and returns fixed answers for reserved test numbers, so you can build every branch first (test mode).
  • Five real checks. Every live account can run 5 phone numbers and 5 e-mail addresses through the real-time checks for free on the dashboard's Try it page.
  • Free estimate. POST /v1/jobs/estimate shows the maximum cost of a bulk file before anything runs.

To get a live account, request access. Viber checks are bulk-only for now, as the asterisks in the table show. Prices are on the pricing page, which also lists the top-up bonuses on larger balances.

Here is a practical flow for a customer list: normalise with normalize_in(), then one real-time lookup gives porting status, the current network code (MCC-MNC) and WhatsApp registration. It uses the public sandbox key mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym and our test values. The sandbox accepts only those UK drama numbers, so the example uses them. With a live key, pass the output of normalize_in().

in_route.py
import os

import requests  # pip install requests

API = "https://api.mobilevalidate.com/v1/lookup"
KEY = os.environ["MOBILEVALIDATE_API_KEY"]


def route(numbers: list[str]) -> dict[str, dict]:
    """Porting status, current network code and WhatsApp registration. None means we don't know."""
    r = requests.post(API, headers={"Authorization": f"Bearer {KEY}"}, timeout=15,
                      json={"numbers": numbers, "checks": ["mnp", "whatsapp"], "wait": 5})
    r.raise_for_status()
    out = {}
    for row in r.json()["results"]:
        mnp, wa = row["checks"]["number.mnp"], row["checks"]["whatsapp.registered"]
        attrs = (mnp["attributes"] or {}) if mnp["status"] == "completed" else {}
        out[row["e164"]] = {
            "porting": attrs.get("porting"),
            "mcc_mnc": attrs.get("mcc_mnc"),
            "whatsapp": wa["registered"] if wa["status"] == "completed" else None,
        }
    return out


for number, info in route(["+447700900001", "+447700900002", "+447700900005"]).items():
    print(number, info)

What it printed with the sandbox key on 2026-11-03:

Text
+447700900001 {'porting': 'not_ported', 'mcc_mnc': '23415', 'whatsapp': True}
+447700900002 {'porting': 'not_ported', 'mcc_mnc': '23415', 'whatsapp': False}
+447700900005 {'porting': None, 'mcc_mnc': None, 'whatsapp': None}

The last test value answers unsupported_country for both checks, so everything is None. Keep None apart from False: None means we don't know, and it's never billed. Requests with 20 or more consecutive numbers are refused (403 suspected_enumeration), and our acceptable use policy forbids finding recipients for unsolicited messages. People can object through our opt-out form. See WhatsApp number check, MNP lookup and HLR lookup for the fields.

What are the key takeaways?

  • Indian numbers are +91 plus 10 digits; ordinary mobiles start with 6, 7, 8 or 9. Store the E.164 form.
  • Several 6, 7 and 8 blocks are shared with landline area codes, so validate with libphonenumber and region IN, not a first-digit rule. Convert Devanagari digits before parsing in JavaScript.
  • 140 (promotional), 1600 and 1601 (service) are call series for businesses, not sign-up numbers.
  • Prefixes don't show the operator: porting has run nationwide since 20 January 2011, with 16.77 million requests in September 2026. Ports wait 90 days after activation and 7 days after a SIM swap.
  • Commercial SMS needs DLT registration of the sender, headers and templates; see our TRAI 2026 rules guide for this year's changes.
  • Check WhatsApp registration only for customers you hold lawfully, keep unknown apart from false, and never treat registration as consent.

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

Sources

  1. Telecom subscription data as on 30 September 2026 (Press release No. 140/2026, 27 October 2026) — Telecom Regulatory Authority of India, 2026
  2. Telecommunication Mobile Number Portability Regulations, 2009 (8 of 2009), consolidated text — Telecom Regulatory Authority of India, 2024
  3. Telecommunication Mobile Number Portability (Ninth Amendment) Regulations, 2024 (14 March 2024) — Telecom Regulatory Authority of India, 2024
  4. Mobile number portability: frequently asked questions — Telecom Regulatory Authority of India, 2026
  5. Recommendations on Revision of National Numbering Plan (6 February 2025) — Telecom Regulatory Authority of India, 2025
  6. National Numbering Plan 2003 (India page of the ITU national numbering plans list) — International Telecommunication Union / Department of Telecommunications, Government of India, 2003
  7. Telecom Commercial Communications Customer Preference Regulations, 2018 (19 July 2018) — Telecom Regulatory Authority of India, 2018
  8. Telecom Commercial Communications Customer Preference (Second Amendment) Regulations, 2025 (12 February 2025) — Telecom Regulatory Authority of India, 2025
  9. Press release No. 119/2026: TRAI strengthens framework for curbing unsolicited commercial communications (18 September 2026) — Telecom Regulatory Authority of India, 2026
  10. Press release No. 91/2026: 140 and 1600 series (10 July 2026) — Telecom Regulatory Authority of India, 2026
  11. Press release No. 113/2026: phase-wise implementation of the 1601 series (10 August 2026) — Telecom Regulatory Authority of India, 2026
  12. Press release No. 135/2025: 1600 series for BFSI entities (19 November 2025) — Telecom Regulatory Authority of India, 2025
  13. DPDP Rules, 2025 notified: a citizen-centric framework for privacy protection (17 November 2025) — Press Information Bureau, Government of India, 2025
  14. WhatsApp Business Platform pricing — Meta for Developers, 2026
  15. libphonenumber PhoneNumberMetadata.xml (region IN) and release notes — libphonenumber project (Apache License 2.0), 2026

Frequently asked questions

How many digits is an Indian phone number?

Ten digits after the country code +91, for mobiles and landlines alike. In E.164 an Indian mobile is +91 followed by 10 digits, for example +91 81XXX XXXXX, so 12 digits without the plus sign. Written at home it is the same 10 digits, sometimes with a leading 0. Toll-free 1800 numbers and machine-to-machine (M2M) SIMs can be longer.

What is India's country code for WhatsApp and international calls?

+91. Write the 10-digit number after it with no leading 0: 081XXX XXXXX becomes +91 81XXX XXXXX. From abroad you can also dial 0091 instead of the plus. Store the E.164 form, +91 and the 10 digits with no spaces, and use it for every platform and API.

Which prefixes are mobile numbers in India?

Ordinary Indian mobiles start with 6, 7, 8 or 9. The first two to four digits don't tell you the current operator, because blocks are allocated to operators by service area and numbers have been portable nationwide since 20 January 2011. Some blocks starting with 6, 7 or 8 are shared with landline area codes, so use a numbering-plan library rather than a first-digit check.

What are 140, 1600 and 1601 numbers in India?

Special series for commercial calls. 140 numbers carry promotional calls and are subject to people's do-not-disturb choices. 1600 numbers carry service and transactional calls from banks and other finance firms regulated by RBI, SEBI, IRDAI or PFRDA and from government bodies. 1601 is being phased in from August 2026 for other sectors. People don't sign up with these numbers; businesses call from them.

Can an Indian mobile number keep its digits after changing operator?

Yes. Under TRAI's Mobile Number Portability Regulations, 2009, a number can be ported once 90 days have passed since activation or the last port, and not within 7 days of a SIM swap. The subscriber texts PORT and the number to 1900 to get a unique porting code. A port takes up to 3 working days in the same service area and 5 between areas, as of November 2026.

Do I need DLT registration to send SMS to India?

Yes, for commercial SMS. Under TRAI's 2018 regulations, the sender (principal entity), its headers and its message templates must be registered on the operators' DLT platform, and unregistered traffic is blocked. Since the 2025 amendment, operators add -P, -S, -T or -G to the header to show whether a message is promotional, service, transactional or government.

Can I check whether Indian customers are on WhatsApp?

Yes, for numbers you hold with a lawful basis, such as your own customers or sign-ups. A MobileValidate check answers registered, not registered or unknown with a checked_at date, and unknown answers are not billed. It never returns a name or profile, and requests that look like scans of number ranges are refused.

All articles

Know before you send.

Create a free account: approved automatically, usually within 10–15 minutes.

Free to start: check 5 phone numbers and 5 e-mail addresses for real on your account, plus an unlimited test mode. You pay only for conclusive answers, from $20.