Como Validar CNPJ Online e Entender os Dígitos

Você recebe um CNPJ num formulário, num contrato ou num sistema de integração — e precisa saber se aquele número é válido antes de seguir em frente. Parece simples. Mas o problema aparece quando você não sabe exatamente o que "válido" significa aqui, e acaba aceitando números que passam na máscara mas são completamente inúteis na prática.

Validar CNPJ não é só conferir se tem 14 dígitos e está formatado direitinho. É verificar se os dígitos verificadores batem com o cálculo esperado. Um CNPJ pode estar perfeitamente formatado — com pontos, barras e traço — e ainda assim ser inválido matematicamente.

Usa o Validar CNPJ do Geratudo se quiser fazer essa verificação agora. Mas vale a pena entender o que acontece por baixo.

A estrutura do CNPJ: o que cada parte representa

O CNPJ tem 14 dígitos no total. A formatação padrão é `XX.XXX.XXX/XXXX-DD`, onde:

  • Os 8 primeiros dígitos identificam a empresa (raiz do CNPJ)
  • Os 4 seguintes identificam o estabelecimento (matriz é sempre 0001, filiais seguem a sequência)
  • Os 2 últimos são os dígitos verificadores — e é aqui que mora a validação

Isso tem uma implicação prática importante: duas filiais do mesmo grupo empresarial têm raiz idêntica, mas CNPJ diferentes por causa da parte do estabelecimento. Muita gente não sabe disso e se confunde quando vê dois CNPJs que "parecem iguais" na maior parte.

Como funciona o cálculo dos dígitos verificadores

A lógica de validação usa um algoritmo de módulo 11, aplicado duas vezes — uma pra cada dígito verificador.

Para o primeiro dígito, você multiplica os 12 primeiros dígitos pelos pesos `5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2`, soma tudo, divide por 11 e pega o resto. Se o resto for menor que 2, o dígito é 0. Senão, é `11 menos o resto`.

Para o segundo dígito, o processo se repete, mas agora usando os 13 dígitos (os 12 originais mais o primeiro verificador já calculado), com pesos `6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2`.

Isso parece trabalhoso à mão — e é. Ninguém calcula isso manualmente em produção. Mas entender o mecanismo ajuda a perceber por que certos CNPJs inválidos chegam até você mesmo passando em validações superficiais.

Validação de CNPJ com verificação de dígitos verificadores

Sequências que parecem válidas mas não são

Tem um caso clássico que todo desenvolvedor já viu: os CNPJs com todos os dígitos iguais, tipo `11.111.111/1111-11` ou `00.000.000/0000-00`. Esses números passam em qualquer validação de formato, mas são explicitamente rejeitados pelo algoritmo — e deveriam ser barrados na sua validação também.

Outro cenário comum: CNPJs gerados aleatoriamente por alguém que só conhecia o formato. Eles chegam corretos na máscara, mas o cálculo dos dígitos não fecha. É exatamente o tipo de erro que uma validação superficial deixa passar e só aparece lá na frente, quando o sistema tenta consultar aquele CNPJ numa API de receita federal e retorna erro.

Na prática, isso começa a fazer diferença quando você tem formulários que aceitam dados de terceiros — clientes, fornecedores, parceiros. Sem uma validação de dígito verificador, você acumula uma base de dados com CNPJs inúteis e descobre isso no pior momento possível.

CNPJ válido ≠ CNPJ ativo

Esse é um ponto que causa muita confusão. Um CNPJ pode ser matematicamente válido — ou seja, os dígitos verificadores estão corretos — mas a empresa pode estar:

  • Baixada
  • Inapta
  • Suspensa
  • Simplesmente nunca ter existido (foi gerado pra testes)

A validação local, como a que o Validar CNPJ faz, confirma a integridade matemática do número. Para saber a situação cadastral real, você precisaria consultar diretamente a Receita Federal.

Isso tem implicação direta em sistemas de cadastro: você pode — e deve — validar o CNPJ matematicamente no frontend pra dar feedback imediato ao usuário. Mas se o seu fluxo exige que a empresa esteja ativa, isso precisa de uma chamada externa, não dá pra resolver só com o algoritmo local.

Quando usar o Gerador em vez do Validador

Se você está desenvolvendo ou testando um sistema, às vezes o que precisa não é validar um CNPJ existente, mas gerar um número válido pra preencher formulários de teste, popular banco de dados de homologação ou simular cadastros.

Para isso, o Gerador de CNPJ faz exatamente o trabalho: cria CNPJs com dígitos verificadores corretos, que passam em qualquer validação matemática. Não são CNPJs reais, não pertencem a nenhuma empresa — mas são numericamente válidos.

É uma distinção importante: gerar pra teste é diferente de usar como dado real. CNPJ gerado pra teste é legítimo no contexto de desenvolvimento. Usar um CNPJ falso em documento oficial é outra história completamente.

Se você também lida com CPF no mesmo sistema, pode validar com o Validar CPF e gerar dados com o Gerador de CPF — o raciocínio é o mesmo.

Validação em formulários: onde a maioria erra

A armadilha mais comum é validar só o formato com uma regex simples — tipo `\d{2}\.\d{3}\.\d{3}/\d{4}-\d{2}` — e considerar que tá bom. Isso bloqueia entradas completamente erradas, mas deixa passar qualquer coisa que siga o padrão visual.

Uma validação decente precisa de pelo menos três camadas:

1. Formato: o campo tem a máscara correta? 2. Dígitos verificadores: o cálculo fecha? 3. Sequências inválidas: é uma sequência repetida (como 11111111111111)?

A terceira camada é frequentemente esquecida. E convenhamos, é a mais fácil de implementar — é só uma lista de strings proibidas.

Se você usa o Validar CNPJ do Geratudo pra checar manualmente, ele já cobre essas três camadas. Pra implementar no seu próprio código, você vai querer replicar a mesma lógica.

Diferença entre CNPJ e outros documentos no contexto de validação

CNPJ e CPF usam algoritmos similares de módulo 11, mas com pesos diferentes. Isso significa que a lógica de implementação é parecida, mas não idêntica — e copiar uma implementação de CPF e ajustar os pesos é um erro clássico que gera validações quebradas.

CNH e RG têm regras próprias, e variam por estado no caso do RG. Se você precisa validar esses documentos também, o Validar RG e o Validar CNH estão disponíveis separadamente.

Para dados completos de pessoa fictícia em testes — nome, CPF, endereço, tudo junto — o Gerador de Pessoa gera um conjunto coerente de uma vez.

Perguntas Frequentes

Um CNPJ válido matematicamente pode não existir na Receita Federal?

Sim, e isso é mais comum do que parece. O algoritmo de validação garante que os dígitos verificadores estão corretos, mas não tem como saber se aquele número foi de fato registrado na Receita Federal. Um gerador de CNPJ pra testes cria números válidos matematicamente, mas que não correspondem a nenhuma empresa real. Pra verificar se a empresa existe e está ativa, a única forma é consultar diretamente nos canais da Receita.

Qual a diferença entre CNPJ de matriz e de filial?

A raiz do CNPJ — os 8 primeiros dígitos — é a mesma pra matriz e todas as filiais. O que muda é o bloco de 4 dígitos seguinte: a matriz é sempre `0001`, e as filiais recebem números em sequência (`0002`, `0003`, e assim por diante). Os dígitos verificadores são calculados sobre o número completo, então cada estabelecimento tem seus próprios dois dígitos finais. Na prática, isso significa que um grupo com 10 filiais tem 11 CNPJs diferentes, todos com a mesma raiz.

Por que meu sistema aceita CNPJs inválidos mesmo com validação?

Provavelmente porque a validação está verificando só o formato — a máscara com pontos, barra e traço — sem checar os dígitos verificadores. Regex valida estrutura, não integridade matemática. Pra rejeitar CNPJs inválidos de verdade, você precisa implementar o algoritmo de módulo 11 (ou usar uma biblioteca que faça isso). Outra causa comum é não bloquear sequências repetidas, como `11.111.111/1111-11`, que passa em qualquer validação de formato mas é explicitamente inválido segundo as regras da Receita Federal.