International · Mexico

CURP validator and RFC check.

Paste a CURP (18 characters) or an RFC (12 or 13). The tool tells which it is and checks layout, date and check character. Nothing is sent.

How it works: A CURP has 18 characters: 4 letters from the name, a YYMMDD birth date, a sex letter (H or M; X is accepted with a note), a 2-letter state code, 3 consonants, a homoclave character (a digit for births up to 1999, a letter from 2000) and a check digit. An RFC is 12 characters for a legal entity or 13 for an individual.

Sources cited below, retrieved 15 October 2026Format and check digit only. Not an official verification

Advertisement

Inputs

Spaces and dashes are ignored. The check happens in your browser; nothing is sent.

Test values (not real people’s numbers):

Result

Enter a number and press Check.

How the Mexico CURP / RFC check works

A CURP has 18 characters: 4 letters from the name, a YYMMDD birth date, a sex letter (H or M; X is accepted with a note), a 2-letter state code, 3 consonants, a homoclave character (a digit for births up to 1999, a letter from 2000) and a check digit. An RFC is 12 characters for a legal entity or 13 for an individual.

CURP layout and check digit
PositionsMeaning
1-4Letters derived from the surnames and given name
5-10Birth date YYMMDD
11Sex letter: H or M in the 2018 instructivo (this tool also accepts X, with a note)
12-13State of birth code, or NE for born abroad
14-16Internal consonants of the names
17Homoclave: 0-9 for births through 1999, a letter from 2000
18Check digit: weight characters 0-9, A-Z (with N-tilde after N) by 18 down to 2, then (10 minus sum mod 10) mod 10
RFC layout
PartMeaning
3 or 4 letters3 for a persona moral (company), 4 for a persona fisica (individual)
6 digitsDate of birth or of incorporation, YYMMDD
3 charactersHomoclave; the last is a check character (0-9 or A) from a mod 11 sum with weights 13 down to 2

Worked example, the CURP BOXW310820HNERXN09: the first 17 characters weighted 18 down to 2 sum to 2551 under the dictionary 0-9, A-Z. 2551 mod 10 = 1, and (10 - 1) mod 10 = 9, which matches the last character. The date 31 / 08 / 20 with a digit in position 17 reads 20 August 1931. For the RFC GODE561231GR8 the first 12 characters weighted 13 down to 2 sum to 1026. 1026 mod 11 = 3, and 11 - 3 = 8, which matches the final 8.

What this tool cannot tell you

RENAPO (through gob.mx/curp) is the authority for CURP and the SAT for RFC. This tool can only say a string is well formed. It cannot say a CURP or RFC was assigned. A passing result means the number is well formed. It does not mean it was issued, is current, or belongs to anyone. Official sources to use instead: Consulta tu CURP (gob.mx) and SAT, Consulta RFC.

Where each rule comes from

Not every issuer publishes its check rules. This table says, for each rule used here, who documents it and how firmly.

Rule provenance
RuleSourceStatus
CURP positions 1-18: letters, date, sex H/M, state code, consonants, homoclave 0-9 up to 1999 and A-J from 2000Instructivo Normativo para la asignacion de la CURP, Diario Oficial de la Federacion, 18 June 2018 (Secretaria de Gobernacion)Published by the issuer
CURP check digit algorithmThe DOF text says the digit comes from an algorithm assigned by Gobernacion without printing it. The weights 18 to 2 over a 0-9, A-Z dictionary are as implemented in python-stdnum mx/curp and Wikipedia.Not published; reverse-engineered
State codes (32 states plus NE)The instructivo refers to the catalogue in the Manual de Procedimientos; the list is as reproduced by python-stdnum mx/curpDocumented by third parties, cross-checked
RFC 12/13 layout and mod 11 check characterpython-stdnum mx/rfc, which cites the SAT. It notes that roughly 1.5% of numbers in use fail the check, so a mismatch is only a warning.Not published; reverse-engineered

Frequently asked questions

How do I validate a CURP?

Paste the 18 characters. The tool checks the layout, that the date is real for the century implied by character 17, that the state code exists and that the last digit matches the check calculation.

Why can a valid-looking RFC fail the check?

The SAT does not publish its check calculation and roughly 1.5% of RFCs in real use do not satisfy the commonly implemented one, so a mismatch is flagged as a warning rather than a verdict.

Does a passing CURP prove it belongs to someone?

No. A passing result means the string is internally consistent. Only RENAPO can confirm assignment, through the official consult at gob.mx/curp.

Is it safe to type a CURP here?

The check runs in your browser and nothing is sent, stored or logged. Only enter numbers you are entitled to use.

Sources

Format check only — not an official verification

This tool checks structure and, where a public algorithm exists, a check digit, entirely in your browser. It does not query any government register, and it cannot confirm that a number was issued or to whom. Nothing you type is transmitted, stored or logged.

Advertisement
Advertisement