Home🇲🇽 MexicoClave Única de Registro de Población

CURP generator (Mexico)

A Mexican CURP is an 18-character code derived from name, date of birth, sex, and state of birth, ending in a check digit. These test values carry a valid check digit but are synthetic.

Synthetic · not collision-guaranteed Validate a number →
QANZ960418MMCZMN15

Synthetic CURP (valid check digit). The code is derived from personal data, so use only for testing.

Format specification

IdentifierClave Única de Registro de Población (CURP)
Country🇲🇽 Mexico
FormatAAAA000000AAAAAAX0
Length18 characters
ChecksumCURP check digit
ExampleSHYC370809HNLKZM62
Safe strategy Synthetic
Data qualityVerified against sources

Clave Única de Registro de Población: what each part means

AAAA First letter and first internal vowel of the first surname, initial of the second surname, initial of the given name. Test values use random letters.
000000 Date of birth as YYMMDD.
A Sex: H (hombre) or M (mujer).
AA Two-letter code of the state of birth (NE for people born abroad).
AAA First internal consonants of the two surnames and the given name. Test values use random consonants.
X Disambiguator assigned by RENAPO: a digit for people born before 2000, a letter (A onward) from 2000.
0 Check digit: the first 17 characters valued by the official dictionary, weighted 18 down to 2, mod 10.

Validation regex

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

^[A-Z]{4}\d{6}[HM][A-Z]{5}[0-9A-Z]\d$

References

  1. en.wikipedia.org/wiki/Unique_Population_Registry_Code

Common questions

Will these pass my validation?

Yes — they are well-formed Clave Única de Registro de Población values (AAAA000000AAAAAAX0) and pass standard format checks, including the CURP check digit 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.

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.