Ferramentas gratuitas para desenvolvedores. Nenhum dado real de pessoas é consultado ou armazenado.Como funciona o algoritmo do CPF →

Calculadora de dígito verificador do CNPJ

Informe os 12 primeiros caracteres de um CNPJ, com ou sem letras, e acompanhe o cálculo dos dois dígitos verificadores: valor de cada caractere, peso, produto, soma e resto do módulo 11. Gratuito, sem cadastro e processado no seu navegador.

1º dígito verificador

Caractere12ABC34501DE
Valor (ASCII−48)12171819345012021
Peso543298765432
Produto585136171242830046042

Soma = 459 · 459 mod 11 = 8 · 11 − 8 = 3 → dígito 3

2º dígito verificador

Caractere12ABC34501DE3
Valor (ASCII−48)121718193450120213
Peso6543298765432
Produto6106854382732350580636

Soma = 424 · 424 mod 11 = 6 · 11 − 6 = 5 → dígito 5

12.ABC.345/01DE-35

O que a calculadora mostra

Digite os doze primeiros caracteres de um CNPJ, a raiz e a ordem, sem os dígitos verificadores. A calculadora monta duas tabelas, uma para cada dígito, com quatro linhas:

  • Caractere: cada posição da base, na ordem em que aparece.
  • Valor: o número que esse caractere representa no cálculo (ASCII − 48).
  • Peso: o multiplicador daquela posição.
  • Produto: valor vezes peso.

Abaixo de cada tabela aparecem a soma dos produtos, o resto da divisão por 11 e o dígito resultante. No fim, a ferramenta mostra o CNPJ completo, já com a máscara. A entrada aceita minúsculas e ignora pontuação, inclusive ao colar: tudo é convertido para maiúsculas, reduzido a [A-Z0-9] e limitado a doze caracteres antes do cálculo.

O valor inicial do campo é 12ABC34501DE, base do CNPJ de exemplo 12.ABC.345/01DE-35. Troque qualquer caractere e as tabelas são recalculadas na hora, o que é a forma mais rápida de ver como uma única posição altera os dois dígitos. Para conferir um CNPJ completo, use o validador de CNPJ.

CNPJ alfanumérico

Desde julho de 2026, novas inscrições de CNPJ podem incluir letras nas doze primeiras posições, mas os dois dígitos verificadores continuam sendo sempre numéricos. O cálculo não muda de algoritmo: cada letra entra na soma pelo seu valor ASCII menos 48, o que dá 17 para A e 42 para Z, enquanto os dígitos de 0 a 9 valem eles mesmos. Por isso a mesma função serve para CNPJs antigos e novos, sem nenhum if separado para o formato. Para entender o que isso muda em cadastros, bancos de dados e integrações já existentes, veja o guia CNPJ alfanumérico: o que muda no seu sistema.

Valor dos caracteres: ASCII − 48

O CNPJ alfanumérico, emitido pela Receita Federal para novas inscrições desde julho de 2026 (IN RFB nº 2.229/2024), precisou de uma regra para transformar letras em números sem alterar o cálculo dos CNPJs já existentes. A solução foi usar o código ASCII do caractere menos 48. Como o código ASCII de 0 é 48, os dígitos continuam valendo 0 a 9. As letras maiúsculas começam em 65, então A vale 17:

Letra Valor Letra Valor Letra Valor
A 17 J 26 S 35
B 18 K 27 T 36
C 19 L 28 U 37
D 20 M 29 V 38
E 21 N 30 W 39
F 22 O 31 X 40
G 23 P 32 Y 41
H 24 Q 33 Z 42
I 25 R 34

Em quase todas as linguagens, a conversão é uma linha: c.charCodeAt(0) - 48 em JavaScript, ord(c) - 48 em Python, Ord(c) - 48 em Delphi. Só funciona com maiúsculas: em ASCII, a vale 97, o que daria 49 e um dígito errado. Por isso a entrada deve passar por toUpperCase antes do cálculo.

Pesos 5..2/9..2 e 6..2/9..2

Os pesos do CNPJ não descem continuamente, como no CPF. Eles seguem um ciclo de 2 a 9, contado da direita para a esquerda:

  • Primeiro dígito, sobre 12 posições: 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2.
  • Segundo dígito, sobre 13 posições (a base mais o primeiro dígito): 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2.

Lidos da direita para a esquerda, os dois começam em 2, sobem até 9 e recomeçam em 2. O segundo tem um peso a mais à esquerda porque cobre uma posição a mais. No CNPJ de exemplo, as somas ficam assim:

Base:      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 1º:   5   4   3   2   9   8   7   6   5   4   3   2   -> soma 459
Peso 2º:   6   5   4   3   2   9   8   7   6   5   4   3 (+ 3 x 2)  -> soma 424

No segundo dígito, o 3 calculado na primeira etapa entra como 13ª posição, com peso 2. O código abaixo gera os pesos a partir do ciclo, em vez de escrevê-los à mão:

digitos-cnpj.js
const pesos = (n) => Array.from({ length: n }, (_, i) => ((n - 1 - i) % 8) + 2);

function digito(chars) {
const p = pesos(chars.length);
let soma = 0;
for (let i = 0; i < chars.length; i++) soma += (chars.charCodeAt(i) - 48) * p[i];
const resto = soma % 11;
return resto < 2 ? 0 : 11 - resto;
}

const base = '12ABC34501DE';
const dv1 = digito(base);       // 3 (soma 459, resto 8)
const dv2 = digito(base + dv1); // 5 (soma 424, resto 6)

pesos(12) devolve [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] e pesos(13) devolve [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2].

Resto 0 ou 1

Depois da soma, calcula-se o resto da divisão por 11. Se o resto for 2 ou mais, o dígito é 11 menos o resto. Se for 0 ou 1, a conta daria 11 ou 10, que não cabem em uma posição, e o dígito é 0.

Dois exemplos com a mesma raiz numérica mostram os dois casos:

  • 11.222.333/0005-05: a soma do primeiro dígito é 110, que é múltiplo de 11. Resto 0, dígito 0.
  • 11.222.333/0014-04: a soma do primeiro dígito é 111. Resto 1, dígito 0.

Esquecer essa regra é um erro frequente em implementações caseiras, e ele aparece só em uma fração dos números, o que faz o bug passar despercebido em testes com poucos casos. Inclua na sua suíte pelo menos uma base que caia em cada um dos restos 0 e 1. Na mesma raiz, 11.222.333/0001-81 mostra o caso oposto no segundo dígito: soma 120, resto 10, dígito 1.

Diferenças para o CPF

O CPF e o CNPJ usam o mesmo princípio, o módulo 11 com a regra do resto 0 ou 1, mas diferem em quase todo o resto:

CPF CNPJ
Base 9 dígitos 12 caracteres (raiz + ordem)
Caracteres só dígitos dígitos e, desde 2026, letras de A a Z
Valor do caractere o próprio dígito ASCII − 48
Pesos do 1º dígito 10 a 2 5 a 2, depois 9 a 2
Pesos do 2º dígito 11 a 2 6 a 2, depois 9 a 2
Informação na base 9º dígito indica a região fiscal ordem indica o estabelecimento

Uma função de CPF não serve para CNPJ só trocando o tamanho, porque os pesos são outros. O cálculo do CPF está detalhado na calculadora de dígitos do CPF e no guia do algoritmo de validação pelo módulo 11.

Usar em provas e entrevistas

Validar CNPJ é um exercício comum em testes técnicos, e o formato alfanumérico deixou o problema mais interessante: além de laços e aritmética modular, ele cobre conversão de caracteres e tratamento de texto. Pontos que separam uma resposta completa de uma parcial:

  1. Converter para maiúsculas e limpar a entrada, mantendo [A-Z0-9], e não apenas dígitos.
  2. Conferir o tamanho e o formato: 14 caracteres, com os dois últimos obrigatoriamente numéricos.
  3. Rejeitar sequências repetidas, como 00.000.000/0000-00.
  4. Usar ASCII − 48 para obter o valor de cada caractere.
  5. Aplicar os pesos cíclicos e a regra do resto 0 ou 1 nos dois dígitos.
  6. Tratar o CNPJ como texto, nunca como número.

Vale saber explicar também o que a validação não faz: ela não diz se o CNPJ foi emitido nem se a empresa está ativa. Implementações de referência estão nas páginas de JavaScript, Python, Java e C#, e o guia sobre a estrutura do CNPJ explica o papel da raiz e da ordem.

Perguntas frequentes

Por que preciso informar só 12 caracteres?

Porque os dois últimos caracteres do CNPJ são o resultado do cálculo. Eles dependem apenas da raiz (8 posições) e da ordem (4 posições).

Quanto vale uma letra no cálculo?

O código ASCII da letra menos 48. Assim, A vale 17, B vale 18 e assim por diante até Z, que vale 42. Os dígitos continuam valendo de 0 a 9.

O que acontece quando o resto é 0 ou 1?

O dígito verificador é 0. A conta 11 menos o resto daria 11 ou 10, que não cabem em uma única posição.

O cálculo do CNPJ numérico mudou com o alfanumérico?

Não. Os pesos e a regra do resto são os mesmos. Como cada dígito convertido por ASCII menos 48 continua valendo ele mesmo, CNPJs numéricos dão exatamente o mesmo resultado de antes.

A calculadora consulta algum cadastro?

Não. Ela só faz contas com os caracteres que você informou, no seu navegador. Não diz se o CNPJ pertence a alguma empresa.