Dígito Verificador do CPF: Como o Cálculo Funciona
Os dois últimos números de um CPF não são atribuídos: eles são calculados a partir dos nove primeiros. Servem para detectar erros de digitação — um dígito trocado, dois dígitos invertidos. Entender esse cálculo explica como qualquer validador de CPF funciona e por que alguns números "bonitos" são recusados.
Índice
- O que o dígito verificador faz
- Estrutura do CPF
- Como calcular o primeiro dígito verificador
- Como calcular o segundo dígito verificador
- Exemplo completo: 529.982.247-25
- O que a validação não diz
- Implementação em JavaScript
- Perguntas Frequentes
- Ferramentas relacionadas
O que o dígito verificador faz
Um dígito verificador (DV) é um número derivado dos demais por uma fórmula fixa. Quem recebe o CPF refaz a conta e compara: se o DV calculado bate com o informado, o número é consistente; se não bate, houve erro na digitação ou na transmissão.
O CPF usa o método módulo 11, o mesmo de código de barras bancário, PIS/PASEP e do dígito verificador do CNPJ. Ele detecta 100% dos erros de um só dígito e a maioria das inversões de dígitos vizinhos.
Estrutura do CPF
O CPF tem 11 dígitos no formato ABC.DEF.GHI-JK:
| Parte | Dígitos | Significado | |---|---|---| | Base | 9 primeiros (A–I) | Número sequencial de registro | | 9º dígito | 1 dígito | Indica a região fiscal de emissão | | Dígitos verificadores | 2 últimos (J e K) | Validam os nove anteriores |
O primeiro DV (J) é calculado sobre os 9 dígitos da base. O segundo DV (K) é calculado sobre os 9 dígitos da base mais o primeiro DV.
Como calcular o primeiro dígito verificador
- Tome os 9 primeiros dígitos do CPF.
- Multiplique-os, da esquerda para a direita, pelos pesos 10, 9, 8, 7, 6, 5, 4, 3, 2.
- Some os nove produtos.
- Calcule o resto da divisão da soma por 11.
- Se o resto for 0 ou 1, o dígito é 0. Caso contrário, o dígito é 11 − resto.
Como calcular o segundo dígito verificador
- Tome os 9 primeiros dígitos mais o primeiro DV já calculado (10 dígitos).
- Multiplique-os pelos pesos 11, 10, 9, 8, 7, 6, 5, 4, 3, 2.
- Some os dez produtos.
- Calcule o resto da divisão por 11.
- Mesma regra: resto 0 ou 1 → dígito 0; senão → 11 − resto.
O CPF é válido quando os dois dígitos calculados coincidem com os dois últimos do número informado.
Exemplo completo: 529.982.247-25
Este é o CPF usado como exemplo canônico em documentação e tutoriais. Base: 529982247. DVs esperados: 2 e 5.
Primeiro dígito
Dígitos: 5 2 9 9 8 2 2 4 7
Pesos: 10 9 8 7 6 5 4 3 2
Produtos: 50 18 72 63 48 10 8 12 14
Soma: 295
295 ÷ 11 = 26, resto 9
Resto ≥ 2 → DV1 = 11 − 9 = 2 ✓
Segundo dígito
Dígitos: 5 2 9 9 8 2 2 4 7 2 (base + DV1)
Pesos: 11 10 9 8 7 6 5 4 3 2
Produtos: 55 20 81 72 56 12 10 16 21 4
Soma: 347
347 ÷ 11 = 31, resto 6
Resto ≥ 2 → DV2 = 11 − 6 = 5 ✓
Os dígitos calculados (2 e 5) batem com os informados: o CPF 529.982.247-25 é matematicamente válido. Para conferir qualquer número sem fazer a conta à mão, use o validador de CPF.
O que a validação não diz
Passar no módulo 11 significa apenas que o número é bem formado. A validação por dígito verificador:
- não consulta a Receita Federal — não informa se o CPF existe, está ativo, regular ou suspenso;
- não associa o número a uma pessoa — isso exige acesso a bases oficiais, restrito e protegido pela LGPD;
- aceita alguns números irreais. Sequências como
111.111.111-11,222.222.222-22etc. satisfazem a fórmula, mas são rejeitadas por convenção pelos validadores, justamente por não terem valor prático.
Por isso é possível gerar CPFs válidos para testar formulários e integrações sem tocar em dados reais. O raciocínio é o mesmo descrito em como gerar CNPJ para testes: o número é consistente, mas não pertence a ninguém. Use o gerador de CPF para produzir números de teste, com ou sem pontuação.
Implementação em JavaScript
function calcularDigito(base, pesoInicial) {
let soma = 0;
for (let i = 0; i < base.length; i++) {
soma += Number(base[i]) * (pesoInicial - i);
}
const resto = soma % 11;
return resto < 2 ? 0 : 11 - resto;
}
function validarCpf(cpf) {
const digitos = cpf.replace(/\D/g, "");
if (digitos.length !== 11) return false;
if (/^(\d)\1{10}$/.test(digitos)) return false; // rejeita sequências iguais
const dv1 = calcularDigito(digitos.slice(0, 9), 10);
const dv2 = calcularDigito(digitos.slice(0, 10), 11);
return dv1 === Number(digitos[9]) && dv2 === Number(digitos[10]);
}
validarCpf("529.982.247-25"); // true
O peso inicial é 10 para o primeiro dígito (9 dígitos de base) e 11 para o segundo (10 dígitos de base). O restante decrementa a cada posição.
Perguntas Frequentes
Como saber se um CPF é válido?
Recalcule os dois dígitos verificadores a partir dos nove primeiros números, usando o módulo 11 com os pesos de 10 a 2 (primeiro DV) e de 11 a 2 (segundo DV), e compare com os dois últimos dígitos. Se ambos baterem, o CPF é consistente. Um validador de CPF faz isso instantaneamente.
O validador de CPF consulta a Receita Federal?
Não. Ele verifica apenas a matemática dos dígitos verificadores. Saber se um CPF está ativo ou regular exige consulta às bases oficiais da Receita, que não são públicas.
Por que 111.111.111-11 é recusado se "passa na conta"?
Sequências com todos os dígitos iguais satisfazem o cálculo do módulo 11, mas são bloqueadas por convenção nos validadores porque não correspondem a registros reais e costumam indicar preenchimento inválido.
O que significa "resto menor que 2, dígito é 0"?
Quando o resto da divisão por 11 é 0 ou 1, 11 − resto daria 11 ou 10, que não são dígitos únicos. A regra define o dígito verificador como 0 nesses dois casos.
O 9º dígito do CPF significa alguma coisa?
Sim: ele identifica a região fiscal onde o CPF foi emitido (por exemplo, 1 para DF/GO/MS/MT/TO, 8 para SP). Não faz parte do cálculo dos dígitos verificadores.
Ferramentas relacionadas
- Validador de CPF — confira a consistência de um CPF pelo módulo 11
- Gerador de CPF — números válidos para testes de sistema
- Gerador de CNPJ — mesma lógica de dígitos para pessoa jurídica