Pular para o conteúdo
Toolbox BrasilToolbox Brasil

Dígito Verificador do CPF: Como o Cálculo Funciona

·8 min de leitura·Por Equipe Toolbox Brasil

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

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

  1. Tome os 9 primeiros dígitos do CPF.
  2. Multiplique-os, da esquerda para a direita, pelos pesos 10, 9, 8, 7, 6, 5, 4, 3, 2.
  3. Some os nove produtos.
  4. Calcule o resto da divisão da soma por 11.
  5. 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

  1. Tome os 9 primeiros dígitos mais o primeiro DV já calculado (10 dígitos).
  2. Multiplique-os pelos pesos 11, 10, 9, 8, 7, 6, 5, 4, 3, 2.
  3. Some os dez produtos.
  4. Calcule o resto da divisão por 11.
  5. 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-22 etc. 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


Abrir Validador de CPF →