O algoritmo por tras do CPF
Nem toda sequencia de 11 numeros e um CPF valido. O documento possui dois digitos verificadores que sao calculados matematicamente a partir dos 9 primeiros digitos. Esse mecanismo permite detectar erros de digitacao e numeros inventados.
O algoritmo utilizado e o Modulo 11, amplamente usado em documentos fiscais no mundo inteiro. A validacao do CPF nao confirma se o numero pertence a uma pessoa real — ela apenas verifica se a sequencia numerica e matematicamente consistente.
Entender esse algoritmo e fundamental para desenvolvedores que precisam implementar validacao de CPF em seus sistemas. A validacao algoritmica e a primeira linha de defesa contra dados invalidos em formularios de cadastro, APIs e sistemas de cobranca. Ela nao substitui a consulta a Receita Federal, mas filtra a grande maioria dos numeros digitados incorretamente.
Estrutura do CPF
Um CPF tem o formato XXX.XXX.XXX-DD, onde os 9 primeiros digitos identificam o contribuinte e a regiao fiscal, e os 2 ultimos (DD) sao os digitos verificadores. O nono digito indica a regiao fiscal de emissao — por exemplo, o digito 0 corresponde ao Rio Grande do Sul e o 8 a Sao Paulo.
A formatacao com pontos e hifen e apenas visual — internamente, o CPF e armazenado como uma sequencia de 11 digitos numericos. Em bancos de dados, recomenda-se armazenar apenas os numeros (sem formatacao) e aplicar a mascara visual apenas na apresentacao ao usuario. Isso simplifica consultas, comparacoes e validacoes.
Calculando o primeiro digito verificador
Vamos usar o CPF ficticio 529.982.247-?? para calcular os digitos.
Passo 1: Multiplique cada um dos 9 primeiros digitos por pesos decrescentes de 10 a 2:
- 5 x 10 = 50
- 2 x 9 = 18
- 9 x 8 = 72
- 9 x 7 = 63
- 8 x 6 = 48
- 2 x 5 = 10
- 2 x 4 = 8
- 4 x 3 = 12
- 7 x 2 = 14
Passo 2: Some todos os produtos: 50 + 18 + 72 + 63 + 48 + 10 + 8 + 12 + 14 = 295
Passo 3: Calcule o resto da divisao por 11: 295 / 11 = 26, resto 9
Passo 4: Aplique a regra: se o resto for menor que 2, o digito e 0. Senao, e 11 - resto.
11 - 9 = 2. O primeiro digito verificador e 2.
Calculando o segundo digito verificador
Agora usamos os 10 digitos (incluindo o primeiro verificador): 5299822472
Passo 1: Multiplique por pesos decrescentes de 11 a 2:
- 5 x 11 = 55
- 2 x 10 = 20
- 9 x 9 = 81
- 9 x 8 = 72
- 8 x 7 = 56
- 2 x 6 = 12
- 2 x 5 = 10
- 4 x 4 = 16
- 7 x 3 = 21
- 2 x 2 = 4
Passo 2: Soma: 55 + 20 + 81 + 72 + 56 + 12 + 10 + 16 + 21 + 4 = 347
Passo 3: Resto: 347 / 11 = 31, resto 6
Passo 4: 11 - 6 = 5. O segundo digito verificador e 5.
CPF completo: 529.982.247-25
Casos especiais: CPFs invalidos
Existem CPFs que passam no algoritmo mas sao considerados invalidos por serem sequencias repetidas:
- 000.000.000-00
- 111.111.111-11
- 222.222.222-22
- … ate 999.999.999-99
Essas sequencias satisfazem a regra matematica, mas nao sao CPFs reais. Uma boa validacao deve rejeita-las explicitamente.
Alem dessas, a Receita Federal pode invalidar CPFs por outros motivos administrativos, como cancelamento por obito ou suspensao por irregularidade. Porem, essas situacoes nao podem ser verificadas apenas pelo algoritmo — exigem consulta direta ao banco de dados da Receita.
Por que o modulo 11?
O modulo 11 e usado porque gera uma distribuicao eficiente de digitos verificadores e detecta a maioria dos erros comuns de digitacao, incluindo troca de digitos adjacentes e insercao ou omissao de um digito. Esse mesmo algoritmo e utilizado em diversos outros documentos brasileiros, como o CNPJ e titulos de eleitor, alem de ser padrao internacional para codigos de barras ISBN.
A escolha do numero 11 como divisor nao e arbitraria. Usar um numero primo garante uma melhor distribuicao dos restos, o que significa que os digitos verificadores cobrem mais combinacoes possiveis de erros. Alem disso, o modulo 11 detecta 100% dos erros de um unico digito e a grande maioria das transposicoes de dois digitos adjacentes, que sao os tipos de erro mais comuns em digitacao manual.
Outros sistemas de validacao, como o Luhn algorithm (usado em cartoes de credito), usam modulo 10. A diferenca e que o modulo 11 tem capacidade ligeiramente maior de detectar transposicoes, ao custo de gerar eventualmente o digito “10” (que no caso do CPF e tratado como 0).
Implementacao em codigo
Se voce e desenvolvedor, a implementacao do algoritmo em qualquer linguagem segue a mesma logica:
- Remover caracteres nao numericos (pontos e hifen)
- Verificar se tem 11 digitos
- Rejeitar sequencias repetidas
- Calcular o primeiro digito verificador
- Calcular o segundo digito verificador
- Comparar com os digitos fornecidos
Dicas de implementacao
Aceite entrada com e sem formatacao: seu sistema deve tratar tanto “529.982.247-25” quanto “52998224725” como entradas validas. Remova todos os caracteres nao numericos antes de processar.
Valide o tamanho primeiro: antes de rodar o algoritmo, verifique se a string possui exatamente 11 digitos. Isso evita erros de index out of bounds e rejeita rapidamente entradas claramente invalidas.
Use tipos numericos apropriados: como o CPF tem no maximo 11 digitos, um inteiro de 32 bits nao e suficiente para armazena-lo (o maximo seria 2.147.483.647, que tem 10 digitos). Use um inteiro de 64 bits ou, preferencialmente, armazene como string para preservar zeros a esquerda.
Cuidado com zeros a esquerda: o CPF “012.345.678-90” comeca com zero. Se voce converter para inteiro, o zero sera perdido. Sempre trabalhe com strings ao lidar com CPFs.
Validacao no frontend e no backend: implemente a validacao em ambos os lados. No frontend, para dar feedback imediato ao usuario. No backend, para garantir seguranca, pois a validacao no frontend pode ser contornada por um atacante.
Onde a validacao do CPF e utilizada
A validacao algoritmica do CPF e empregada em praticamente todos os sistemas que lidam com cadastro de pessoas fisicas no Brasil:
- E-commerces: validacao no checkout antes de processar o pagamento
- Bancos e fintechs: abertura de conta e verificacao de identidade
- Sistemas governamentais: acesso a servicos publicos digitais
- Plataformas SaaS: cadastro de clientes e emissao de notas fiscais
- Gateways de pagamento: verificacao pre-transacao
Em todos esses casos, a validacao algoritmica e apenas o primeiro passo. Sistemas mais criticos complementam com consulta a APIs da Receita Federal para verificar se o CPF esta ativo, regular e se os dados cadastrais conferem.
Perguntas frequentes
A validacao do CPF garante que o numero pertence a uma pessoa real?
Nao. A validacao algoritmica verifica apenas se os digitos verificadores estao corretos de acordo com a regra matematica do modulo 11. Um CPF pode ser matematicamente valido mas nao estar cadastrado na Receita Federal. Para confirmar que o CPF pertence a uma pessoa real e esta ativo, e necessario consultar a Receita Federal.
Quantos CPFs validos existem matematicamente?
Existem aproximadamente 1 bilhao de combinacoes de 9 digitos (000.000.000 a 999.999.999), menos as 10 sequencias repetidas. Para cada combinacao valida de 9 digitos, os 2 digitos verificadores sao determinados univocamente. Portanto, existem pouco menos de 1 bilhao de CPFs matematicamente validos.
Posso usar o mesmo algoritmo para validar CNPJ?
O CNPJ usa o mesmo principio (modulo 11), mas com pesos diferentes e aplicados sobre 12 ou 13 digitos em vez de 9 ou 10. A logica e a mesma, mas os pesos sao 5,4,3,2,9,8,7,6,5,4,3,2 para o primeiro digito e 6,5,4,3,2,9,8,7,6,5,4,3,2 para o segundo.
O que significa quando um CPF “nao passa na validacao”?
Significa que os digitos verificadores informados nao correspondem ao calculo matematico baseado nos 9 primeiros digitos. Isso geralmente indica um erro de digitacao. O erro mais comum e a troca de dois digitos adjacentes (como digitar 52 em vez de 25), seguido pela digitacao de um digito errado.
Valide ou gere CPFs online
Agora que voce entende a logica, pode aplica-la em seus projetos ou simplesmente usar nosso Validador de CPF online para verificar qualquer numero instantaneamente. Precisa de numeros para testes? Experimente o Gerador de CPF e obtenha CPFs validos em segundos. Ambos funcionam 100% no navegador, sem enviar dados para servidores.