Guides

Dutch phone number format: +31, 06 mobiles, validation and calling rules

Dutch phone number format: +31 plus 9 digits, 06 mobiles, 0970 M2M numbers, tested validation code, 1-day porting, opt-in sales calls and SMS consent.

By Published 19 min readHow we research and fact-check

On this page

Dutch phone numbers use the country code +31 and have 10 digits when written at home, always starting with 0. A mobile number starts with 06, so 06 XXXXXXXX in the Netherlands becomes +31 6 XXXXXXXX from abroad (E.164: +316XXXXXXXX), with nine digits after +31. Landlines start with a two- or three-digit area code such as 010 or 0111, company numbers with 088, and machine-to-machine numbers with 0970. The prefix shows which operator received the block, but numbers move between networks, so it doesn't prove the current one.

This guide is part of our phone numbers by country series. The tables come from libphonenumber's metadata, the Dutch numbering plan on wetten.overheid.nl, reports by the ACM (the Netherlands Authority for Consumers and Markets, which issues numbers), our MNP atlas and our public catalog. Example numbers are masked with X or are libphonenumber's own example numbers; the Dutch plan has no range reserved for fiction. We read the plan, the Telecommunications Act (Telecommunicatiewet) and the ACM and AP guidance on 2026-11-07; most are in Dutch only. This is a summary, not legal advice.

What does a Dutch phone number look like?

A Dutch number is 10 digits including the leading 0, the trunk prefix you dial inside the country. Article 2 of the numbering plan fixes geographic numbers at ten digits, and Annex 1 gives the same length to mobile, 084/087, 085/091 and 088 numbers. What follows the 0 tells you the kind of number:

First digits (national)InternationalType
01 to 05, 07 (2- or 3-digit area codes)+31 10 … +31 79Landline, for example 010 Rotterdam, 020 Amsterdam, 0111 Zierikzee
061 to 065, 068+31 6Mobile
066+31 66Pagers (semafonie)
085, 091+31 85, +31 91Public electronic communication services without an area code (mostly VoIP)
084, 087+31 84, +31 87Personal assistant services (follow-me numbers)
088+31 88Company and institution numbers
0800, 0900, 0906, 0909+31 800, +31 900 …Freephone and information services (8 or 11 digits)
0970+31 970Machine-to-machine (12 digits)

From abroad, drop the 0 and add +31. Dutch people often write a mobile as 06-12345678 or 06 1234 5678, and on business cards +31 (0)6 …. Strip the bracket and the 0 before you store it.

ItemValue
Country calling code+31
International call prefix (dialling out)00
Trunk prefix (dialling at home)0
Mobile: digits after +319, 11
Fixed line: digits after +319
Toll-free: digits after +317–10
Premium rate: digits after +317–10
VoIP: digits after +319
Pager: digits after +319
Universal access (UAN): digits after +315, 6, 9
Mobile, national format (masked)06 1XXXXXXX
Mobile, international (masked)+31 6 1XXXXXXX
Mobile, E.164 (masked)+3161XXXXXXX
Fixed line, national format (masked)010 XXX XXXX
Fixed line, international (masked)+31 10 XXX XXXX
Fixed line, E.164 (masked)+3110XXXXXXX

The "9, 11" for mobiles is libphonenumber's view: it types the 11-digit 0970 M2M numbers as mobile too, because they sit on mobile networks. For a person's number, expect exactly nine digits after +31. Toll-free and premium numbers vary between 7 and 10 digits after +31 because the plan allows 0800 and 090x numbers of 8 or 11 digits nationally (Annex 3).

A phone screen shows +31 and a large 06 capsule with eight digit dots, next to three linked rows: a 097 machine number marked no, an OPT-IN sales call marked yes and a call from abroad shown as a masked caller.A phone screen shows +31 and a large 06 capsule with eight digit dots, next to three linked rows: a 097 machine number marked no, an OPT-IN sales call marked yes and a call from abroad shown as a masked caller.
Dutch mobiles are 06 plus eight digits; 0970 is for machines, sales calls need opt-in and spoofed caller IDs are banned.

Which prefixes are mobile numbers?

The numbering plan lists these 06 ranges (Nummerplan, Annex 1):

RangeUse in the plan
061, 062, 063, 064Mobile telephony
0650 to 0655Mobile telephony
0656 to 0659Former pager range, mobile telephony since 1 January 2006
066Pagers (semafonie)
0670 to 0675, 0677 to 0679, 06760Videotex, data and internet access
068Mobile telephony
060, 069No entry; earmarked for mobile but not released for allocation

The ACM's numbering report confirms it: numbers starting 06 are for mobile telephony, except the 066 and 067 ranges, and 060 and 069 are meant for mobile but not yet made available by the ministry (ACM Monitor Nummeruitgifte 2025). For each two-digit block, the generator counted every number of a mobile length that libphonenumber's mobile pattern for NL accepts:

National prefixInternationalShare of the block that is mobile (9, 11-digit numbers)3-digit sub-blocks that aren't fully mobile
061+31 61100%—
062+31 62100%—
063+31 63100%—
064+31 64100%—
065+31 65100%—
068+31 68100%—
097+31 9710.0%not mobile: 0971–0979

The 097 row is the M2M range: only 0970 is in use, so libphonenumber accepts a tenth of the 097 block. All other rows are personal mobiles.

How full is the 06 range?

The ACM issues 06 numbers to operators in blocks of 10,000. At the end of 2025, 88.7% of the issuable 06 numbers had been issued, the same as a year earlier. The ACM says it will look more closely at the situation if the share passes 90% (ACM Monitor Nummeruitgifte 2025). There were no changes to the mobile ranges in 2025.

Which operator holds a 06 block?

The Dutch mobile market has three networks. In the ACM's Telecommonitor for the second quarter of 2026, KPN and Odido each had a 25 to 30% share of mobile connections, VodafoneZiggo 20 to 25%, and virtual operators on those networks 15 to 20% together. The country had 24.77 million mobile connections and 22.1 million M2M SIM cards (ACM Telecommonitor Q2 2026). Odido is the brand that replaced T-Mobile and Tele2 in September 2023 (RCR Wireless, 2023), so older lookup tables may still show the old names.

What are 0970 numbers?

They are numbers for machine-to-machine (M2M) services, such as smart meters, alarm panels, payment terminals and connected cars. The plan gives 0970 a length of 12 digits nationally, so 11 digits follow +31. 0971 to 0978 have no use assigned yet, and 0979 is kept outside the plan for network-internal use (Nummerplan, Annex 1).

Since 1 March 2013, a new automated application must use a 0970 number. It may also use 067, 0800, 084, 087, 090 or 1 numbers if it meets their purpose rules (article 1c). M2M numbers are growing fast: the ACM reports 19.1 million more 0970 numbers issued in 2025 than in 2024 (+34.92%) and doesn't exclude that the issuable space could run out in the short term (ACM Monitor Nummeruitgifte 2025).

For your forms, the rule is simple: a 0970 number belongs to a device, not to a person. libphonenumber returns MOBILE for it, so filter it out yourself, as the code below does.

What do 085, 088, 084/087 and 14 numbers mean?

  • 085 and 091 are for public electronic communication services. The ACM explains that 085 serves providers that want a number that looks like a landline without a link to an area, mostly VoIP services, and 091 is for value-added services. libphonenumber types both as VOIP.
  • 088 is for companies and institutions: a single national number for an organisation with several offices. 3,730,800 088 numbers had been issued in 2025 (ACM).
  • 084 and 087 are personal assistant services (follow-me numbers that forward to wherever the user is). The plan excludes erotic, call-prolonging and entertainment services from them.
  • 14 plus the area code (5 or 6 digits, for example 14 020) reaches a municipality's contact centre, 1400 the central government and 14088 the government contact centre for businesses.
  • 112 is the emergency number, and 116xxx numbers are harmonised European services of social value.

None of these should be accepted as a personal sign-up number. A landline area code still says where the line was issued: unlike France, the Netherlands kept its geographic numbering.

How do I validate a Dutch number in code?

Use a libphonenumber port with full metadata and the default region NL, keep only numbers typed as mobile, and drop the 0970 M2M numbers.

Python (pip install phonenumbers):

Python
import phonenumbers
from phonenumbers import PhoneNumberType


def normalize_nl(raw: str) -> str | None:
    """E.164 for a Dutch mobile number (06), or None. Pagers (066) and M2M (097) are dropped."""
    try:
        n = phonenumbers.parse(raw, "NL")
    except phonenumbers.NumberParseException:
        return None
    if (not phonenumbers.is_valid_number(n) or phonenumbers.region_code_for_number(n) != "NL"
            or phonenumbers.number_type(n) != PhoneNumberType.MOBILE
            or phonenumbers.national_significant_number(n).startswith("97")):
        return None
    return phonenumbers.format_number(n, phonenumbers.PhoneNumberFormat.E164)


for raw in ["06 12345678", "06-1234 5678", "+31 (0)6 12345678", "0031 6 12 34 56 78",
            "+31 06 12345678", "066 2345678", "010 123 4567", "085 123 4567"]:
    print(f"{raw!r:24} -> {normalize_nl(raw)}")

JavaScript (npm install libphonenumber-js):

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

/** "06 …", "+31 (0)6 …", "0031 …" → E.164 for a Dutch mobile number, or null.
 *  Pagers (066) and M2M numbers (097) are dropped. */
export function normalizeNl(raw) {
  const phone = parsePhoneNumberFromString(String(raw), "NL");
  return phone?.isValid() && phone.country === "NL" && phone.getType() === "MOBILE"
    && !phone.nationalNumber.startsWith("97") ? phone.number : null;
}

for (const raw of ["06 12345678", "06-1234 5678", "+31 (0)6 12345678", "0031 6 12 34 56 78",
                   "+31 06 12345678", "066 2345678", "010 123 4567", "085 123 4567"]) {
  console.log(JSON.stringify(raw).padEnd(24), "->", normalizeNl(raw));
}

We ran both on 2026-11-07 (Python 3.12 with phonenumbers 9.0.40, Node.js 24 with libphonenumber-js 1.13.13). Every input is one of libphonenumber's example numbers for NL (mobile, pager, fixed line and VoIP), written in different ways. Both printed the same results; Python prints single quotes and None, JavaScript double quotes and null:

Text
'06 12345678'            -> +31612345678
'06-1234 5678'           -> +31612345678
'+31 (0)6 12345678'      -> +31612345678
'0031 6 12 34 56 78'     -> +31612345678
'+31 06 12345678'        -> +31612345678
'066 2345678'            -> None
'010 123 4567'           -> None
'085 123 4567'           -> None

Two things are worth noting. +31 06 …, a common mistake that keeps the 0 after the country code, still parses to the right number in both libraries. The pager example 066 … is valid but typed PAGER, so it is dropped, as are the Rotterdam landline and the 085 VoIP number.

The generated test table runs the same idea over masked inputs. The shape regex column tests the pattern most tutorials give, after spaces, dots, dashes and brackets are removed:

#CaseInput (masked)Shape regex ^(?:\+31|0031|0)?[69]\d{8,10}$libphonenumber (NL)
1National, with trunk prefix06 1XXXXXXXpassesvalid, MOBILE
2International, with spaces+31 6 1XXXXXXXpassesvalid, MOBILE
3International dialling prefix 000031 6 1XXXXXXXpassesvalid, MOBILE
4E.164+3161XXXXXXXpassesvalid, MOBILE
5Dashes and brackets(06) 1XXXXXXXpassesvalid, MOBILE
6One digit short061XXXXXXfailsinvalid
7One digit too many061XXXXXXXXpassesinvalid
8Mobile shape, unused block 060060XXXXXXXpassesinvalid
9Fixed line010 XXX XXXXfailsvalid, FIXED_LINE
10Pager range066 XXXXXXXpassesvalid, PAGER

Rows 7, 8 and 10 are the Dutch traps. The regex lets an 11-digit 06 number through because it allows the M2M length, passes 060, which is not released, and passes the 066 pager range. A regex like ^0?6[1-58]\d{7}$ is closer, but it still can't keep up with plan changes; parse with a maintained library instead. Our E.164 developer guide and the post on why an E.164 regex is not enough cover the general problem.

Which numbers can I use in tests and examples?

The Dutch numbering plan has no block reserved for films, books or examples, unlike the UK or France. Use libphonenumber's example numbers (06 12345678 for a mobile, 010 123 4567 for a landline) in parser unit tests, mask the rest with X, and never use a real customer's number. A sandbox or test key is the safe way to test lookups.

Does number portability change the carrier?

Yes. A Dutch mobile number can move to another operator and keep its digits. The rules are in article 4.10 of the Telecommunications Act (Telecommunicatiewet):

  • One working day. The number must be moved as quickly as possible and activated on the date agreed with the subscriber, at the latest within one working day of that date. Service may not be interrupted for more than one working day.
  • No direct charge. The subscriber can't be charged directly for porting.
  • After the contract ends. A subscriber can still claim the right for up to one month after the contract ends.
  • ACM issues the numbers. Numbers are allocated by the ACM on application (article 4.2); the minister sets the numbering plans after consulting the ACM (article 4.1).

The operators founded the association COIN in 1999 to agree the porting arrangements, and COIN runs the central platform on which operators exchange porting messages today (COIN history; COIN number portability). The Netherlands row of our MNP atlas:

ItemValue
Mobile number portabilityYes
Mobile porting since1999
Maximum porting time1 working day (activation after agreed date)
Governing ruleTelecommunicatiewet art. 4.10(5)(c) (implements EECC Art. 106)
Published porting volumenone published
Sourcewetten.overheid.nl, btk.gov.tr
Checked2026-11-07

The one-working-day rule in the atlas comes from the European Electronic Communications Code (Art. 106), which article 4.10 implements. The atlas gives 1999 as the launch year; we didn't find a primary Dutch source with the exact date. With three networks and many virtual operators, a block holder is a weak guess for SMS routing, pricing or fraud rules. Look up the current network per number; our MNP atlas compares the Netherlands with other countries.

What are the rules for sales calls, SMS and caller ID?

These summarise the law and the regulators' guidance as we read them on 2026-11-07. Not legal advice; ask counsel how they apply to you. Two regulators share the work: the ACM enforces article 11.7 (unsolicited communication) and the caller-ID rules of the Telecommunications Act, and the Autoriteit Persoonsgegevens (AP) supervises the GDPR (article 15.1 of the Act).

The end of the Bel-me-niet register (2021)

The Netherlands used to have an opt-out list, the Bel-me-niet register: consumers registered their numbers, and callers had to skip them. A law of 10 February 2021 replaced it with opt-in for sales calls to natural persons and removed the register's article 11.8 from the Act with effect from 1 July 2021 (Staatsblad 2021, 103). From then on, a business could call a consumer only with consent, or if the person was a current or former customer.

The customer exception ended on 1 July 2026, when article 7.8 of the Energy Act (Energiewet), which amends article 11.7, came into force (Staatsblad 2025, 89; Rijksoverheid, 15 May 2025). The ACM summarises the rules (ACM, 25 June 2026):

  • Who is protected: consumers, sole traders (zzp'ers) and general partnerships (vof's).
  • Prior, explicit consent: a business may call them with a sales offer only if they agreed in advance. Consent can't be collected by phone during a service call.
  • Exceptions: charities, lotteries that give to charity, and publishers of newspapers and magazines may still call existing and former customers. The ACM's business page puts that at a customer relationship in the last three years (ACM, telemarketing).
  • Withdrawal: saying "don't call me again" during a call is enough, and the business must remove the number from its list immediately. Every call must offer that choice.
  • Show your number: a sales caller may not hide its caller ID (article 11.7(8)).

If your process still "cleans against Bel-me-niet", it is five years out of date: keep a consent record per number instead.

Marketing SMS, WhatsApp and e-mail need consent (article 11.7)

Article 11.7(1) bans automated calling systems, fax and electronic messages for unsolicited commercial, ideological or charitable communication, unless the sender can show that the recipient consented beforehand (Telecommunicatiewet). The ePrivacy Directive's definition of electronic mail covers SMS (Directive 2002/58/EC, Art. 2(h)), and the AP's guidance names newsletters, text messages and app messages (AP, digital direct marketing):

  • Individuals: consent before the first message.
  • Existing customers (soft opt-in): you may use contact details you got from a customer when selling a product or service to market your own similar products or services. The customer must have been able to object, free and easily, when you collected the details, and must be able to object in every message (article 11.7(4)). The July 2026 change removed the customer exception for sales calls only; this one remains.
  • Business recipients: no prior consent is needed for legal persons or people acting in their profession if they published the contact details for receiving such messages (article 11.7(3)).
  • Every message must state the sender's real identity and a valid address or number for unsubscribing (article 11.7(7)).

SMS sender IDs

Dutch operators and SMS brokers run a self-regulatory SMS Sender ID Register through COIN, to fight smishing that uses alphanumeric sender names. It checks the sender name, not the message content. Only telecom providers and SMS brokers can join; a brand registers its sender ID through the provider that sends its messages (COIN, SMS Sender ID Register). If you send A2P SMS to Dutch numbers with an alphanumeric sender, ask your provider whether your name is registered. COIN's page doesn't say how unregistered names are treated, so test delivery before a campaign.

Caller ID spoofing

Article 11.10a of the Act forbids using caller ID to give the called person false information about the calling line or user, and the ACM supervises number use, including this ban (Kamerstukken 29911, nr. 302). In 2020, operators, banks and the police formed a taskforce against spoofing, and the government announced rules on the use of Dutch numbers abroad. As of November 2026 that work is a bill: the Wetsvoorstel nummerbeleid was in public consultation from 10 July to 9 October 2026. Its three parts are suballocation of numbers, extraterritorial use of Dutch numbers and caller-number recognition, with new powers for the ACM, aimed at spoofing, phishing and bank-helpdesk fraud (internetconsultatie.nl). We found no rule in force yet that makes Dutch operators block calls from abroad showing a Dutch number. For a voice OTP, show a number your provider is allowed to use, and expect stricter checks once the bill passes; our guide to STIR/SHAKEN attestation levels explains how other countries authenticate caller IDs.

Personal data (GDPR)

A phone number linked to a person is personal data under the GDPR (Regulation (EU) 2016/679). Checking a customer's number, for reachability or WhatsApp registration, needs a lawful basis under Art. 6, such as a contract or a legitimate interest you have weighed, and people can object to direct marketing at any time under Art. 21. Our posts on whether a phone number is personal data and on consent for WhatsApp checks give the baseline: your own customers, a stated purpose, minimal data and honoured objections.

Which messaging apps and channels reach people?

SMS reaches every active Dutch mobile. We didn't find a primary source that measures messaging-app use in the Netherlands in a way we can verify for this guide, so we don't quote shares. Measure your own opted-in customers instead: check which apps they are registered on, route each person to the channel they use, and keep SMS as the fallback.

How do I check WhatsApp registration for a Dutch 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. Upload a CSV with numbers written the Dutch way (06-12345678, +31 (0)6 … and spaces also work) and default_country=NL:

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=NL

Send the same body to POST /v1/jobs/estimate first: it is free and shows the maximum cost before anything runs. Filter out 0970 and 066 rows before the upload; they are devices and pagers, not people.

What changed recently?

The rows for NL and +31 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
Original-carrier prefix data4
Numbering-plan metadata (validation, lengths, types)2
Alternate formatting1
All7

Latest numbering-plan updates for NL: 2022-05-05 (v8.12.48), 2019-02-06 (v8.10.5).

The Dutch validation metadata has hardly changed since 2022; the plan's ranges were stable in 2025 too. The rule changes matter more:

DateChange
1 January 20060656 to 0659 move from pagers to mobile telephony
1 March 2013New automated (M2M) applications must use 0970 numbers
1 July 2021Opt-in for sales calls to natural persons; Bel-me-niet register closed
1 July 2026Customer exception for sales calls ends; explicit prior consent for consumers, sole traders and general partnerships
10 July to 9 October 2026Public consultation on the number policy bill (suballocation, use of numbers abroad, caller-number recognition)

What can MobileValidate check for Dutch numbers?

Generated from our public catalog:

Catalog data as of 2026-11-07.

CheckAccepts Netherlands 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 Netherlands 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. The live list is at GET /v1/services.

A lookup returns network and registration facts. It never returns a subscriber's name 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).
  • Free real checks. Every account can run 20 phone numbers and 10 e-mail addresses through the real-time checks for free on the dashboard's Try it page.
  • Free carrier lookup. The public carrier lookup page answers three numbers a day without sign-up.
  • 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 and Zalo checks are bulk-only for now, as the asterisks in the table show. Prices are on the pricing page, which also lists the bonus on larger top-ups.

Because the 06 prefix shows only the block holder, the useful Dutch lookup is the current network. An MNP lookup gives ported or not ported and the current network code; an HLR lookup adds live reachability. Here is a small flow for a customer list that adds 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_nl().

nl_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 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", "+447700900003"]).items():
    print(number, info)

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

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

The third test value answers unknown (a simulated timeout), 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 for the fields.

What are the key takeaways?

  • Dutch numbers are 10 digits at home and +31 plus 9 digits in E.164; mobiles start 06. Store +316XXXXXXXX, without the (0), spaces or dashes.
  • Not every 06 is a person's mobile: 066 is pagers, 067 data access, and 060 and 069 are not released. Machine-to-machine numbers start 0970 and have 12 digits; libphonenumber calls them mobile, so filter them yourself.
  • 085 and 091 are mostly VoIP, 088 company numbers, 084 and 087 follow-me numbers; landline area codes still show a place.
  • The prefix names the block holder, not the current network: a port takes effect within one working day of the agreed date.
  • The Dutch plan has no fiction range; use libphonenumber's example numbers in tests, never real numbers.
  • The Bel-me-niet register closed in 2021. Since 1 July 2026, sales calls to consumers, sole traders and general partnerships need explicit prior consent, and marketing SMS and app messages need consent under article 11.7, with a soft opt-in for existing customers.
  • Caller ID spoofing is illegal (article 11.10a); a number policy bill against spoofing finished consultation on 9 October 2026.

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

Sources

  1. Nummerplan telefoon- en ISDN-diensten (BWBR0010198), version in force from 3 October 2025 — Ministry of Economic Affairs via wetten.overheid.nl, 2025
  2. Nummerplannen voor telecomaanbieders — ACM (Autoriteit Consument & Markt), 2026
  3. Monitor Nummeruitgifte 2025 (March 2026) — ACM (Autoriteit Consument & Markt), 2026
  4. Telecommunicatiewet (BWBR0009950), version in force from 15 August 2026: articles 4.2, 4.10, 11.7, 11.10a and 15.1 — wetten.overheid.nl, 2026
  5. Wet van 10 februari 2021 tot wijziging van de Telecommunicatiewet (opt-in for unsolicited calls; end of the Bel-me-niet register), Staatsblad 2021, 103 — Officiële bekendmakingen, 2021
  6. Besluit van 31 maart 2025 (entry into force of article 7.8 of the Energiewet, amending article 11.7 Telecommunicatiewet, on 1 July 2026), Staatsblad 2025, 89 — Officiële bekendmakingen, 2025
  7. Ongevraagd bellen per juli 2026 beperkt (news, 15 May 2025) — Rijksoverheid (Government of the Netherlands), 2025
  8. Vanaf 1 juli strengere regels voor telemarketing: alleen nog maar als klant toestemming heeft gegeven (news, 25 June 2026) — ACM (Autoriteit Consument & Markt), 2026
  9. Verkoop via telemarketing (rules for businesses) — ACM (Autoriteit Consument & Markt), 2026
  10. Digital direct marketing — Autoriteit Persoonsgegevens (Dutch Data Protection Authority), 2026
  11. Kamerbrief over spoofing en nummerbeleid, Kamerstukken 29911, nr. 302 (16 December 2020) — Officiële bekendmakingen, 2020
  12. Wetsvoorstel nummerbeleid (public consultation, 10 July to 9 October 2026) — Ministry of Economic Affairs via internetconsultatie.nl, 2026
  13. Historie (founding of COIN for number portability, 1999) — Vereniging COIN, 2026
  14. Nummerportabiliteit — Vereniging COIN, 2026
  15. SMS Sender ID Register — Vereniging COIN, 2026
  16. ACM Telecommonitor tweede kwartaal 2026 (20 October 2026) — ACM (Autoriteit Consument & Markt), 2026
  17. T-Mo Netherlands, Tele2 shake off DT ties, rebrand as Odido — RCR Wireless News, 2023
  18. Directive 2002/58/EC on privacy and electronic communications (ePrivacy Directive) — EUR-Lex, Publications Office of the European Union, 2002
  19. Directive (EU) 2018/1972 establishing the European Electronic Communications Code — EUR-Lex, Publications Office of the European Union, 2018
  20. Regulation (EU) 2016/679 (General Data Protection Regulation) — EUR-Lex, Publications Office of the European Union, 2016
  21. libphonenumber PhoneNumberMetadata.xml (region NL) — libphonenumber project (Apache License 2.0), 2026

Frequently asked questions

How many digits is a Dutch phone number?

Ten digits when written in the Netherlands, starting with 0, for example 06 XXXXXXXX for a mobile. In international form you drop the 0 and add the country code +31, so nine digits follow: +31 6 XXXXXXXX. Landlines, 085 and 088 numbers have the same length. The exceptions are machine-to-machine numbers starting 0970, which have 12 digits, and some 0800 and 0900 numbers with 8 or 11 digits.

What is the Netherlands country code for WhatsApp and international calls?

+31. Drop the leading 0 of the Dutch number: 06 12345678 becomes +31 6 12345678. People often write +31 (0)6 …; the (0) is only a reminder for callers inside the country. Save the E.164 form +316XXXXXXXX, without the 0, spaces or dashes.

Are all 06 numbers mobile in the Netherlands?

Almost. The national numbering plan reserves 061 to 065 and 068 for mobile telephony. 066 is still the old pager (semafonie) range and 067 is used for data and internet access. 060 and 069 are earmarked for mobile but have not been released for allocation yet, so no valid number starts with them today.

What are 097 numbers in the Netherlands?

Numbers starting 0970 are for machine-to-machine services, such as smart meters, alarms and connected cars. They have 12 digits nationally (11 after +31). Since 1 March 2013, new automated applications must use them instead of 06 numbers. They are not personal mobiles, so don't accept them as a customer's contact number.

Can I tell the operator from a 06 number?

No. The ACM issues 06 numbers to operators in blocks of 10,000, but any number can be moved to another operator and keep its digits. The law requires the port to take effect within one working day of the agreed date. To know today's network, look up each number.

Does the Bel-me-niet register still exist?

No. The Bel-me-niet register closed on 1 July 2021, when the Netherlands switched to opt-in for sales calls. From 1 July 2026, the exception for existing and former customers ended too: businesses may only call consumers, sole traders and general partnerships who gave explicit prior consent. Charities, charity lotteries and publishers keep a narrow customer exception.

Do I need consent to send marketing SMS or WhatsApp messages in the Netherlands?

Yes. Article 11.7 of the Telecommunications Act bans unsolicited commercial electronic messages, including SMS and app messages, unless the recipient consented beforehand. The exception is an existing customer offered your own similar products, who could object when you collected the number and can object in every message. Each message must name the sender and give a valid way to unsubscribe.

Is caller ID spoofing illegal in the Netherlands?

Yes. Article 11.10a of the Telecommunications Act forbids using caller ID to give the called person false information about the calling line or user, and the ACM supervises this. As of November 2026, a bill on number policy that targets spoofing, phishing and bank-helpdesk fraud has finished public consultation but is not yet law.

All articles

Know before you send.

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

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