Como Validar CPF e CNPJ em Formulários e Sistemas

Validar CPF e CNPJ parece simples. Você coloca os números, o sistema verifica, pronto. Mas qualquer pessoa que já trabalhou com cadastros, sistemas de e-commerce ou formulários web sabe que a realidade é bem mais bagunçada.

O problema começa quando alguém digita um número qualquer num campo e o sistema aceita sem reclamar. Ou o oposto: um CNPJ perfeitamente legítimo é rejeitado por algum bug na validação. Esses dois cenários geram dor de cabeça em produção — e são mais comuns do que deveriam.

Esse artigo é sobre entender como a validação funciona de verdade, quando ela falha, e como usar ferramentas online pra checar rapidamente sem precisar rodar código.

O que torna um CPF ou CNPJ "válido"?

Primeiro ponto importante: um número matematicamente válido não significa que ele existe na base da Receita Federal. Isso confunde muita gente.

Tanto o CPF quanto o CNPJ têm uma estrutura com dígitos verificadores. São os dois últimos dígitos que funcionam como uma espécie de assinatura matemática — eles são calculados com base nos dígitos anteriores usando um algoritmo específico. Se os dígitos verificadores baterem com o resultado do cálculo, o número é considerado válido.

Mas repara: isso só garante que o número segue a estrutura correta. Não garante que aquele CPF pertence a alguém real ou que aquele CNPJ está ativo.

Isso tem implicações práticas sérias. Um número como `111.111.111-11` falha na validação porque os dígitos verificadores não conferem. Mas um número gerado seguindo a fórmula correta vai passar na validação mesmo que nunca tenha sido emitido pela Receita.

Como funciona o algoritmo do CPF

O CPF tem 11 dígitos. Os 9 primeiros são o número base, e os 2 últimos são os verificadores.

Para calcular o primeiro dígito verificador, você multiplica cada um dos 9 dígitos por pesos de 10 a 2, soma tudo, divide por 11 e pega o resto. Se o resto for menor que 2, o dígito é 0. Se for maior ou igual a 2, o dígito é 11 menos o resto.

O segundo dígito usa os 10 primeiros (incluindo o primeiro verificador que acabou de calcular), com pesos de 11 a 2, e segue a mesma lógica.

Parece trabalhoso, e é. Por isso qualquer sistema que faz essa validação manualmente está sujeito a erros — especialmente quando o código foi escrito às pressas ou copiado de algum lugar sem teste direito.

Como funciona o algoritmo do CNPJ

O CNPJ tem 14 dígitos. Os 12 primeiros formam o número base (raiz + ordem + DV), e os 2 últimos são verificadores.

O cálculo é parecido com o CPF, mas usa pesos diferentes: o primeiro dígito usa a sequência `5,4,3,2,9,8,7,6,5,4,3,2` aplicada sobre os 12 primeiros dígitos. O segundo usa `6,5,4,3,2,9,8,7,6,5,4,3,2` sobre os 13 primeiros.

Um detalhe que muita implementação erra: se o resultado for 0 ou 1, o dígito verificador é 0. Caso contrário, é 11 menos o resultado. Simples na teoria, mas é exatamente aí que os bugs aparecem quando alguém implementa sem testar casos de borda.

Formulário digital com campos de CPF e CNPJ sendo validados

Por que a validação falha em produção?

Algumas situações clássicas que você provavelmente já viu:

O campo aceita qualquer coisa. Alguém implementou só a máscara (aquela formatação `xxx.xxx.xxx-xx`) mas esqueceu de validar os dígitos verificadores. O dado entra errado no banco e você só descobre quando tenta usar.

A validação rejeita CNPJs novos. A Receita Federal reformatou o CNPJ em 2026 para incluir letras (o chamado CNPJ alfanumérico). Sistemas que validam só números inteiros quebraram com isso. Se você tem um sistema legado que rejeita CNPJs com letras, vale checar se a biblioteca de validação está atualizada.

O mesmo número é válido em um sistema e inválido em outro. Isso acontece muito com CPFs de estados específicos ou com CNPJs de filiais. Não é bug — às vezes é uma divergência entre implementações que tratam o nono dígito do CPF (que indica a região fiscal) de formas diferentes.

Números todos iguais passam na validação. CPFs como `000.000.000-00` ou `111.111.111-11` são tecnicamente inválidos e deveriam ser rejeitados explicitamente, mas algumas implementações não fazem esse check separado. O algoritmo matemático deles não fecha, mas já vi sistema que passou por cima disso.

Como testar validação sem rodar código

Se você precisa checar se um número específico é válido — seja pra testar um formulário, depurar um bug ou confirmar um dado recebido — a forma mais direta é usar uma ferramenta online.

O Geratudo tem validadores específicos pra isso:

  • Validar CPF — cola o número e ele diz na hora se os dígitos verificadores estão corretos
  • Validar CNPJ — mesma coisa para CNPJ, já considerando o formato atualizado
  • Validar RG — útil porque o RG varia bastante por estado e a validação é menos padronizada
  • Validar CNH — a CNH tem seu próprio algoritmo de verificação

Na prática, esses validadores são úteis em três situações: quando você está desenvolvendo um formulário e quer confirmar se sua implementação está certa, quando recebe uma base de dados com cadastros suspeitos e quer filtrar os inválidos, ou quando precisa gerar dados de teste e quer confirmar que o número gerado realmente passa na validação.

Falando em geração, se você precisar de números válidos para testar um ambiente de desenvolvimento, o Gerador de CPF e o Gerador de CNPJ geram números que seguem o algoritmo corretamente — útil justamente para testar o fluxo de validação sem usar dados reais.

Validação no front-end vs. no back-end

Um ponto que divide opiniões: onde validar?

Fazendo no front-end, você dá feedback imediato pro usuário antes de ele submeter o formulário. Isso melhora a experiência. Mas se você valida no front-end, qualquer requisição direta à API passa direto. Isso é um problema sério em sistemas que processam pagamentos ou cadastros.

A regra que todo sistema sério segue: validar nos dois lados. Front-end pra UX, back-end pra segurança. Não é redundância desnecessária — é o mínimo.

E tem mais: validação de formato é diferente de validação de existência. Mesmo fazendo as duas no back-end, você ainda pode precisar consultar a Receita Federal via API pra confirmar se o CNPJ está ativo e se a razão social bate. Isso vai além da validação matemática e envolve uma chamada externa com rate limit, possível custo e latência. Cada sistema decide o quanto precisa disso.

Casos específicos que valem atenção

CPF com zeros à esquerda. Isso é mais comum do que parece. CPFs de certas regiões do país começam com `0`, e sistemas que armazenam CPF como número inteiro (em vez de string) perdem esse zero. O número `012.345.678-90` se torna `12.345.678-90` e a validação falha. Sempre armazene CPF como texto.

CNPJ de filial vs. matriz. Os primeiros 8 dígitos do CNPJ identificam a empresa, os dígitos 9 e 10 identificam a filial (a matriz é sempre `0001`). Sistemas que ignoram isso podem tratar uma filial como empresa diferente — ou rejeitar o CNPJ de filial como inválido quando na verdade é completamente legítimo.

CNPJ alfanumérico. A partir de 2026, novos CNPJs passaram a aceitar letras nos quatro primeiros dígitos da raiz. Se o seu validador ou a sua regex espera só números, ele vai rejeitar esses CNPJs novos. Vale revisar qualquer implementação que faz validação de CNPJ com regex do tipo `\d{14}`.

Perguntas Frequentes

Um CPF válido matematicamente é um CPF real?

Não necessariamente. A validação matemática confirma apenas que os dígitos verificadores estão corretos — ou seja, que o número segue a estrutura esperada pela Receita Federal. Mas isso não significa que aquele CPF foi emitido para uma pessoa real. Para confirmar a existência, você precisaria consultar diretamente a base da Receita, o que exige acesso a serviços específicos e não é algo que uma ferramenta de validação simples faz.

Por que sistemas diferentes às vezes discordam sobre um mesmo CNPJ?

Existem algumas razões. A mais comum é uma implementação bugada em algum dos lados — o algoritmo parece simples, mas tem casos de borda (como o resultado igual a 0 ou 1) que algumas versões tratam errado. Outra razão é o CNPJ alfanumérico: sistemas mais antigos podem rejeitar o formato novo por não terem sido atualizados. Se você tem um CNPJ real sendo rejeitado por um sistema, vale testar com um validador de referência pra entender qual dos dois está errado.

Posso usar CPFs e CNPJs gerados online em cadastros reais?

Não. Números gerados por ferramentas como o Gerador de CPF ou o Gerador de CNPJ são válidos matematicamente, mas não devem ser usados em cadastros reais, contratos, notas fiscais ou qualquer documento oficial. O uso adequado é exclusivamente para testes de desenvolvimento, validação de formulários e simulações em ambientes de homologação. Usar número fictício em documento real pode configurar fraude.

Como saber se minha implementação de validação está correta?

A forma mais direta é pegar uma lista de CPFs ou CNPJs conhecidamente válidos e inválidos e passar pelo seu validador. Os geradores e validadores do Geratudo são úteis pra isso: você gera um número, anota, e testa se seu código chega no mesmo resultado. Se houver divergência, o problema está quase sempre no tratamento dos casos onde o resto da divisão é 0 ou 1, ou na forma como os zeros à esquerda estão sendo tratados.