Pular para o conteúdo
Voltar pro blog
Guia 19 de junho de 2026 9 min de leitura

Como Validar e Calcular o Dígito Verificador do CNPJ

O guia técnico do dígito verificador do CNPJ no formato alfanumérico: o algoritmo do módulo 11, a tabela de conversão dos caracteres (ASCII − 48), um exemplo resolvido passo a passo e código JavaScript pronto para validar numérico e alfanumérico.

Calculadora e planilha sobre uma mesa, representando o cálculo do dígito verificador do CNPJ

Os dois últimos dígitos de um CNPJ não são escolhidos: eles são calculados a partir dos doze primeiros. É isso que permite a um sistema detectar na hora um número digitado errado, sem consultar nenhuma base. Com o CNPJ alfanumérico chegando em 2026, esse cálculo precisa lidar também com letras — e este guia mostra exatamente como.

Abaixo está o algoritmo completo, a tabela de conversão dos caracteres, um exemplo resolvido e uma função em JavaScript que valida tanto o formato numérico quanto o alfanumérico. Se você só quer conferir um número, use o Validador de CNPJ Alfanumérico, que mostra cada etapa do cálculo na tela.

O algoritmo: módulo 11, passo a passo

O dígito verificador (DV) do CNPJ usa o algoritmo do módulo 11. Ele é calculado em duas etapas — uma para cada dígito — seguindo sempre os mesmos passos:

  1. Converta cada caractere da base em um número (a regra de conversão está na próxima seção).
  2. Multiplique cada valor por um peso, que vai de 2 a 9 da direita para a esquerda e recomeça em 2 quando passa de 9.
  3. Some todos os produtos.
  4. Calcule o resto da divisão dessa soma por 11. Se o resto for menor que 2, o dígito é 0; caso contrário, o dígito é 11 menos o resto.

O primeiro DV usa as 12 posições da base. O segundo DV repete exatamente o mesmo processo, mas incluindo o primeiro dígito já calculado como 13º caractere.

A tabela de conversão dos caracteres

O que muda no CNPJ alfanumérico é apenas como cada caractere vira um número. A regra é simples e única: pegue o código ASCII do caractere e subtraia 48. Isso mantém os dígitos intactos e dá um valor consistente para cada letra.

Valor de cada caractere (código ASCII − 48)
CaractereValor no cálculo
0 a 90 a 9 (sem mudança)
A, B, C, D …17, 18, 19, 20 …
… W, X, Y, Z… 39, 40, 41, 42

Fonte: Especificação do CNPJ alfanumérico (Serpro / Receita Federal).

Exemplo resolvido: 12.ABC.345/01DE-35

Vamos calcular os dígitos da base 12ABC34501DE, o exemplo oficial. Cada caractere vira um valor (1, 2, 17, 18, 19, 3, 4, 5, 0, 1, 20, 21), que é multiplicado pelo peso da sua posição e somado.

  • 1º dígito: a soma dos produtos dá 459. O resto de 459 por 11 é 8. Como 8 é maior que 2, o dígito é 11 − 8 = 3.
  • 2º dígito: repetindo a conta com o 3 incluído (12ABC34501DE3), a soma dá 424. O resto de 424 por 11 é 6, então o dígito é 11 − 6 = 5.

Juntando os dois, o CNPJ completo é 12.ABC.345/01DE-35. Você pode conferir esse mesmo passo a passo, com a tabela de pesos e produtos, abrindo “Ver o cálculo do dígito verificador” no validador.

Código pronto em JavaScript

A função abaixo valida um CNPJ numérico ou alfanumérico. Ela limpa a pontuação, separa a base dos dígitos verificadores, recalcula o DV pelo módulo 11 e compara com o informado:

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

function cnpjValido(valor) {
  const cnpj = valor.toUpperCase().replace(/[^0-9A-Z]/g, '');
  if (cnpj.length !== 14) return false;
  const base = cnpj.slice(0, 12);
  const dv1 = digito(base);
  const dv2 = digito(base + dv1);
  return cnpj.slice(12) === String(dv1) + String(dv2);
}

cnpjValido('12.ABC.345/01DE-35'); // true

Repare que a função funciona para os dois formatos sem ramificações: como os dígitos 0 a 9 também passam pela conversão ASCII − 48 (e continuam valendo 0 a 9), o CNPJ numérico é apenas um caso particular do mesmo algoritmo.

Erros comuns ao implementar

  • Usar parseInt nas letras. Letras não são dígitos — a conversão certa é pelo código ASCII menos 48, não por parse numérico.
  • Esquecer de incluir o 1º DV no cálculo do 2º. O segundo dígito sempre usa 13 caracteres: a base mais o primeiro dígito.
  • Aceitar dígitos verificadores com letra. As 12 primeiras posições podem ter letras, mas os 2 últimos caracteres são sempre numéricos.
  • Guardar o CNPJ como número. Zeros à esquerda e letras se perdem — sempre trate como texto de 14 caracteres.

Validar e gerar sem reimplementar

Se você não quer manter o algoritmo na mão, dá para usar as ferramentas prontas: o Validador de CNPJ Alfanumérico confere qualquer número e mostra o cálculo, e o Gerador de CNPJ Alfanumérico cria CNPJs válidos de teste, em lote, para popular seus ambientes de homologação. Para o panorama completo da mudança, veja o guia sobre o novo formato do CNPJ em 2026.

Referências e leitura complementar

  1. Serpro (2024). Cálculo dos dígitos verificadores do CNPJ alfanumérico. Serviço Federal de Processamento de Dados link .
  2. Receita Federal do Brasil (2024). CNPJ Alfanumérico — Perguntas e Respostas. gov.br / Ministério da Fazenda link .

Veja seu primeiro concorrente em minutos

Trial de 14 dias, sem cartão. Em poucos minutos, a primeira detecção aparece no painel.

Criar conta grátis
Compartilhar:
Hora de entrar em campo

Aplique agora mesmo.

Trial de 14 dias, sem cartão. Em poucos minutos a primeira detecção aparece no painel.