Pular para o conteúdo
ValidadorCNPJ Gerar CNPJ

Validação estrutural completa

Validar CNPJ alfanumérico online

Cole o número e veja na hora se ele passa em todas as checagens: caracteres permitidos, tamanho, posição dos dígitos verificadores e cálculo do módulo 11. Grátis, ilimitado e sem cadastro.

Aceita letras e números Sem cadastro e sem limite Nada sai do seu navegador

Testar com:

O que este validador confere

Muita gente chama de "validar CNPJ" só a conferência do dígito verificador. Uma validação completa tem quatro camadas, e a ferramenta acima aplica todas elas:

Camadas de validação aplicadas
#ChecagemReprova, por exemplo
1Caracteres permitidos: apenas 0-9 e A-Z (sem acento, cedilha ou símbolo)12.ABÇ.345/01DE-35
2Tamanho de exatamente 14 posições depois de remover a máscara12ABC34501DE3
3As duas últimas posições precisam ser numéricas12ABC34501DEAB
4Dígitos verificadores conferem com o módulo 11 recalculado12.ABC.345/01DE-34
Validação estrutural não é consulta cadastral. Um número pode passar nas quatro camadas acima e ainda assim nunca ter sido emitido, ou pertencer a uma empresa baixada. Estrutura é o que o validador desta página confere; para situação cadastral, razão social e CNAE é preciso consultar a base da Receita Federal.

Como validar CNPJ alfanumérico no seu sistema

A implementação de referência, em qualquer linguagem, segue sempre estes passos:

  1. Normalizar: toUpperCase() e remover tudo que não for [0-9A-Z].
  2. Checar o formato com a regex ^[0-9A-Z]{12}\d{2}$.
  3. Calcular o 1º DV sobre os 12 primeiros caracteres.
  4. Calcular o 2º DV sobre os 12 caracteres mais o 1º DV.
  5. Comparar os dois dígitos calculados com as posições 13 e 14.
validação completa em JavaScript
function validarCnpj(entrada) {
  const cnpj = String(entrada ?? '').toUpperCase().replace(/[^0-9A-Z]/g, '');

  if (!/^[0-9A-Z]{12}\d{2}$/.test(cnpj)) return false;   // formato
  if (/^(.)\1{13}$/.test(cnpj)) return false;            // sequência repetida

  const digito = (seq) => {
    let soma = 0;
    for (let i = 0; i < seq.length; i += 1) {
      soma += (seq.charCodeAt(i) - 48) * (((seq.length - 1 - i) % 8) + 2);
    }
    const resto = soma % 11;
    return resto < 2 ? 0 : 11 - resto;
  };

  const base = cnpj.slice(0, 12);
  const d1 = digito(base);
  const d2 = digito(`${base}${d1}`);

  return `${d1}${d2}` === cnpj.slice(12);
}

validarCnpj('12.ABC.345/01DE-35'); // true
validarCnpj('11.222.333/0001-81');   // true — numérico continua valendo

A mesma função em Python, PHP, Java, C#, Go, Delphi e mais.

Checklist de migração

Se o seu sistema já existia antes de julho de 2026, vale percorrer esta lista antes de receber o primeiro CNPJ com letra:

Exemplos de CNPJ alfanumérico válidos e inválidos
CNPJResultadoPor quê
12.ABC.345/01DE-35 VálidoExemplo oficial da Receita Federal, com letras na raiz e na ordem.
11.222.333/0001-81 VálidoCNPJ puramente numérico — continua válido, nada muda.
A1.B2C.3D4/0001-93 VálidoRaiz alfanumérica com ordem 0001 (matriz).
12.ABC.345/01DE-34 InválidoDígito verificador errado — o correto para essa base é 35.
12.ABC.345/01DE-AB InválidoOs dois dígitos verificadores continuam sendo numéricos.
12.ABÇ.345/01DE-35 InválidoSó entram letras de A a Z sem acento — nada de Ç, Ã ou hífen no meio.
00.000.000/0000-00 InválidoPassa no módulo 11, mas não corresponde a nenhuma inscrição real.
12.ABC.345/01DE-3 InválidoTem 13 caracteres; o CNPJ sempre tem 14.

Dúvidas sobre validação de CNPJ

Como validar um CNPJ alfanumérico?

São quatro checagens, nesta ordem: (1) remova a máscara e converta para maiúsculas; (2) confira que sobraram exatamente 14 caracteres, sendo os 12 primeiros de 0 a 9 ou A a Z e os 2 últimos numéricos; (3) recalcule os dois dígitos verificadores pelo módulo 11 usando o valor ASCII menos 48 de cada caractere; (4) compare o DV calculado com o informado.

Validar o CNPJ garante que a empresa existe?

Não. A validação é estrutural: ela prova que o número é matematicamente consistente, o que barra erros de digitação e de importação. Saber se a inscrição existe, se está ativa, baixada ou suspensa exige consulta ao cadastro da Receita Federal.

Preciso de duas funções, uma para o CNPJ antigo e outra para o novo?

Não. O algoritmo alfanumérico valida corretamente os CNPJs numéricos, porque o valor ASCII menos 48 de um dígito é o próprio dígito. Uma função só resolve os dois formatos — e essa é a forma correta de migrar.

Devo aceitar CNPJ digitado em minúsculas?

Sim, aceite e normalize. O usuário não tem obrigação de saber que o cálculo é sensível a maiúsculas. Faça toUpperCase() na entrada e guarde sempre em maiúsculas.

Sequências repetidas como 00.000.000/0000-00 são válidas?

Matematicamente elas passam no módulo 11, mas não correspondem a inscrições reais e costumam ser lixo de importação ou preenchimento de teste. A recomendação é recusá-las, e é o que este validador faz.