Alles wat je moet weten over het Nederlandse postcodesysteem: de structuur van PC4 en PC6, hoe postcodes zijn opgebouwd, en praktische tips voor geocoding en data-analyse.
Het Nederlandse postcodesysteem is een van de meest efficiënte ter wereld. Met slechts zes tekens - vier cijfers en twee letters - kun je elk adres in Nederland tot op straatniveau identificeren. In combinatie met een huisnummer is een Nederlands adres volledig uniek bepaald, iets wat in weinig andere landen mogelijk is.
Voor ontwikkelaars en data-analisten biedt dit systeem enorme mogelijkheden: van snelle adresvalidatie tot geavanceerde locatie-analyses. In deze gids leggen we uit hoe het systeem is opgebouwd, wat het verschil is tussen PC4 en PC6, en hoe je postcodes effectief kunt gebruiken in je applicaties.
Geschiedenis van de Nederlandse postcode
Het Nederlandse postcodesysteem werd in 1978 ingevoerd door PTT (de voorloper van PostNL). Het systeem was een van de eerste ter wereld dat cijfers combineerde met letters, waardoor meer unieke combinaties mogelijk waren in een relatief klein land.
Waarom cijfers én letters?
Met alleen 4 cijfers zou Nederland maximaal 10.000 postcodegebieden kunnen hebben. Door 2 letters toe te voegen (26 × 26 = 676 combinaties per PC4) ontstaan er theoretisch 6,76 miljoen unieke postcodes. Meer dan genoeg voor elk adres in Nederland.
De structuur van een Nederlandse postcode
Een Nederlandse postcode bestaat uit twee delen die samen het adres tot op straatniveau bepalen:

Het cijfergedeelte (PC4)
De eerste vier cijfers worden aangeduid als PC4 (Postcode 4). Dit gedeelte bepaalt het geografische gebied op wijkniveau:
- Eerste cijfer: De regio van Nederland (1 = Amsterdam/Noord-Holland, 2 = Rotterdam/Zuid-Holland, 3 = Utrecht, etc.)
- Tweede cijfer: Het district binnen de regio
- Derde en vierde cijfer: De specifieke wijk of buurt
| Eerste cijfer | Regio | Voorbeeldsteden |
|---|---|---|
| 1xxx | Amsterdam en omgeving | Amsterdam, Haarlem, Zaandam |
| 2xxx | Rotterdam en Zuid-Holland | Rotterdam, Den Haag, Leiden |
| 3xxx | Utrecht en omgeving | Utrecht, Amersfoort, Hilversum |
| 4xxx | Zuid-Nederland west | Breda, Roosendaal, Bergen op Zoom |
| 5xxx | Noord-Brabant oost | Eindhoven, Tilburg, 's-Hertogenbosch |
| 6xxx | Limburg | Maastricht, Heerlen, Venlo |
| 7xxx | Overijssel | Enschede, Zwolle, Deventer |
| 8xxx | Flevoland en Friesland | Lelystad, Leeuwarden, Almere |
| 9xxx | Groningen en Drenthe | Groningen, Assen, Emmen |
Het lettergedeelte
De twee letters na de cijfers verfijnen de locatie tot op straatniveau. Binnen één PC4-gebied zijn er theoretisch 676 mogelijke lettercombinaties (26 × 26), al worden niet alle combinaties gebruikt.
Uitgesloten letters
De letters F, I, O, Q, U en Y worden niet gebruikt in Nederlandse postcodes vanwege mogelijke verwarring met cijfers of andere letters. Dit reduceert het aantal combinaties tot 20 × 20 = 400 per PC4.

PC4 vs PC6: wanneer welke gebruiken?
Het verschil tussen PC4 en PC6 is cruciaal voor het kiezen van het juiste niveau voor je use case:
| Aspect | PC4 (4 cijfers) | PC6 (4 cijfers + 2 letters) |
|---|---|---|
| Precisie | Wijk/buurt (~1-2 km²) | Straat of straatsegment |
| Aantal in NL | ~4.000 | ~470.000 |
| Gemiddeld adressen per code | ~2.450 | ~21 |
| Gebruik | Regionale analyses, marketing zones | Adresvalidatie, routeplanning |
| Privacy | Geschikt voor anonimisering | Identificeerbaar niveau |
| Voorbeeld | 1012 | 1012 AB |
PC4 use cases
- Marktanalyse: Koopkracht, demografische data per wijk
- Bezorggebieden: Definiëren van delivery zones
- Verzekeringspremies: Risicoprofielen per gebied
- Privacy-compliant analytics: Anonimisering van klantdata
- CBS-statistieken: Veel overheidsdata is beschikbaar op PC4-niveau
PC6 use cases
- Adresvalidatie: Controleren of een adres bestaat
- Geocoding: Omzetten naar coördinaten
- Postbezorging: De postcode bepaalt de sorteerroute
- Routeplanning: Optimale volgorde van adressen
- Duplicate detectie: Vergelijken van klantrecords
De unieke eigenschap: postcode + huisnummer
Nederland is een van de weinige landen ter wereld waar de combinatie van postcode + huisnummer een adres volledig uniek identificeert. Dit betekent dat je de straatnaam en woonplaats technisch gezien niet nodig hebt - ze kunnen altijd worden afgeleid uit de postcode.
// Met alleen postcode + huisnummer kun je het volledige adres ophalenasync function getFullAddress(postcode, huisnummer, token) {const response = await fetch(`https://api.georex.nl/address?postcode=${postcode}&huisnummer=${huisnummer}&token=${token}`);const data = await response.json();if (data.features.length > 0) {const props = data.features[0].properties;return {street: props.street, // Afgeleid uit postcodehousenumber: props.housenumber,postcode: props.postcode,city: props.city, // Afgeleid uit postcodecoordinates: data.features[0].geometry.coordinates};}return null;}// Voorbeeld: alleen "1012LG" + "1" geeft volledig adresconst address = await getFullAddress('1012LG', '1', token);// Resultaat:// {// street: "Damrak",// housenumber: "1",// postcode: "1012 LG",// city: "Amsterdam",// coordinates: [4.8936, 52.3738]// }
Formulieroptimalisatie
Vraag in je formulieren alleen postcode en huisnummer, en vul straat en woonplaats automatisch in. Dit verbetert de gebruikerservaring én zorgt voor correcte data.
Postcodeformaten en normalisatie
In de praktijk worden postcodes op verschillende manieren geschreven. Je applicatie moet al deze varianten kunnen verwerken:
| Invoer | Genormaliseerd | Opmerking |
|---|---|---|
| 1012AB | 1012 AB | Zonder spatie |
| 1012 ab | 1012 AB | Kleine letters |
| 1012 AB | 1012 AB | Dubbele spatie |
| NL-1012 AB | 1012 AB | Met landcode |
| 1012-AB | 1012 AB | Met streepje |
/*** Normaliseert een Nederlandse postcode naar standaardformaat: "1234 AB"*/function normalizePostcode(input) {if (!input) return null;// Verwijder niet-alfanumerieke tekens en converteer naar hoofdlettersconst cleaned = input.toUpperCase().replace(/[^A-Z0-9]/g, '');// Controleer of het 6 tekens zijn (4 cijfers + 2 letters)if (!/^[0-9]{4}[A-Z]{2}$/.test(cleaned)) {return null; // Ongeldig formaat}// Formatteer als "1234 AB"return `${cleaned.slice(0, 4)} ${cleaned.slice(4)}`;}// Voorbeeldenconsole.log(normalizePostcode('1012ab')); // "1012 AB"console.log(normalizePostcode('1012 AB')); // "1012 AB"console.log(normalizePostcode('NL-1012-AB')); // "1012 AB"console.log(normalizePostcode('invalid')); // null
Postcodes en geocoding
Bij geocoding is het precisieniveau afhankelijk van de beschikbare informatie:
| Input | Precisie | Resultaat |
|---|---|---|
| Alleen PC4 | Wijkcentroïde | Geschikt voor regionale analyses, niet voor navigatie |
| PC6 zonder huisnummer | Straatcentroïde | Geschikt voor routeplanning op straatniveau |
| PC6 + huisnummer | Exact adres | Meter-nauwkeurigheid, geschikt voor navigatie |
// Verschillende precisieniveaus bij geocoding// 1. Alleen PC4 - wijkniveauconst pc4Response = await fetch(`https://api.georex.nl/geocode?q=1012&token=${token}`);// Geeft centroïde van PC4-gebied (nauwkeurigheid: ~500m)// 2. PC6 - straatniveauconst pc6Response = await fetch(`https://api.georex.nl/geocode?q=1012AB&token=${token}`);// Geeft centroïde van straat of straatsegment (nauwkeurigheid: ~50m)// 3. Volledig adres - exacte locatieconst fullResponse = await fetch(`https://api.georex.nl/address?postcode=1012AB&huisnummer=1&token=${token}`);// Geeft exacte locatie van het adres (nauwkeurigheid: <5m)
Bijzondere postcodes
Niet alle postcodes volgen het standaardpatroon. Er zijn enkele bijzondere categorieën:
Postbussen
Postbussen hebben speciale postcodes die niet overeenkomen met een fysiek adres. Ze zijn herkenbaar aan het feit dat er geen regulier huisnummer bij hoort.
Grote ontvangers
Bedrijven en instellingen die veel post ontvangen (>10.000 stuks per jaar) kunnen een eigen unieke postcode krijgen. Denk aan de Belastingdienst, grote webshops, of de Tweede Kamer.
Caribisch Nederland
Bonaire, Sint Eustatius en Saba (de BES-eilanden) hebben een eigen postcodesysteem dat niet aansluit bij het Nederlandse systeem. Deze postcodes zijn niet in de standaard BAG opgenomen.
Werken met postcodes in de GeoRex API
De GeoRex API biedt verschillende manieren om met postcodes te werken:
import requestsdef get_token(api_key: str) -> str:response = requests.post('https://api.georex.nl/api/token',headers={'X-API-Key': api_key})return response.json()['token']token = get_token('gx_live_your_key')# 1. Exacte lookup met postcode + huisnummerdef lookup_address(postcode: str, huisnummer: str) -> dict:"""Haal volledig adres op basis van postcode + huisnummer."""response = requests.get('https://api.georex.nl/address',params={'postcode': postcode.replace(' ', ''),'huisnummer': huisnummer,'token': token})data = response.json()if data['features']:return data['features'][0]return None# 2. Valideer of postcode bestaatdef validate_postcode(postcode: str) -> bool:"""Controleer of een postcode bestaat in Nederland."""response = requests.get('https://api.georex.nl/geocode',params={'q': postcode.replace(' ', ''),'token': token})data = response.json()return len(data['features']) > 0# 3. Geocodeer postcode naar coördinatendef geocode_postcode(postcode: str) -> tuple:"""Haal coördinaten op voor een postcode."""response = requests.get('https://api.georex.nl/geocode',params={'q': postcode.replace(' ', ''),'token': token})data = response.json()if data['features']:coords = data['features'][0]['geometry']['coordinates']return (coords[1], coords[0]) # (lat, lon)return None# Voorbeeldenaddress = lookup_address('1012 LG', '1')print(f"Adres: {address['properties']['street']} {address['properties']['housenumber']}")is_valid = validate_postcode('1012 AB')print(f"Postcode geldig: {is_valid}")coords = geocode_postcode('1012')print(f"Centrum PC4 1012: {coords}")
Veelgestelde vragen
Hoeveel postcodes heeft Nederland?
Nederland heeft ongeveer 4.000 PC4-gebieden en 470.000 unieke PC6-postcodes. Het exacte aantal fluctueert licht door nieuwbouw en sloop.
Kan een postcode veranderen?
Ja, maar het is zeldzaam. Postcodes kunnen veranderen bij grote herinrichtingen, nieuwbouwwijken, of wanneer een straat wordt hernoemd. De BAG en GeoRex zijn altijd up-to-date met de huidige situatie.
Wat is het verschil met een Britse postcode?
Britse postcodes zijn complexer (bijv. "SW1A 1AA") en identificeren gemiddeld slechts 15 adressen. Nederlandse PC6 postcodes identificeren gemiddeld 21 adressen, maar met huisnummer is het adres gegarandeerd uniek - iets wat in het VK niet altijd het geval is.
Samenvatting
Het Nederlandse postcodesysteem is elegant en efficiënt. De belangrijkste punten:
- PC4 (4 cijfers) bepaalt het gebied op wijkniveau - gebruik voor analyses en marketing zones
- PC6 (4 cijfers + 2 letters) bepaalt de straat - gebruik voor routeplanning
- PC6 + huisnummer identificeert een adres uniek - gebruik voor exacte geocoding
- Normaliseer altijd naar het formaat "1234 AB" voor consistente data
- Straat en woonplaats kunnen worden afgeleid uit de postcode
Door het postcodesysteem goed te begrijpen en te benutten, kun je efficiëntere applicaties bouwen met betere adresvalidatie en nauwkeurigere locatiedata.
Probeer het zelf
Test de GeoRex API met je eigen postcodes. Vraag een gratis API key aan en ontdek hoe eenvoudig adresvalidatie en geocoding kunnen zijn.
Gerelateerde artikelen

Geocoding vs Reverse Geocoding: Wat is het verschil?
Ontdek het verschil tussen geocoding en reverse geocoding, wanneer je welke methode gebruikt, en hoe je beide implementeert met praktische voorbeelden.
Lees meer
Van adres naar coördinaten: een complete handleiding
Een uitgebreide stap-voor-stap handleiding voor het converteren van Nederlandse adressen naar GPS-coördinaten, inclusief edge cases en validatie.
Lees meer
Hoe werkt geocoding onder de motorkap?
Een technische deep-dive in de werking van geocoding: van adres parsing tot coördinaat matching. Begrijp wat er gebeurt wanneer je een adres omzet.
Lees meer