Como validar um CPF passo a passo (módulo 11)
Aprenda o algoritmo do CPF, módulo 11, com exemplo numérico e código em Python e JavaScript. Inclui dicas para integrar ao seu sistema RH ou CRM e link pra ferramenta.
O algoritmo do CPF usa o cálculo por módulo 11 para gerar dois dígitos verificadores. Neste post você terá a explicação teórica, um exemplo numérico detalhado, código pronto em Python e JavaScript, e recomendações práticas para integrar no seu sistema RH, contabilidade ou CRM.
Por que validar o CPF no backend? Dados errados atrapalham folha, impostos e conciliação. No Brasil há mais de 200 milhões de CPFs emitidos, segundo a Receita Federal, 2023, portanto conferir a validade na origem reduz erros e retrabalho. Além disso, a validação local evita chamadas desnecessárias a serviços externos e melhora a experiência do usuário.
Use nossa ferramenta para automatizar validações: use nosso validador de CPF em /ferramentas/validador-cpf. Se precisar de dados de teste, use o gerador de CPF em /ferramentas/gerador-cpf.
O que é o dígito verificador do CPF e por que usar módulo 11
O CPF é composto por 11 dígitos: nove dígitos base mais dois dígitos verificadores. Os dois últimos dígitos são calculados com o algoritmo de módulo 11. O objetivo é detectar erros comuns de digitação, como troca de dígitos ou omissão.
Dados rápidos com fontes
- População estimada do Brasil: 214.3 milhões em 2022, IBGE, 2022. Isso explica o alto volume de CPFs ativos e a necessidade de validação local.
- A Receita Federal mantém o cadastro do CPF e orientações para uso do número, Receita Federal, 2023.
- O método de dígito verificador usado em documentos oficiais segue o princípio do módulo 11 para detectar inconsistências, Portal de Governo, 2019.
Regra passo a passo com exemplo numérico
Aqui está a regra geral, explicada em passos claros, seguida por um exemplo prático.
Passos do cálculo
Exemplo numérico passo a passo
Considere o CPF base: 168.995.350. Para o exemplo transformamos em sequência: 1 6 8 9 9 5 3 5 0
Cálculo do primeiro dígito
- Pesos: 10 9 8 7 6 5 4 3 2
- Multiplicações: 1*10 = 10, 6*9 = 54, 8*8 = 64, 9*7 = 63, 9*6 = 54, 5*5 = 25, 3*4 = 12, 5*3 = 15, 0*2 = 0
- Soma: 10 + 54 + 64 + 63 + 54 + 25 + 12 + 15 + 0 = 297
- Resto da divisão por 11: 297 % 11 = 0
- Regra: resto < 2 então primeiro dígito = 0
Portanto o primeiro dígito verificador é 0.
Cálculo do segundo dígito
- Agora a sequência é: 1 6 8 9 9 5 3 5 0 0
- Pesos: 11 10 9 8 7 6 5 4 3 2
- Multiplicações: 1*11 = 11, 6*10 = 60, 8*9 = 72, 9*8 = 72, 9*7 = 63, 5*6 = 30, 3*5 = 15, 5*4 = 20, 0*3 = 0, 0*2 = 0
- Soma: 11 + 60 + 72 + 72 + 63 + 30 + 15 + 20 + 0 + 0 = 343
- Resto: 343 % 11 = 2
- Regra: resto >= 2 então segundo dígito = 11 - 2 = 9
Assim os dois dígitos verificadores são 0 e 9. O CPF completo fica 168.995.350-09. Se esse for o CPF informado, ele está correto segundo o algoritmo de módulo 11.
Implementação em código: Python e JavaScript
A seguir há duas implementações compactas e prontas para uso. Use nos endpoints backend, rotinas de importação em massa, ou validações de formulário no server side.
Python (funcional, fácil de integrar)
``python
def apenas_numeros(s):
return ''.join(c for c in s if c.isdigit())
def valida_cpf(cpf_raw):
cpf = apenas_numeros(cpf_raw)
if len(cpf) != 11:
return False
if cpf == cpf[0] * 11:
return False
nums = [int(c) for c in cpf]
# primeiro dígito
soma = sum(a * b for a, b in zip(nums[:9], range(10, 1, -1)))
resto = soma % 11
d1 = 0 if resto < 2 else 11 - resto
# segundo dígito
soma = sum(a * b for a, b in zip(nums[:9] + [d1], range(11, 1, -1)))
resto = soma % 11
d2 = 0 if resto < 2 else 11 - resto
return nums[9] == d1 and nums[10] == d2
# Exemplo
print(valida_cpf('16899535009')) # True
`
JavaScript (Node.js ou frontend com atenção a segurança)
`javascript
function apenasNumeros(s) {
return s.replace(/\D+/g, '');
}
function validaCPF(cpfRaw) {
const cpf = apenasNumeros(cpfRaw);
if (cpf.length !== 11) return false;
if (/^(\d)\1{10}$/.test(cpf)) return false;
const nums = cpf.split('').map(n => parseInt(n, 10));
let soma = 0;
for (let i = 0; i < 9; i++) soma += nums[i] * (10 - i);
let resto = soma % 11;
const d1 = resto < 2 ? 0 : 11 - resto;
soma = 0;
for (let i = 0; i < 10; i++) soma += nums[i] * (11 - i);
resto = soma % 11;
const d2 = resto < 2 ? 0 : 11 - resto;
return nums[9] === d1 && nums[10] === d2;
}
// Exemplo
console.log(validaCPF('168.995.350-09')); // true
``
Boas práticas na validação em sistemas RH e contabilidade
Exemplo de checklist antes de gravar no banco
- Confere formato e remove pontos e traços.
- Verifica comprimento igual a 11.
- Rejeita sequências com dígitos repetidos.
- Aplica algoritmo do módulo 11.
- Marca registro como válido ou inválido e armazena motivo.
Tabela de casos comuns e como tratá-los
| Situação | Verificação | Ação recomendada |
| CPF com pontuação correta e algoritmo válido | Aplica-se módulo 11 | Aceitar e cadastrar |
| CPF com pontuação incorreta, algoritmo válido | Normalizar e aplicar módulo 11 | Aceitar após normalização |
| CPF com todos dígitos iguais | Detectar com regex | Rejeitar automaticamente |
| CPF com menos de 11 dígitos | Verificar origem do dado | Solicitar complemento ao usuário ou rejeitar na importação |
| CPF válido no algoritmo mas conflitante com base de clientes | Cruzar com base | Ação manual: verificação documental |
Blockquote: princípio de validação
Validar CPF é uma camada de defesa simples e eficiente: previne erros de entrada, reduz fraudes e melhora a qualidade dos dados que sua folha de pagamento e contabilidade irão processar.
Integração prática com pipelines de dados
- Em cadastros novos, execute validação no endpoint que cria o registro. Retorne mensagem amigável ao usuário, por exemplo: "CPF inválido, verifique o número e tente novamente".
- Em importações de massa, gere um arquivo de rejeitados com a razão, para que equipe de operações revise e corrija manualmente.
- Em microserviços, implemente a validação como uma função desacoplada para facilitar testes unitários.
Checklist técnico para devs e arquitetos
Perguntas frequentes
O algoritmo do CPF usa módulo 11, como funciona na prática?
O algoritmo aplica pesos decrescentes aos dígitos base, soma os produtos, calcula o resto da divisão por 11 e transforma o resto em dígito verificador pela regra: resto menor que 2 gera 0, caso contrário resultado é 11 menos o resto. Esse processo é feito duas vezes, para os dois dígitos verificadores. Use o código de exemplo para implementar exatamente essa operação.
Como tratar CPFs com todos os dígitos iguais?
Sequências como 000.000.000-00 ou 111.111.111-11 devem ser rejeitadas explicitamente. Embora algumas possam passar em checagens superficiais, essas sequências não representam CPFs válidos na base da Receita Federal e aparecem frequentemente em dados de teste ou preenchimento automático indevido.
Posso usar apenas regex para validar um CPF?
Regex ajuda a validar formato, por exemplo colocar a máscara 000.000.000-00, mas não garante validade matemática do número. Combine regex com o algoritmo de módulo 11 para garantir que o CPF não só está formatado corretamente, mas também é consistente quanto aos dígitos verificadores.
Como integrar a validação de CPF no cadastro do meu sistema?
Valide no frontend para melhorar a experiência, mas execute a validação final no backend antes de persistir. Para integração com sistemas de folha de pagamento, armazene também o histórico de tentativas e motivo de rejeição. Se quiser checar a existência do CPF na base governamental, use serviços oficiais ou provedores de dados após a validação local.
Conclusão e próximo passo
Validar CPF com o algoritmo do módulo 11 é uma prática obrigatória para sistemas de RH, contabilidade e CRM que processam cadastros de pessoas físicas. Implemente a checagem como mostrado, escreva testes e trate casos especiais como sequências repetidas. Para facilitar sua rotina, use nossa ferramenta automática: use nosso validador de CPF em /ferramentas/validador-cpf e, para testes, o gerador em /ferramentas/gerador-cpf.
Referências e leituras sugeridas
- Receita Federal do Brasil, documentação sobre CPF, Receita Federal, 2023.
- IBGE, estimativa populacional 2022, IBGE, 2022.
- Portal de Governo, orientações técnicas, 2019.
Se você é dev ou trabalha com RH e contabilidade, implemente a função de validação como serviço reutilizável e inclua logs que permitam auditar rejeições. Isso reduz retrabalho na folha e problemas fiscais, além de melhorar a qualidade dos cadastros.
