Skip to content

Check and generate national ID numbers

Check national ID and tax numbers from 18 countries, from CPF, CURP and codice fiscale to DNI, PESEL and INN, with the reason a number fails and what it encodes, or generate valid-format test numbers in your browser.

Document

CPFCadastro de Pessoas Físicas

Individual taxpayer number · written like 123.456.789-09

Where the rules come from

Spaces, dots, hyphens and slashes are ignored. Up to 10,000 lines at a time.

Paste a number to check it
Each line gets its own verdict: the reason when it fails, and what the number encodes when it passes.
Runs in your browser · no uploadHow it works

How to use ID number checker & generator

  1. 1

    Pick the document

    Choose the country, then the document if it has several, such as CPF or CNPJ for Brazil. Its written form and the sources of its rules appear underneath.

  2. 2

    Check one number or a list

    Paste numbers one per line on the Check tab. Each line is marked valid, warning or invalid, with the reason and the fields the number encodes.

  3. 3

    Generate test numbers

    On the Generate tab choose how many, a birth-date range, sex or region where the document has them, then copy the list or download TXT, CSV or JSON.

  4. 4

    Complete or calculate

    The Calculate tab adds a missing check digit or letter; for the codice fiscale, CURP and CUIT it works the whole number out from personal details.

Limits and Pro

Free, no sign-up: 25 documents from 18 countries, up to 10,000 lines per check and 10,000 numbers per generated batch; jobs over 500 items run in a background worker.

Pro removes the ads; checking and generating have no extra limits to lift. See Pro

About ID number checker & generator

Sign-up forms, payment providers and tax software reject an identity or tax number the moment one digit is off, so developers need numbers that pass those checks for their fixtures, and everyone else wants to know whether the number they were given is even well-formed. This tool covers 25 documents from 18 countries: Brazil's CPF and CNPJ (including the alphanumeric CNPJ issued since July 2026), Mexico's CURP and RFC, Italy's codice fiscale, Spain's DNI, NIE and company NIF, Colombia's NIT, Argentina's CUIT and CUIL, Poland's PESEL, NIP and REGON, Turkey's T.C. Kimlik No, Russia's INN and SNILS, Iran's national code, China's resident ID, Taiwan's national ID, Kazakhstan's IIN, Ukraine's RNOKPP, Egypt's national ID, Thailand's citizen ID, India's Aadhaar and South Korea's resident registration number.

Every check names its reason: the wrong length, a check digit that should have been another, a birth date that doesn't exist or a region code no authority uses. When a number passes, you see what it carries, from the birth date and sex in a PESEL to the municipality in a codice fiscale.

The rules come from the issuing authorities where they publish them, such as the Receita Federal's CNPJ manual or RENAPO's CURP rules, and otherwise from well-known open-source validators; each document lists its sources.

What no tool can tell you is whether a number was actually issued or whose it is: that needs the authority's own register, which this page never contacts. Aadhaar and Korean numbers can be checked but not generated.

Privacy

Numbers you paste, and the names and birth dates you type into the codice fiscale, CURP or CUIT calculators, are processed by this page in your browser and never sent anywhere; no government register is queried. Only the last document and tab you chose are remembered, in this browser's local storage. Picking Italy loads the municipality list, a static file from this site.

Features

Reasons, not a red cross

Wrong length, a bad check digit with the expected one, an impossible date or an unknown region code, named for every line.

Decodes what a number holds

Birth date, sex, state, province, municipality, legal form or tax office, wherever the document carries them.

Test data that passes validators

Batches of up to 10,000 with your birth-date range, sex and region, labelled valid format only and for testing.

What each document encodes

Birth date and sex: CURP (Mexico), codice fiscale (Italy), PESEL (Poland), resident ID (China), RNOKPP (Ukraine), national ID (Egypt), and usually the IIN (Kazakhstan). Taiwan's ID carries sex and the place of first registration but no date.

Place: the CPF's ninth digit is the fiscal region of first registration, a CURP names the state of birth, a codice fiscale the municipality or foreign country, Chinese and Egyptian numbers the province or governorate, and an INN the region and tax office.

Little beyond a check digit: DNI and NIE letters, the T.C. Kimlik No, the SNILS, the REGON, the NIT and Aadhaar; Iran's national code and the Polish NIP also start with the code of the office that issued them.

ID number checker & generator: frequently asked questions

Does a valid result mean the number belongs to a real person or company?
No. Valid means the number follows every published rule for its format: length, characters, check digits, date and region codes. Whether it was ever issued, and to whom, is only in the issuing authority's register, which this tool never contacts. A typo can even produce another valid number, so for anything that matters confirm it with the holder or the authority.
Can I use the generated numbers as test data?
That is what they are for: each one passes the checks a form or validator applies, and the page labels them valid format only, belongs to no one, for testing. Most authorities publish no reserved test range, so by chance a random number can equal one already issued. Keep them in test systems; for Mexican invoices the SAT's generic RFC XAXX010101000 is the documented placeholder.
Why can't I generate Aadhaar or Korean resident registration numbers?
Both identify real people for banking, benefits and sign-ups, neither country publishes a test range, and fake numbers are a known fraud tool. Korean law also punishes making up resident registration numbers for gain. So the page checks them, including Aadhaar's Verhoeff digit and the date and sex in a Korean number, but never produces one.
Why do some numbers get a warning instead of valid?
A warning means every rule that can be checked passed, but something can't be settled from the number alone. Korean numbers issued since October 2020 end in random digits, Kazakhstan's IIN no longer has to start with the birth date, the SAT has issued some RFCs that break their own check, and an Italian place code may belong to a municipality missing from the list.
Which rules does the alphanumeric CNPJ use?
From July 2026 the Receita Federal issues CNPJs whose first 12 characters can be letters. Each character counts as its ASCII code minus 48, so A is 17 and Z is 42, and the two check digits still come from mod 11 with weights 2 to 9, staying numeric. Older numeric CNPJs keep their digits, and the page checks both kinds.

Other tasks with this tool

All developer tools