Validação de CNPJ em Node.js: implementação completa sem dependências
Se você está construindo um sistema que aceita CNPJ — cadastro de fornecedores, marketplace, emissão de NF-e — precisa validar o formato e os dígitos verificadores. Muitos devs instalam uma lib para isso, mas a validação é simples o suficiente para implementar em poucas linhas.
Estrutura do CNPJ
O CNPJ tem 14 dígitos no formato XX.XXX.XXX/XXXX-XX. Os 8 primeiros identificam a empresa, os 4 seguintes identificam a filial (0001 para matriz), e os 2 últimos são dígitos verificadores calculados pelo algoritmo módulo 11.
O algoritmo
O cálculo é similar ao do CPF, mas com pesos diferentes:
- Remova a formatação (pontos, barra, traço)
- Verifique se tem exatamente 14 dígitos e não é uma sequência repetida
- Para o primeiro dígito verificador: multiplique os 12 primeiros dígitos pelos pesos 5,4,3,2,9,8,7,6,5,4,3,2
- Some os resultados e calcule o resto da divisão por 11
- Se o resto for menor que 2, o dígito é 0; caso contrário, é 11 menos o resto
- Repita com os 13 dígitos e pesos 6,5,4,3,2,9,8,7,6,5,4,3,2 para o segundo dígito
Implementação em TypeScript
Testando a validação
Agora você precisa de CNPJs fictícios para testar. Se usar apenas CNPJs inválidos, você só testa o caminho de rejeição. Gere CNPJs válidos para testar o caminho de aceitação:
Clique em Gerar para começar
Casos de teste recomendados
Via API para testes em massa
Resumo
- Validação de CNPJ são ~20 linhas de código, sem necessidade de libs externas
- O algoritmo mod-11 com pesos específicos valida os 2 dígitos verificadores
- Teste com CNPJs válidos (gerados) e inválidos para cobrir ambos os caminhos
- Use o validador online para checar CNPJs rapidamente
- Use a API para gerar CNPJs em massa no CI/CD