Algoritmos

Como Funcionam os Algoritmos do CPF e CNPJ

O CPF e o CNPJ não são sequências aleatórias de números — eles possuem dígitos verificadores calculados por um algoritmo matemático baseado em módulo 11. Entender esse algoritmo é fundamental para implementar validações corretas no seu código.

A estrutura do CPF

O CPF (Cadastro de Pessoas Físicas) é composto por 11 dígitos no formato NNN.NNN.NNN-DV, onde os 9 primeiros são o número base e os 2 últimos (DV) são os dígitos verificadores. Os 9 dígitos base são gerados pela Receita Federal e os dígitos verificadores são calculados a partir deles. CPFs com todos os dígitos iguais (000.000.000-00, 111.111.111-11, etc.) são inválidos por definição, mesmo que os dígitos calculados coincidissem.

O nono dígito do CPF indica o estado de origem do cadastro: 1 para DF, GO, MS, MT e TO; 2 para AC, AM, AP, PA, RO, RR e TO; 3 para CE, MA e PI; 4 para AL, PB, PE e RN; 5 para BA e SE; 6 para MG; 7 para ES e RJ; 8 para SP; 9 para PR e SC; 0 para RS. Esse dado é interessante para desenvolvedores que precisam filtrar ou segmentar usuários por região.

Calculando o primeiro dígito verificador do CPF

Para calcular o primeiro dígito verificador: multiplique cada um dos 9 primeiros dígitos pelos pesos 10, 9, 8, 7, 6, 5, 4, 3 e 2, respectivamente. Some todos os resultados. Calcule o resto da divisão por 11. Se o resto for menor que 2, o primeiro dígito verificador é 0. Se o resto for maior ou igual a 2, o dígito é 11 menos o resto.

Exemplo com o CPF 123.456.789-XX: (1×10) + (2×9) + (3×8) + (4×7) + (5×6) + (6×5) + (7×4) + (8×3) + (9×2) = 10+18+24+28+30+30+28+24+18 = 210. Resto de 210 por 11 = 210 mod 11 = 1. Como 1 < 2, o primeiro dígito verificador é 0. Para o segundo dígito, inclua o primeiro verificador calculado e use os pesos 11, 10, 9, 8, 7, 6, 5, 4, 3, 2 para os 10 primeiros dígitos.

A estrutura do CNPJ

O CNPJ (Cadastro Nacional de Pessoa Jurídica) possui 14 dígitos no formato XX.XXX.XXX/XXXX-DV. Os 8 primeiros dígitos identificam a empresa (raiz), os 4 seguintes identificam a filial (0001 para a matriz) e os 2 últimos são dígitos verificadores. A partir de julho de 2026, a Receita Federal implementará o CNPJ alfanumérico, onde os 12 primeiros caracteres poderão incluir letras, mas o cálculo dos verificadores permanece o mesmo.

Assim como o CPF, CNPJs com todos os dígitos iguais são inválidos. O processo de validação é similar ao do CPF, mas usa dois conjuntos diferentes de pesos — e é importante notar que os 12 primeiros caracteres (sem os verificadores) são usados no cálculo, não os 14.

Calculando os dígitos verificadores do CNPJ

Para o primeiro dígito verificador do CNPJ, use os pesos 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3 e 2 aplicados aos 12 primeiros dígitos. Some os produtos, divida por 11 e aplique a mesma regra do CPF: resto menor que 2 resulta em 0, caso contrário 11 menos o resto.

Para o segundo dígito, use os pesos 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3 e 2 aplicados aos 12 primeiros dígitos mais o primeiro verificador calculado. Esse conjunto de pesos diferente para cada verificador é o que torna o algoritmo do CNPJ ligeiramente mais complexo que o do CPF.

Por que esses algoritmos existem?

Os dígitos verificadores existem para detectar erros de digitação — que são a causa mais comum de documentos inválidos em formulários. Com dois dígitos verificadores, o CPF detecta qualquer transposição de dígitos adjacentes e qualquer alteração de um único dígito. O algoritmo de módulo 11 foi escolhido por ser matematicamente eficiente e por resultar em uma taxa baixa de colisões (números inválidos que por acaso passam na verificação).

Para desenvolvedores, implementar a validação de CPF e CNPJ na camada de frontend (antes de enviar ao servidor) melhora a experiência do usuário e reduz carga no backend. Implementar também no backend garante que dados malformados não entrem no banco de dados mesmo se alguém burlar a validação do frontend. O Help4Dev oferece tanto geradores quanto validadores que você pode usar para testar suas implementações.