International · Validation
Romanian CNP validator.
Check a 13-digit Romanian Cod Numeric Personal (CNP): the control digit, the encoded date of birth, the sex/century digit and the county code. Format and checksum only.
How it works: multiply the first 12 digits by the constant 2 7 9 1 4 6 3 5 8 2 7 9, add the products and divide by 11. The remainder is the 13th digit; a remainder of 10 becomes 1.
Inputs
Result
Enter a CNP and press Check.
How the CNP is built
A CNP is 13 digits: S AA LL ZZ JJ NNN C. It is assigned to people born in Romania and to Romanian residents.
| Part | Meaning |
|---|---|
| S | Sex and century: 1 male / 2 female born 1900–1999; 3 / 4 born 1800–1899; 5 / 6 born 2000–2099; 7 / 8 male / female resident (century not encoded) |
| AA LL ZZ | Year (last two digits), month and day of birth |
| JJ | County code (01–52 as published, 41–46 are Bucharest districts); 70 is the unique code used by the newer integrated system |
| NNN | Sequence number 001–999 for people of the same sex, place and date |
| C | Control digit |
Control digit: weights 2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9 (the constant 279146358279) on the first 12 digits; sum the products; the remainder mod 11 is the control digit, except that a remainder of 10 gives 1. Worked example from the python-stdnum test suite: 1630615123457 sums to a remainder of 7, and decodes to a man born 15 June 1963 with county code 12 (Cluj).
Other checks: the date must be a real calendar date (leap days follow the Gregorian rule), the county code must be in the published table, and Bucharest districts 7 and 8 (codes 47 and 48) are rejected for birth dates after 19 December 1979, when the specification says they were abolished. First digit 9 and county codes 80–83 appear in python-stdnum only, not in the specification, so this tool rejects them.
Format and checksum only — not a registry lookup
A pass means the number is well-formed and internally consistent. It cannot confirm the CNP was ever issued or that it belongs to anyone; only the Romanian authorities can do that. The specification lists the issuers as DEPABD for citizens and the General Inspectorate for Immigration for residents.
Sources: vimishor/cnp-spec, spec.md; ro.wikipedia.org, Cod numeric personal; python-stdnum, stdnum/ro/cnp.py. The constant is identical in all three.
Checksum only — not a registry lookup
A CNP is personal data. This tool runs entirely in your browser: nothing you type is transmitted, stored or logged, and it does not query any Romanian system. Do not paste other people's CNPs unless you have a legitimate reason to hold them.