Home🇩🇰 DenmarkCPR-nummer

CPR-nummer generator (Denmark)

A Danish CPR number is ten digits — date of birth (DDMMYY) and a four-digit serial, formatted DDMMYY-SSSS. Modern CPR numbers have no checksum (the old MOD-11 rule was abolished for new numbers in 2007), so format is the only reliable automated check. These test values are synthetic.

Synthetic · not collision-guaranteed Validate a number →
180152-3968

Synthetic CPR number (format-valid). Not a real issued number.

Format specification

IdentifierCPR-nummer (Personnummer)
Country🇩🇰 Denmark
Format000000-0000
Length10 characters
ChecksumNone
Example200495-0378
Safe strategy Synthetic
Data qualityVerified against sources

CPR-nummer: what each part means

000000 Date of birth as DDMMYY.
0 Together with the year, this digit encodes the century (0–3 = born 1900–1999, which these test values use; other values cover 1800s and 2000s births).
00 Serial digits.
0 Final digit encodes sex: even = female, odd = male. Since 2007 new numbers no longer satisfy the historical MOD-11 test, so validators must not require it.

Validation regex

Matches the canonical value — strip separators and uppercase first: value.replace(/[^A-Za-z0-9]/g, '').toUpperCase()

^\d{10}$

References

  1. en.wikipedia.org/wiki/Personal_identification_number_(Denmark)

Common questions

Will these pass my validation?

Yes — they are well-formed CPR-nummer values (000000-0000) and pass standard format checks.

Could one belong to a real person?

These are synthetic values. They are format-valid but not drawn from a guaranteed reserved range, so use them only for testing.

Can I generate many at once?

Increase the count, or use the free API and CSV/JSON export for large datasets.

Validate an existing number →

For software testing only. These numbers are synthetic and must never be used for real-world identification, applications, or to impersonate anyone.