Mexico CURP Validator
Check the format and verification digit of a Mexican CURP and read the sex and birth date it encodes. 100% local — nothing is uploaded. Built for Mexico.
Validate a Mexican CURP
Paste an 18-character CURP to verify its check digit, decode sex and birth date, and see color-coded segments — all locally.
How the CURP check digit works
The last character of a CURP is a check digit computed from the first 17 characters. This tool uses the same dictionary and descending weights as its validator: each character is turned into a number, multiplied by a weight from 18 down to 2, and the digit is 10 minus the sum modulo 10, modulo 10 again so a remainder of 0 gives 0.
Structure
| Positions | Example | Meaning |
|---|---|---|
| 1 to 4 | HEGG | Name letters: 1 is the first letter of the paternal surname, 2 is the first internal vowel of the paternal surname, 3 is the first letter of the maternal surname, and 4 is the first letter of the given name. |
| 5 to 10 | 560427 | Date of birth as YYMMDD. The century is not stored here; it is read from position 17. |
| 11 | M | Sex: H for male, M for female, X for non-binary (the official RENAPO lookup offers a No binario option). |
| 12 to 13 | VZ | Two-letter code of the entidad federativa of birth. NE means born abroad. In this specimen VZ is Veracruz. The full table of 32 entidades federativas plus NE is built into the tool. |
| 14 to 16 | RRL | First internal consonants of the paternal surname, the maternal surname and the given name, in that order. |
| 17 | 0 | Homonym character. A digit from 0 to 9 means a birth between 1900 and 1999; a letter from A to J means 2000 or later, as set by the official RENAPO instructive. People who would otherwise share positions 1 to 16 receive different characters here. |
| 18 | 4 | Check digit computed from the first 17 characters. |
This tool also checks that position 17 is within 0 to 9 or A to J, that the date is a real calendar day for the century implied by position 17, and that the state code is one of the 32 entidades federativas or NE.
Worked example: HEGG560427MVZRRL04
This 18-character specimen is the published example used on this page. It is not the CURP of a living person. Each of the first 17 characters is looked up in the dictionary below, multiplied by a weight from 18 down to 2, and the products are added.
| Dictionary | 0123456789ABCDEFGHIJKLMNÑOPQRSTUVWXYZ |
| Position | Character | Dictionary value | Weight | Product |
|---|---|---|---|---|
| 1 | H | 17 | 18 | 306 |
| 2 | E | 14 | 17 | 238 |
| 3 | G | 16 | 16 | 256 |
| 4 | G | 16 | 15 | 240 |
| 5 | 5 | 5 | 14 | 70 |
| 6 | 6 | 6 | 13 | 78 |
| 7 | 0 | 0 | 12 | 0 |
| 8 | 4 | 4 | 11 | 44 |
| 9 | 2 | 2 | 10 | 20 |
| 10 | 7 | 7 | 9 | 63 |
| 11 | M | 22 | 8 | 176 |
| 12 | V | 32 | 7 | 224 |
| 13 | Z | 36 | 6 | 216 |
| 14 | R | 28 | 5 | 140 |
| 15 | R | 28 | 4 | 112 |
| 16 | L | 21 | 3 | 63 |
| 17 | 0 | 0 | 2 | 0 |
| Sum of products | 2246 | |||
| Sum modulo 10 | 6 | |||
| 10 minus remainder, modulo 10 | 4 |
The products add up to 2246. That total modulo 10 is 6, and 10 minus 6 is 4, which matches the 18th character.
Official sources
- gob.mx/curp: RENAPO official CURP lookup, where you can search by key or by name and birth data
- gob.mx/segob/renapo: institutional page of the Registro Nacional de Población at the Secretaría de Gobernación
- dof.gob.mx: the official CURP assignment instructive published in the Diario Oficial de la Federación on 18 June 2018. It defines every position, including the 0 to 9 and A to J rule for position 17.
Common mistakes and what the digit cannot tell you
- Do not confuse the letter O with the digit 0. They are different characters and produce different dictionary values.
- Do not ignore position 17 when reading the birth year: a digit means a birth between 1900 and 1999, a letter means 2000 or later. The same YYMMDD block is a different century in each case.
- Do not accept a letter beyond J in position 17. The official instructive only assigns A to J there; K to Z is a transcription error even when the check digit happens to match.
- Do not reject a CURP only because position 11 is X. RENAPO issues non-binary CURPs with X in that position, and this tool accepts it.
- Do not use a Mexican state code for someone born abroad. The code for birth outside Mexico is NE.
- A matching check digit only proves the 18 characters were copied correctly. It does not prove the CURP is registered in RENAPO or that it belongs to the person presenting it.
- A CURP is not an RFC. The tax number uses a different length, a different dictionary and a different agency.
The CURP (Clave Única de Registro de Población) is Mexico's 18-character population registry code, administered by RENAPO. Structure: 4 name letters, 6 date-of-birth digits, sex (H/M, or X for non-binary), a 2-letter state code (or NE for born abroad), 3 internal consonants, a homonymy differentiator (digit 0–9 for people born before 2000, letter A–J from 2000), and a final check digit.
The check digit is computed from a character-value table with descending weights modulo 10, and this validator checks every layer locally: length, letter/digit pattern, real calendar date, known state code, and the check digit itself.
As with all format validators, a pass means "internally consistent", not "registered". The authoritative CURP lookup is the government service at gob.mx/curp. Last verified: September 2026.
Published test vectors — each validated against the live tool: a structurally valid 18-character CURP passes all five layers (length, pattern, real calendar date, state code, check digit) · corrupting the final digit is caught by the check-digit layer with the expected digit shown · an impossible date such as 30 February is rejected at the date layer, not the pattern layer. Batch mode: paste one CURP per line (or import CSV/TXT) and export per-row results. Last verified: 2026-09-16.
FAQ
What is a CURP?
The Clave Única de Registro de Población is Mexico’s 18-character national population-registry code, assigned through RENAPO. It ends in a verification digit computed from the first 17 characters.
How is it validated?
Three layers: the 18-character format, the recomputed verification digit, and the semantics — the birth date must be a real calendar date (the homonym character tells the century: a digit 0 to 9 means born between 1900 and 1999, a letter A to J means 2000 or later), the sex character must be H, M or X, and the state code must be a real Mexican entidad federativa or NE. Only RENAPO can confirm actual registration.
Can I check many at once?
Yes. Open Batch check, paste one CURP per line, and export results as CSV.
Is my CURP uploaded?
No. Everything runs locally in your browser.
How is a CURP different from an RFC?
A CURP is the 18-character population-registry key issued through RENAPO. An RFC is Mexico’s tax ID issued by SAT: 13 characters for an individual and 12 for a company, with a different check-character table. The two numbers are not interchangeable.
Why can two people with the same name and birthday have different CURPs?
Positions 1 to 16 can match when two people share the same name letters, date, sex and state. Position 17 is the homonym character: a different digit or letter is assigned so the two keys are not identical, and that character also marks the century of birth.
Can I read the birth state and the sex from a CURP?
Yes. Position 11 is H for male, M for female or X for non-binary (the official RENAPO lookup offers a No binario option). Positions 12 and 13 are the two-letter code of the entidad federativa of birth, or NE when the person was born abroad. This tool decodes those fields once the format and check digit pass.
Why can the official RENAPO service still reject a CURP that this tool accepts?
A matching check digit only proves the 18 characters were copied consistently. It does not prove the key is in RENAPO’s database, has not been cancelled, or belongs to the person presenting it.
Last updated: