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 CPR number (format-valid). Not a real issued number.
Format specification
| Identifier | CPR-nummer (Personnummer) |
|---|---|
| Country | 🇩🇰 Denmark |
| Format | 000000-0000 |
| Length | 10 characters |
| Checksum | None |
| Example | 200495-0378 |
| Safe strategy | Synthetic |
| Data quality | Verified 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
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.