CNP generator (Romania)
A Romanian CNP is thirteen digits — a sex/century digit, date of birth, a county code, a serial, and a MOD-11 check digit. These test values are synthetic but checksum-valid.
Synthetic · not collision-guaranteed Validate a number →
6000728512679
Synthetic CNP with a valid check digit. Not a real issued number.
Format specification
| Identifier | Cod Numeric Personal (CNP) |
|---|---|
| Country | 🇷🇴 Romania |
| Format | 0000000000000 |
| Length | 13 characters |
| Checksum | MOD 11 |
| Example | 6281203206331 |
| Safe strategy | Synthetic |
| Data quality | Verified against sources |
Cod Numeric Personal: what each part means
| 0 | Sex and century in one digit: 1/2 = born 1900s (male/female), 3/4 = 1800s, 5/6 = 2000s, 7/8 = foreign residents. |
|---|---|
| 00 | Last two digits of the year of birth. |
| 00 | Month of birth. |
| 00 | Day of birth. |
| 00 | County where the birth was registered (01–46 for the counties and Bucharest, with special codes up to 52). |
| 000 | Serial number within that county and day. |
| 0 | MOD-11 check digit with weights 2,7,9,1,4,6,3,5,8,2,7,9; a remainder of 10 becomes 1. |
Validation regex
Matches the canonical value — strip separators and uppercase first: value.replace(/[^A-Za-z0-9]/g, '').toUpperCase()
^[1-8]\d{12}$ References
Common questions
Will these pass my validation?
Yes — they are well-formed Cod Numeric Personal values (0000000000000) and pass standard format checks, including the MOD 11 checksum.
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.
For software testing only. These numbers are synthetic and must never be used
for real-world identification, applications, or to impersonate anyone.