O Gerador De CPF O Gerador De CPF

Algoritmo do CPF: Como Funciona o Módulo 11

O CPF tem 11 dígitos no formato XXX.XXX.XXX-DD, onde os 9 primeiros identificam a pessoa e os 2 últimos (DD) são dígitos verificadores calculados pelo algoritmo de módulo 11. É esse cálculo que o gerador de CPF e o validador de CPF usam internamente para produzir e conferir números.

Estrutura do CPF

  5  2  9  .  9  8  2  .  2  4  7  -  2  5
  ─────────────────────────────────    ───
  9 dígitos base                       D1 D2 (verificadores)

Os 8 primeiros dígitos compõem a base numérica do documento. O 9º dígito indica a região fiscal de emissão. D1 e D2 são derivados dos dígitos anteriores: se qualquer dígito base mudar, os verificadores mudam junto.

Passo 1: Primeiro dígito verificador (D1)

Multiplique cada um dos 9 dígitos base pelo peso decrescente de 10 a 2 e some:

Dígito:   5    2    9    9    8    2    2    4    7
Peso:    10    9    8    7    6    5    4    3    2

Soma = 5×10 + 2×9 + 9×8 + 9×7 + 8×6 + 2×5 + 2×4 + 4×3 + 7×2
     = 50 + 18 + 72 + 63 + 48 + 10 + 8 + 12 + 14
     = 295

Calcule o resto da divisão por 11:

295 % 11 = 295 - (26 × 11) = 295 - 286 = 9

Aplique a regra:

resto < 2  →  D1 = 0
resto >= 2 →  D1 = 11 - resto

11 - 9 = 2D1 = 2

Passo 2: Segundo dígito verificador (D2)

Agora use os 9 dígitos base + D1 (10 dígitos), com pesos de 11 a 2:

Dígito:   5    2    9    9    8    2    2    4    7    2
Peso:    11   10    9    8    7    6    5    4    3    2

Soma = 5×11 + 2×10 + 9×9 + 9×8 + 8×7 + 2×6 + 2×5 + 4×4 + 7×3 + 2×2
     = 55 + 20 + 81 + 72 + 56 + 12 + 10 + 16 + 21 + 4
     = 347
347 % 11 = 347 - (31 × 11) = 347 - 341 = 6

11 - 6 = 5 → D2 = 5

Resultado: CPF 529.982.247-25. Ambos os verificadores conferem.

Pseudocódigo de validação

função validarCPF(cpf):
    dígitos = remover_não_numéricos(cpf)
    se comprimento(dígitos) ≠ 11 → inválido
    se todos os dígitos são iguais → inválido

    // Primeiro verificador (D1)
    soma = Σ dígitos[i] × (10 - i), para i = 0..8
    resto = soma % 11
    d1 = (resto < 2) ? 0 : 11 - resto
    se dígitos[9] ≠ d1 → inválido

    // Segundo verificador (D2)
    soma = Σ dígitos[i] × (11 - i), para i = 0..9
    resto = soma % 11
    d2 = (resto < 2) ? 0 : 11 - resto
    se dígitos[10] ≠ d2 → inválido

    retornar válido

Para implementações prontas e testadas, veja validar CPF em JavaScript e as demais 9 linguagens disponíveis.

Geração em JavaScript

O processo inverso: gere 9 dígitos aleatórios, calcule D1 e D2 com o mesmo algoritmo e concatene. É exatamente isso que o gerador de CPF faz ao criar números para teste.

function gerarCPF() {
  var digits = [];
  for (var i = 0; i < 9; i++) {
    digits.push(Math.floor(Math.random() * 10));
  }

  // Primeiro verificador
  var soma = 0;
  for (var i = 0; i < 9; i++) {
    soma += digits[i] * (10 - i);
  }
  var resto = soma % 11;
  digits.push(resto < 2 ? 0 : 11 - resto);

  // Segundo verificador
  soma = 0;
  for (var i = 0; i < 10; i++) {
    soma += digits[i] * (11 - i);
  }
  resto = soma % 11;
  digits.push(resto < 2 ? 0 : 11 - resto);

  return digits.join('');
}

Casos especiais

CasoComportamento
Resto = 0 ou 1Dígito verificador = 0 (não 11 - resto)
Todos os dígitos iguaisRejeitado. 111.111.111-11 passa no módulo 11 mas não é CPF válido
Entrada com pontuaçãoRemover . e - antes de processar
Menos de 11 dígitosInválido

Para testar rapidamente se um número segue essas regras, use o validador de CPF online. Também oferecemos funções prontas para validar CPF em 9 linguagens de programação.