Grátis · sem cadastro · roda no seu navegador

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.

Engenheira de software ruiva concentrada diante de dois monitores com código e um notebook, num escritório claro
Dado de teste, código de verdade

Gerar CPF

Validar CPF

Pôr ou tirar a máscara, em lote

Detecta sozinho: 11 dígitos é CPF, 14 caracteres é CNPJ.

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ígito111444777
peso1098765432
produto1098282420282114

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:

caractere12ABC34501DE
valor12171819345012021
peso543298765432
produto585136171242830046042

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, true

Dica: 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)