Gerador e validador de CPF e CNPJ
Números válidos para testar sistema, em lote e por estado, incluindo o CNPJ alfanumérico que a Receita começou a atribuir em julho de 2026. Cole uma lista e veja quais são inválidos e por quê. Nada sai do seu computador.
O CNPJ alfanumérico tem letras de A a Z nas 12 primeiras posições; os 2 dígitos verificadores continuam números. Os CNPJs só de números seguem valendo. Se o seu banco guarda CNPJ como número (bigint), ele não cabe: gere alguns alfanuméricos e teste antes que um cliente real chegue.
Como o dígito verificador é calculado
Os dois últimos números do CPF e do CNPJ não são sorteados: saem de uma conta com os anteriores, o módulo 11. É ela que pega o erro de digitação. Os geradores daqui fazem a mesma conta; o número passa em qualquer validador, mas não pertence a ninguém (a chance de coincidir com um CPF emitido existe e é por isso que ele só serve para teste).
CPF: 111.444.777-35, passo a passo
1º dígito: multiplique os 9 primeiros por 10, 9, 8 ... 2 e some.
| dígito | 1 | 1 | 1 | 4 | 4 | 4 | 7 | 7 | 7 |
|---|---|---|---|---|---|---|---|---|---|
| peso | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
| produto | 10 | 9 | 8 | 28 | 24 | 20 | 28 | 21 | 14 |
Soma 162. Resto de 162 ÷ 11 = 8. Se o resto fosse 0 ou 1, o dígito seria 0; como não é, o dígito é 11 − 8 = 3.
2º dígito: agora com os 10 (os 9 + o 3) e pesos de 11 a 2: soma 204, resto 6, dígito 11 − 6 = 5. CPF: 111.444.777-35.
O 9º dígito (o último antes do traço) é a região fiscal onde o CPF foi inscrito: 0 RS; 1 DF, GO, MS, MT e TO; 2 AC, AM, AP, PA, RO e RR; 3 CE, MA e PI; 4 AL, PB, PE e RN; 5 BA e SE; 6 MG; 7 ES e RJ; 8 SP; 9 PR e SC. Por isso o gerador deixa escolher o estado.
CNPJ alfanumérico: 12.ABC.345/01DE-35
Desde a IN RFB nº 2.229/2024, as 12 primeiras posições aceitam letras. Cada caractere vale o seu código ASCII menos 48: os números valem eles mesmos e as letras vão de A = 17 a Z = 42. Os pesos vão de 2 a 9 da direita para a esquerda, recomeçando no 2 depois do 9:
| caractere | 1 | 2 | A | B | C | 3 | 4 | 5 | 0 | 1 | D | E |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| valor | 1 | 2 | 17 | 18 | 19 | 3 | 4 | 5 | 0 | 1 | 20 | 21 |
| peso | 5 | 4 | 3 | 2 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
| produto | 5 | 8 | 51 | 36 | 171 | 24 | 28 | 30 | 0 | 4 | 60 | 42 |
Soma 459, resto 8, 1º dígito 11 − 8 = 3. Com o 3 no fim e pesos 6, 5, 4, 3, 2, 9 ... 2, a soma é 424, resto 6, 2º dígito 5. É o exemplo do próprio manual da Receita. Para CNPJ só de números a conta é idêntica (o "valor" de cada dígito é ele mesmo), então um único validador serve aos dois formatos.
Copie a função
Validação completa, sem biblioteca, já pronta para o CNPJ alfanumérico. Testada contra os exemplos desta página.
JavaScript
function validaCPF(cpf) {
const n = String(cpf).replace(/\D/g, "");
if (n.length !== 11 || /^(\d)\1{10}$/.test(n)) return false;
const dv = (t) => {
let s = 0;
for (let i = 0; i < t; i++) s += n[i] * (t + 1 - i);
const r = s % 11;
return r < 2 ? 0 : 11 - r;
};
return dv(9) === +n[9] && dv(10) === +n[10];
}
// Aceita o CNPJ numérico e o alfanumérico (IN RFB 2.229/2024).
function validaCNPJ(cnpj) {
const c = String(cnpj).replace(/[.\/\-\s]/g, "").toUpperCase();
if (!/^[0-9A-Z]{12}\d{2}$/.test(c) || /^(.)\1{13}$/.test(c)) return false;
const dv = (t) => {
let s = 0;
for (let i = 0; i < t; i++) s += (c.charCodeAt(i) - 48) * (2 + ((t - 1 - i) % 8));
const r = s % 11;
return r < 2 ? 0 : 11 - r;
};
return dv(12) === +c[12] && dv(13) === +c[13];
}Python
import re
def valida_cpf(cpf: str) -> bool:
n = re.sub(r"[^0-9]", "", cpf)
if len(n) != 11 or n == n[0] * 11:
return False
def dv(t):
r = sum(int(n[i]) * (t + 1 - i) for i in range(t)) % 11
return 0 if r < 2 else 11 - r
return dv(9) == int(n[9]) and dv(10) == int(n[10])
def valida_cnpj(cnpj: str) -> bool:
c = re.sub(r"[.\-/\s]", "", cnpj).upper()
if not re.fullmatch(r"[0-9A-Z]{12}[0-9]{2}", c) or c == c[0] * 14:
return False
def dv(t):
r = sum((ord(c[i]) - 48) * (2 + (t - 1 - i) % 8) for i in range(t)) % 11
return 0 if r < 2 else 11 - r
return dv(12) == int(c[12]) and dv(13) == int(c[13])SQL (PostgreSQL)
CREATE OR REPLACE FUNCTION valida_cpf(cpf text) RETURNS boolean
LANGUAGE plpgsql IMMUTABLE AS $$
DECLARE d text := regexp_replace(coalesce(cpf, ''), '[^0-9]', '', 'g'); s int; r int;
BEGIN
IF length(d) <> 11 OR d = repeat(left(d, 1), 11) THEN RETURN false; END IF;
FOR t IN 9..10 LOOP
s := 0;
FOR i IN 1..t LOOP s := s + substr(d, i, 1)::int * (t + 2 - i); END LOOP;
r := s % 11;
IF (CASE WHEN r < 2 THEN 0 ELSE 11 - r END) <> substr(d, t + 1, 1)::int THEN RETURN false; END IF;
END LOOP;
RETURN true;
END $$;
CREATE OR REPLACE FUNCTION valida_cnpj(cnpj text) RETURNS boolean
LANGUAGE plpgsql IMMUTABLE AS $$
DECLARE c text := upper(regexp_replace(coalesce(cnpj, ''), '[./[:space:]-]', '', 'g')); s int; r int;
BEGIN
IF c !~ '^[0-9A-Z]{12}[0-9]{2}$' OR c = repeat(left(c, 1), 14) THEN RETURN false; END IF;
FOR t IN 12..13 LOOP
s := 0;
FOR i IN 1..t LOOP s := s + (ascii(substr(c, i, 1)) - 48) * (2 + (t - i) % 8); END LOOP;
r := s % 11;
IF (CASE WHEN r < 2 THEN 0 ELSE 11 - r END) <> substr(c, t + 1, 1)::int THEN RETURN false; END IF;
END LOOP;
RETURN true;
END $$;
-- SELECT valida_cpf('529.982.247-25'), valida_cnpj('12.ABC.345/01DE-35'); -- true, trueDica: valide no banco também (CHECK (valida_cnpj(cnpj))) e guarde o CNPJ como char(14) ou text, nunca como número.
Para que serve, e para que não serve
Para testar software: preencher formulário em ambiente de homologação, popular banco de desenvolvimento, escrever teste automatizado, conferir se a máscara e a validação do seu sistema aceitam o CNPJ com letras. Para dado de teste, o melhor é um número que passa na conta e não é de ninguém conhecido.
Os números gerados aqui são fictícios: não estão ligados a pessoa nem empresa, não dão acesso a nada e não passam em consulta de situação cadastral na Receita. O validador só confere a conta; para saber se um CPF ou CNPJ existe e está regular, a consulta é no site da Receita Federal.
Aviso legal. Usar CPF ou CNPJ de outra pessoa, ou um número inventado, para se passar por alguém, abrir conta, fazer compra ou cadastro é crime. Inserir declaração falsa em documento para prejudicar direito, criar obrigação ou alterar a verdade é falsidade ideológica (Código Penal, art. 299): reclusão de 1 a 5 anos e multa se o documento é público, de 1 a 3 anos e multa se é particular. Esta ferramenta é para desenvolvimento e teste.
Dúvidas
O CPF gerado é de alguém?
Não de propósito. O gerador sorteia 9 dígitos e calcula os 2 verificadores. Mesmo assim, um número sorteado pode coincidir com o de alguém real; por isso ele só serve para teste e nunca para cadastro de verdade.
O que é o CNPJ alfanumérico e quando começou?
É o CNPJ com letras de A a Z nas 12 primeiras posições, criado pela Instrução Normativa RFB nº 2.229/2024 porque os números estavam acabando. A Receita informa que as primeiras inscrições nesse formato começam a partir de julho de 2026. Os CNPJs antigos não mudam, e os dois formatos valem ao mesmo tempo.
Meu sistema aceita só números. O que preciso mudar?
Três coisas: o campo (texto, 14 posições, letras maiúsculas), a máscara (aceitar letra antes da barra) e a validação (valor ASCII − 48 em vez do dígito; para números dá na mesma). A função acima já faz isso.
Por que o validador diz que 111.111.111-11 é inválido se a conta fecha?
Números com todos os dígitos iguais passam no módulo 11, mas não são emitidos e quase sempre são preenchimento falso. Todo validador sério rejeita.
A planilha comeu o zero do meu CPF. E agora?
O Excel lê "01234567890" como número e apaga o zero. Gere com pontuação, ou formate a coluna como texto antes de colar. Se colar um CPF com 10 dígitos aqui, o validador avisa.
Meus dados vão para algum servidor?
Não. A página é estática: a geração e a validação rodam em JavaScript no seu navegador. Não há cadastro, anúncio nem rastreamento.
Fontes (conferidas em 2026-10-02)
- Cálculo do DV do CNPJ alfanumérico (valor ASCII − 48, pesos 2 a 9, módulo 11, exemplo 12.ABC.345/01DE-35): Receita Federal/Serpro, manual de cálculo do DV.
- Formato e início em julho de 2026: Receita Federal, perguntas e respostas do CNPJ alfanumérico e notícia da IN RFB nº 2.229/2024.
- 9º dígito do CPF = região fiscal e a tabela de UFs: Receita Federal, folheto "CPF" (Educação Fiscal).
- Falsidade ideológica, art. 299 do Código Penal (Decreto-Lei nº 2.848/1940): texto no Planalto (fora do ar na conferência; texto e pena conferidos no TJDFT).