cnpjcpf.
Código · Python

Gerar CPF em Python

Função que sorteia 9 dígitos e calcula os dois verificadores pelo módulo 11, devolvendo um CPF matematicamente válido — com ou sem máscara. Para teste e QA.

A função

Sorteia os 9 dígitos da base e calcula os dois verificadores pelo mesmo módulo 11 da validação. O resultado é sempre um CPF matematicamente válido.

Python
import random

def _dv_cpf(nums, peso_inicial: int) -> int:
    soma = sum(n * (peso_inicial - i) for i, n in enumerate(nums))
    resto = soma % 11
    return 0 if resto < 2 else 11 - resto

def generate_cpf(mask: bool = False) -> str:
    base = [random.randint(0, 9) for _ in range(9)]
    d1 = _dv_cpf(base, 10)
    d2 = _dv_cpf(base + [d1], 11)
    s = ''.join(map(str, base + [d1, d2]))
    if mask:
        return f'{s[0:3]}.{s[3:6]}.{s[6:9]}-{s[9:11]}'
    return s

generate_cpf()             # '52998224725'
generate_cpf(mask=True)    # '529.982.247-25'

É o inverso da validação: em vez de conferir os dígitos verificadores, a função os calcula. Os pesos são 10..2 para o 1º DV e 11..2 para o 2º.

Em lote

Para popular uma base de teste, gere quantos precisar — todos únicos do ponto de vista do cálculo, ainda que possa haver repetição em volumes grandes:

Python
lote = [generate_cpf() for _ in range(1000)]
publicidade

Cuidados

  • Válido ≠ real. O CPF gerado passa no módulo 11, mas não foi emitido pela Receita a ninguém. Serve para teste e QA.
  • Use só para desenvolvimento. Usar um número fictício para se passar por outra pessoa é crime. Veja é legal gerar CPF?.
  • O 9º dígito é a região fiscal. Se você precisa de CPF "por estado", fixe esse dígito antes de calcular os DV — explicação em região fiscal do CPF.
  • Guarde sem máscara e formate só na exibição.

Continue

Gerador verificado por execução: milhares de CPFs gerados e validados pela função de validação oficial, todos válidos. Algoritmo módulo 11. Revisado em 06/2026.