The Denmark CPR number validator checks every structural rule of the Danish personnummer in your browser without sending a single character to any server. Paste or type a number and get an instant verdict — along with the full decoded birth date, the correct birth century, the gender, and an explanation of whether the legacy mod-11 checksum applies to this number.
What the CPR number is
The Det Centrale Personregister (CPR) is Denmark’s central civil register, and every resident — citizen or foreign national — receives a unique 10-digit identifier. The format is DDMMYY-SSSS: six digits for the date of birth followed by a hyphen and four serial digits. The structure packs four pieces of information into 10 digits: the date of birth, the birth century (via the century-indicator digit), the individual serial within a birth-date cohort, and the person’s gender.
How the date and century work
The first six digits are the date: DD (day), MM (month), YY (two-digit
year). Because two digits are ambiguous about the century, the 7th digit —
the first digit of the 4-digit serial — acts as a century indicator:
| Serial digit 7 | YY range | Birth year |
|---|---|---|
| 0 – 3 | any | 1900 + YY |
| 4 or 9 | 00 – 36 | 2000 + YY |
| 4 or 9 | 37 – 99 | 1900 + YY |
| 5 – 8 | 00 – 57 | 2000 + YY |
| 5 – 8 | 58 – 99 | 1858 + YY |
This means the system can represent birth years from 1858 through 2057 — a 200-year window. The validator applies this exact table and then verifies that the resulting calendar date is real, including correct leap-year logic for February 29.
Gender from the last digit
The 10th digit (last digit of the serial) encodes gender: odd = male (mand), even = female (kvinde). This rule has been in place since the CPR system launched in 1968 and has never changed.
The mod-11 checksum — history and current status
The original CPR design included a modulus-11 control digit. The algorithm
multiplies each of the 10 CPR digits by a weight from the sequence
4, 3, 2, 7, 6, 5, 4, 3, 2, 1 and sums the products. If the sum is divisible
by 11 (remainder = 0) the legacy check passes.
On 1 October 2007 the Danish CPR Office officially retired this requirement. The number space of combinations satisfying mod-11 had simply run out — there were not enough valid 10-digit combinations to assign to new residents. From that date, numbers are issued freely without the constraint, and a failing mod-11 is normal and legal for anyone born after that policy change, or registered in Denmark after that date.
This validator reports the mod-11 result with full workings (weighted sum, remainder) as a historical transparency measure, but it does not use mod-11 to determine overall validity. Only an impossible calendar date makes a number structurally invalid here.
Example (obviously fake number)
The number 010190-1234 decodes as follows:
- Day: 01 (the 1st)
- Month: 01 (January)
- YY: 90
- Serial digit 7: 1 — maps to century prefix 1900, so full year = 1990
- Date: 1 January 1990 (a valid calendar date)
- Last digit: 4 (even) → Female
- Mod-11: 0×4 + 1×3 + 0×2 + 1×7 + 9×6 + 0×5 + 1×4 + 2×3 + 3×2 + 4×1 = 3 + 7 + 54 + 4 + 6 + 6 + 4 = 84; 84 mod 11 = 7 → fails (normal for a post-2007 issuance pattern)
All calculation steps are shown live in the tool as you type.