Como calcular os 2 dígitos verificadores do CPF
Aprenda passo a passo como calcular manualmente os dois dígitos verificadores do CPF com exemplos e código. Teste depois no validador online.
O CPF tem dois dígitos verificadores no final que confirmam se os 9 primeiros números não foram digitados ou copiados com erro. Aqui você vai aprender o cálculo manual dos dois dígitos, método usado por sistemas de validação, com um exemplo prático e código pronto para devs.
O passo a passo abaixo é o padrão: calcule o primeiro dígito com os 9 números e pesos decrescentes de 10 a 2; depois calcule o segundo dígito incluindo o primeiro dígito calculado, com pesos de 11 a 2. Depois de conferir, use nossa ferramenta validador de CPF em /ferramentas/validador-cpf para testar rapidamente.
O que são os dígitos verificadores do CPF
Os dois últimos dígitos do CPF são chamados dígitos verificadores. Eles funcionam como um checksum: um cálculo aritmético sobre os 9 primeiros dígitos gera esses dois números. Se alguém alterar um dígito, provavelmente os verificadores não baterão.
Regra passo a passo para calcular o 1º dígito
Exemplo do passo (fórmula):
- Soma = d1*10 + d2*9 + ... + d9*2
- Resto = Soma % 11
- 1º dígito = (Resto < 2) ? 0 : 11 - Resto
Regra passo a passo para calcular o 2º dígito
Exemplo do passo (fórmula):
- Soma2 = d1*11 + d2*10 + ... + d9*3 + d10*2
- Resto2 = Soma2 % 11
- 2º dígito = (Resto2 < 2) ? 0 : 11 - Resto2
Exemplo prático completo (CPF: 123.456.789-09)
Vamos calcular os dígitos de exemplo para a base 123456789.
1º dígito:
- Pesos: 10,9,8,7,6,5,4,3,2
- Produtos: 1*10=10, 2*9=18, 3*8=24, 4*7=28, 5*6=30, 6*5=30, 7*4=28, 8*3=24, 9*2=18
- Soma = 10+18+24+28+30+30+28+24+18 = 210
- Resto = 210 % 11 = 1
- Como resto < 2, 1º dígito = 0
2º dígito (agora com 1234567890):
- Pesos: 11,10,9,8,7,6,5,4,3,2
- Produtos: 1*11=11, 2*10=20, 3*9=27, 4*8=32, 5*7=35, 6*6=36, 7*5=35, 8*4=32, 9*3=27, 0*2=0
- Soma2 = 11+20+27+32+35+36+35+32+27+0 = 255
- Resto2 = 255 % 11 = 2
- Como resto2 >= 2, 2º dígito = 11 - 2 = 9
Resultado final: 123.456.789-09
Algoritmo pronto (JS e Python)
Use estes trechos em seus testes. Eles implementam exatamente as regras acima.
JavaScript (Node / browser):
``
function calcularDigitosCPF(base9) {
const nums = String(base9).replace(/\D/g, '').padStart(9, '0').slice(-9).split('').map(Number);
function calc(nums, inicioPeso) {
let soma = 0;
for (let i = 0; i < nums.length; i++) soma += nums[i] * (inicioPeso - i);
const resto = soma % 11;
return resto < 2 ? 0 : 11 - resto;
}
const d1 = calc(nums, 10);
const d2 = calc([...nums, d1], 11);
return ${d1}${d2};
}
// Exemplo
console.log(calcularDigitosCPF('123456789')); // '09'
`
Python (3.x):
`
def calcular_digitos_cpf(base9):
s = ''.join([c for c in str(base9) if c.isdigit()])[-9:].rjust(9, '0')
nums = [int(c) for c in s]
def calc(nums, peso_inicio):
soma = sum(n * (peso_inicio - i) for i, n in enumerate(nums))
resto = soma % 11
return 0 if resto < 2 else 11 - resto
d1 = calc(nums, 10)
d2 = calc(nums + [d1], 11)
return f"{d1}{d2}"
# Exemplo
print(calcular_digitos_cpf('123456789')) # '09'
``
Boas práticas para devs, RH e contabilidade
- Nunca aceite CPFs com todos os dígitos iguais (ex.: 111.111.111-11), trate como inválidos mesmo que a soma confirme.
- Ao validar massa de dados, primeiro normalize (remova pontos/traço) e verifique tamanho 11. Depois aplique o cálculo.
- Para testes automatizados, gere CPFs válidos com o gerador de CPF em /ferramentas/gerador-cpf e valide com o validador em /ferramentas/validador-cpf.
- Em integrações, faça validação no backend; no front apenas feedback amigável pro usuário.
Conclusão
Calcular os dois dígitos verificadores do CPF é um processo determinístico simples: soma ponderada e módulo 11 com a regra do "<2 vira 0". Para evitar erros manuais, use nossa ferramenta validador de CPF em /ferramentas/validador-cpf, ela aceita lote e mostra onde falhou. Se precisar gerar CPFs de teste, confira também o gerador em /ferramentas/gerador-cpf.
FAQ
O que fazer se os dígitos calculados não baterem com o CPF informado?
Se o cálculo não bater, trate o CPF como inválido e solicite confirmação ao usuário. Para bases internas, marque o registro para revisão; não corrija automaticamente. Em massa, use o validador para identificar padrões de erro (ordem trocada, corte de zeros à esquerda).
Posso usar qualquer linguagem para implementar a validação do CPF?
Sim. A lógica é matemática simples (multiplicação e soma), portátil para qualquer linguagem. Apenas cuide de normalizar entradas (remover espaços e símbolos) e proteger contra strings curtas ou com caracteres não numéricos.
Por que a regra usa módulo 11 e por que o limite é 2?
Módulo 11 oferece boa detecção de erros comuns (troca de dígitos, dígito errado). A regra do limite 2 é escolha histórica do formato do CPF: restos 0 ou 1 produzem dígito 0 para evitar resultados ambíguos e manter uniformidade no sistema.
