Dansk CPR-nummer: generator og validator
Generer MOD11-gyldige danske CPR-nummer og valider struktur, dato og MOD11 lokalt i nettleseren for testing.
Historikk
Slik fungerer det
Et dansk CPR-nummer er 10 siffer: seks for fødselsdato (DDMMÅÅ) og fire løpesiffer. Det siste sifferet angir kjønn (oddetall for menn, partall for kvinner), og det sjuende sifferet avgjør sammen med årstallet hvilket århundre personen er født i.
Historisk hadde CPR-nummeret et MOD11-kontrollsiffer. Siden 2007 utsteder Danmark også numre som IKKE er MOD11-gyldige, fordi de gyldige numrene tok slutt for enkelte datoer. Derfor genererer dette verktøyet MOD11-gyldige testnumre, men når du validerer, avgjør struktur og gyldig dato. MOD11-status vises bare som tilleggsinfo, slik at ekte moderne CPR ikke feilaktig avvises.
Kun testdata. Numrene er tilfeldig genererte, men tilhører ingen ekte person. Bruk dem til testing og utvikling, aldri til å utgi deg for noen.
Om dette verktøyet
Dansk personnummer (CPR-nummer, Det Centrale Personregister) består av 10 sifre i formatet `DDMMÅÅ-XXXX`. De første seks sifrene angir fødselsdato (dag, måned, tosifret år), og de fire siste er et løpenummer der siste siffer historisk sett var et modulo-11-kontrollsiffer. Fra 1. oktober 2007 er kontrollsiffer-regelen offisielt opphevet fordi det ikke fantes nok gyldige numre igjen for enkelte datoer. CPR utstedes av CPR-kontoret under Indenriksministeriet til alle folkeregistrerte i Danmark. Verktøyet validerer syntaks, sjekker gyldig fødselsdato, ekstraherer århundre (via første siffer i løpenummeret) og kjønn (partall = kvinne, oddetall = mann). Alt kjøres lokalt.
Slik bruker du det
- Lim inn eller skriv CPR-nummeret i inntastingsfeltet.
- Både med og uten bindestrek godtas (`010190-1234` eller `0101901234`).
- Verktøyet sjekker at det er 10 sifre og at fødselsdatoen er gyldig.
- Ved gyldig nummer vises fødselsdato, alder og kjønn.
- Alt skjer lokalt, CPR-numre sendes aldri utenfor nettleseren.
Eksempler
010190-2003✓ Gyldig · f. 01.01.1990 · Mann150507-4234✓ Gyldig · f. 15.05.2007 · Kvinne320190-1234✗ Ugyldig fødselsdato (32. januar finnes ikke)Vanlige bruksområder
- Kundedatabaser i danske SaaS-tjenester og e-handel.
- HR-systemer og lønnsberegning for danske ansatte.
- NemID/MitID-integrasjoner der CPR må valideres.
- Helsevesen og journalsystemer (Sundhedsplatformen, EPJ).
- Offentlige tjenester som skat.dk, borger.dk, kommunale løsninger.
- Aldersvalidering (18-årsgrense for alkohol, spill, tobakk).
Ofte stilte spørsmål
- Hvorfor fungerer ikke mod-11 lenger?
- Med mod-11-regelen ble ca. 90 % av teoretisk mulige numre gyldige (10 av 11). For enkelte fødselsdatoer med mange fødsler (spesielt 1. januar) gikk numrene tomt, det fantes ikke nok gyldige mod-11-numre til å tildele. CPR-kontoret avskaffet regelen 1. oktober 2007, og nye numre tildeles uten kontrollsiffervalidering. Gamle numre kan fortsatt validere med mod-11.
- Hvordan finner jeg ut århundret?
- Første siffer i løpenummeret (posisjon 7 av 10) bestemmer århundre kombinert med tosifret år. Siffer 0–3: 1900-tallet. Siffer 4–9: 1900-tallet hvis år ≥ 37, ellers 2000-tallet. Siffer 5–8: 1800-tallet hvis år ≥ 58, ellers 2000-tallet. Siffer 9: 1900-tallet hvis år ≥ 37, ellers 2000-tallet. Dette er tabellen som CPR-registeret bruker.
- Er CPR sensitivt etter GDPR?
- Ja. CPR er direkte identifiserende personopplysning etter GDPR og har spesielle regler i den danske Databeskyttelsesloven (§ 11). Behandling er ofte tillatt bare for offentlige myndigheter, arbeidsgivere, banker og andre med lovhjemmel. Private virksomheter må ha «utrykkeligt samtykke» eller lovlig grunnlag. Bruk aldri CPR som referanse i kundekorrespondanse.
- Kan CPR endres eller trekkes tilbake?
- CPR er ment å være permanent. Ved kjønnsendring får personen et nytt CPR med korrigert kjønnssiffer (partall/oddetall). Ved identitetstyveri kan CPR-kontoret unntaksvis tildele nytt nummer. Adopsjon og navneendring endrer ikke CPR. Ved død markeres CPR som «avdød» men fjernes ikke fra registeret.
Teknisk bakgrunn
Historisk MOD-11: vekt-vektor er (4, 3, 2, 7, 6, 5, 4, 3, 2, 1) fra venstre. Summér cifferᵢ × vektᵢ over alle 10 siffer. Nummeret var gyldig hvis summen var delelig med 11. Etter 2007 er denne regelen offisielt avskaffet, men mange systemer sjekker fortsatt gamle numre med den. Fødselsdato-validering: dagen må være 01–31, måneden 01–12, og datoen må være gyldig for året (skudår tas hensyn til for februar). Kjønn: siste siffer partall = kvinne, oddetall = mann. Århundre bestemmes av første siffer i løpenummeret + tosifret år (se FAQ-tabell). API-tilgang: CPR-registeret er ikke offentlig; virksomheter må ha aftale med Datafordeleren for å slå opp navn/adresse basert på CPR.