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.

—
Result

Batch check — paste many, one per line

Cross-country or bigger lists? Use the batch ID workbench.

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

PositionsExampleMeaning
1 to 4HEGGName 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 10560427Date of birth as YYMMDD. The century is not stored here; it is read from position 17.
11MSex: H for male, M for female, X for non-binary (the official RENAPO lookup offers a No binario option).
12 to 13VZTwo-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 16RRLFirst internal consonants of the paternal surname, the maternal surname and the given name, in that order.
170Homonym 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.
184Check 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.

Dictionary0123456789ABCDEFGHIJKLMNÑOPQRSTUVWXYZ
PositionCharacterDictionary valueWeightProduct
1H1718306
2E1417238
3G1616256
4G1615240
5551470
6661378
700120
8441144
9221020
1077963
11M228176
12V327224
13Z366216
14R285140
15R284112
16L21363
170020
Sum of products2246
Sum modulo 106
10 minus remainder, modulo 104

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

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: