Denmark CPR Number Validator

Validate a Danish CPR number — date, serial, century, gender and legacy mod-11 check.

Ad placeholder (leaderboard)
Enjoying the tools? Go Pro for £4.99 (one-time) and remove all ads — forever, on this device. Remove ads — £4.99

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 7YY rangeBirth year
0 – 3any1900 + YY
4 or 900 – 362000 + YY
4 or 937 – 991900 + YY
5 – 800 – 572000 + YY
5 – 858 – 991858 + 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.

Ad placeholder (rectangle)