Generate unlimited valid CURPs instantly for testing & development. Free CURP generator creates random Mexican identification codes following official format rules. Perfect for developers and testers.
A CURP generator is an essential tool for developers and testers working with Mexican identification systems. The CURP (Clave Única de Registro de Población) is Mexico's unique alphanumeric identification code used for official purposes. Our free CURP generator creates valid, random CURPs that comply with official Mexican format and validation rules, making it perfect for software testing, data privacy protection, and development scenarios.
Important: All generated CURPs are random and not tied to real individuals. Use only for testing and development purposes.
Using our CURP generator tool is simple and instant:
No registration required - start generating valid CURPs immediately.
Understanding the CURP format is crucial for validation and testing. A CURP consists of 18 characters in the following format:
The CURP system was introduced in 1996 by the Mexican government to modernize personal identification. This Mexican identification system replaced various other ID formats and became essential for government services, from school enrollment to tax filing.
Integrate CURP generation into your applications with these code examples:
1import random
2import string
3from datetime import datetime, timedelta
4
5def generate_curp():
6 # Generate name components
7 paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
8 maternal = random.choice(string.ascii_uppercase)
9 given = random.choice(string.ascii_uppercase)
10
11 # Generate date of birth
12 start_date = datetime(1940, 1, 1)
13 end_date = datetime.now()
14 random_date = start_date + timedelta(days=random.randint(0, (end_date - start_date).days))
15 date_str = random_date.strftime("%y%m%d")
16
17 # Generate gender
18 gender = random.choice(['H', 'M'])
19
20 # Generate state code
21 states = ['AS', 'BC', 'BS', 'CC', 'CL', 'CM', 'CS', 'CH', 'DF', 'DG', 'GT', 'GR', 'HG', 'JC', 'MC', 'MN', 'MS', 'NT', 'NL', 'OC', 'PL', 'QT', 'QR', 'SP', 'SL', 'SR', 'TC', 'TS', 'TL', 'VZ', 'YN', 'ZS']
22 state = random.choice(states)
23
24 # Generate consonants
25 consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
26
27 # Generate differentiation digit
28 diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
29
30 # Generate check digit (simplified for this example)
31 check_digit = random.choice(string.digits)
32
33 return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"
34
35## Generate and print a random CURP
36print(generate_curp())
37
1function generateCURP() {
2 const vowels = 'AEIOU';
3 const consonants = 'BCDFGHJKLMNPQRSTVWXYZ';
4 const states = ['AS', 'BC', 'BS', 'CC', 'CL', 'CM', 'CS', 'CH', 'DF', 'DG', 'GT', 'GR', 'HG', 'JC', 'MC', 'MN', 'MS', 'NT', 'NL', 'OC', 'PL', 'QT', 'QR', 'SP', 'SL', 'SR', 'TC', 'TS', 'TL', 'VZ', 'YN', 'ZS'];
5
6 const randomLetter = () => String.fromCharCode(65 + Math.floor(Math.random() * 26));
7 const randomVowel = () => vowels[Math.floor(Math.random() * vowels.length)];
8 const randomConsonant = () => consonants[Math.floor(Math.random() * consonants.length)];
9
10 const paternal = randomLetter() + randomVowel();
11 const maternal = randomLetter();
12 const given = randomLetter();
13
14 const now = new Date();
15 const start = new Date(1940, 0, 1);
16 const randomDate = new Date(start.getTime() + Math.random() * (now.getTime() - start.getTime()));
17 const dateStr = randomDate.toISOString().slice(2, 10).replace(/-/g, '');
18
19 const gender = Math.random() < 0.5 ? 'H' : 'M';
20 const state = states[Math.floor(Math.random() * states.length)];
21
22 const internalConsonants = randomConsonant() + randomConsonant() + randomConsonant();
23
24 const diffDigit = parseInt(dateStr.slice(0, 2)) < 20 ?
25 Math.floor(Math.random() * 10).toString() :
26 String.fromCharCode(65 + Math.floor(Math.random() * 26));
27
28 const checkDigit = Math.floor(Math.random() * 10).toString();
29
30 return `${paternal}${maternal}${given}${dateStr}${gender}${state}${internalConsonants}${diffDigit}${checkDigit}`;
31}
32
33// Generate and log a random CURP
34console.log(generateCURP());
35
While CURP is unique to Mexico, other countries use similar identification systems:
Country | ID System | Purpose |
---|---|---|
United States | Social Security Number (SSN) | Tax and benefits identification |
Canada | Social Insurance Number (SIN) | Employment and government services |
India | Aadhaar Number | Biometric-based national ID |
Brazil | Cadastro de Pessoas Físicas (CPF) | Tax registration number |
Each system has unique structure and validation rules for their respective countries.
A CURP generator creates random, valid Mexican identification codes for software testing, database development, and educational purposes. It's essential for developers working with Mexican user systems.
All generated CURPs are fake and random. They follow the official format but don't belong to real people. Use them only for testing and development purposes.
You can generate unlimited CURPs with our free tool. There are no daily limits or restrictions for testing and development use.
Yes, our CURP generator is completely free. No registration, payment, or download required - just generate CURPs instantly online.
Generated CURPs follow the official Mexican government format: 18 characters including name letters, birth date, gender, state code, and validation digits.
No, generated CURPs are for testing only. Never use fake CURPs in production systems or official applications requiring real identification.
Our generator follows official CURP validation rules including proper state codes, date formats, gender indicators, and check digit calculations.
No data is stored. All CURPs are generated client-side and disappear when you close the browser. Complete privacy guaranteed.
Ready to test your Mexican application systems? Use our free CURP generator to create valid test data instantly. Perfect for developers, testers, and educators working with Mexican identification systems.
Discover more tools that might be useful for your workflow