Free telecom & identity tools
Free tool
Mexico CURP Generator & Validator
Generate valid test CURPs (Clave Única de Registro de Población) from a name, date of birth, sex and state of birth — or paste a CURP to check its date, sex, state and RENAPO check digit.
CURP Generator
Type an exact name to compute its real CURP, or generate random test identities. The date, sex and state are set from your inputs; the homoclave and check digit are filled in to produce a structurally valid code.
CURP Validator
Paste an 18-character CURP to check the date of birth, sex, state of birth and RENAPO check digit.
Every CURP this tool produces is synthetic test data only. Whether built from a name you typed or a randomly generated identity, it is not issued by RENAPO, is not registered against any person, and does not belong to any real resident of Mexico. Use it on your own test systems only — never to complete a real application, verification or KYC check.
How a CURP is structured
A CURP is 18 characters, and — unlike a purely numeric ID number — most of them come from the person's own name. Taking PEGJ 850615 H DF RMN 09 (Juan Pérez Gómez, born 15 June 1985) as an example:
| Digits | Segment | Meaning |
|---|---|---|
| PEGJ | Name initials | P + E from Pérez (1st letter, 1st internal vowel), G from Gómez, J from Juan. |
| 850615 | YYMMDD | Date of birth — 15 June 1985. As with most two-digit-year codes, the century is inferred from context. |
| H | Sex | H for Hombre (male), M for Mujer (female). |
| DF | State of birth | RENAPO's 2-letter entity code — DF for Ciudad de México here, or NE for someone born abroad. |
| RMN | Internal consonants | First internal consonant of the paternal surname, maternal surname and given name. |
| 0 | Homoclave | Assigned by RENAPO to distinguish two people who would otherwise share an identical code — not derivable from the name. |
| 9 | Check digit | RENAPO's own modulo-10 checksum over the preceding seventeen characters. |
Because the name, date of birth, sex and state are all encoded directly, a CURP is largely self-describing — which is why a real validator checks the date and the checksum rather than just counting characters.
Why generate test CURPs?
Any system that accepts a CURP needs realistic data to test against — banking and mobile-money onboarding, telecom and SIM registration, KYC and AML checks, government service portals, and the validation rules behind all of them.
Using a real person's CURP in a test environment is a privacy risk under Mexico's data-protection law (LFPDPPP). Synthetic CURPs that are structurally valid let you exercise the same code paths — format checks, date parsing, sex and state derivation, checksum validation — without any real personal information ever entering your test systems.
