cnpjcpf.
Código · PHP

Gerar CPF em PHP

Função sem dependências que gera um CPF matematicamente válido para teste: sorteia 9 dígitos de base com random_int e calcula os dois verificadores pelo módulo 11. Com opção de máscara. Números fictícios, só para dev e QA.

A função

PHP
<?php
function generateCpf(bool $mask = false): string {
    $base = '';
    for ($i = 0; $i < 9; $i++) $base .= random_int(0, 9);
    $dv = function (string $b): int {
        $n = strlen($b); $s = 0;
        for ($i = 0; $i < $n; $i++) $s += (int)$b[$i] * (($n + 1) - $i);
        $r = $s % 11; return $r < 2 ? 0 : 11 - $r;
    };
    $d1 = $dv($base); $d2 = $dv($base . $d1);
    $cpf = $base . $d1 . $d2;
    return $mask ? preg_replace('/(\d{3})(\d{3})(\d{3})(\d{2})/', '$1.$2.$3-$4', $cpf) : $cpf;
}

echo generateCpf();      // '11144477735'
echo generateCpf(true);  // '111.444.777-35'

Sorteia 9 dígitos de base com random_int, calcula o 1º verificador sobre esses 9 dígitos e o 2º sobre os 10 (já incluindo o 1º DV). O resto da divisão por 11 vira o dígito: $r < 2 ? 0 : 11 - $r. É o módulo 11 aplicado para frente.

Validar o que você gerou

Útil em teste: gere, valide, garanta que o algoritmo fecha. A página de validar CPF em PHP traz a função isValidCpf que confere a saída.

PHP
var_dump(isValidCpf(generateCpf())); // true
publicidade

Cuidados

  • Número fictício, não real. A função gera um CPF que passa no módulo 11, mas não corresponde a nenhuma pessoa. É para teste de software e QA — ver se é legal gerar CPF/CNPJ.
  • Válido ≠ existe. Consistência matemática não é emissão pela Receita. Não use saída de gerador como dado de pessoa real.
  • Sequências repetidas (11111111111) são tecnicamente consistentes no módulo 11; bons validadores as reprovam de propósito, mas o gerador quase nunca as produz (base aleatória).
  • A matriz é sempre 0001? Isso é do CNPJ. No CPF os 9 dígitos de base são todos aleatórios; só os 2 verificadores são calculados.
  • Guarde sem máscara (só os 11 dígitos) e formate só na exibição.

Continue

Perguntas frequentes

Como gerar um CPF válido em PHP?
Com uma função que sorteia 9 dígitos de base com random_int(0, 9) e calcula os dois dígitos verificadores pelo módulo 11. Sem bibliotecas, só a PHP padrão.
O CPF gerado é de uma pessoa real?
Não. A função produz um número que passa no módulo 11, mas não corresponde a ninguém. É para teste de software e QA — veja se é legal gerar CPF/CNPJ.
Por que usar random_int e não rand?
O random_int é criptograficamente seguro e não tem viés. Para massa de teste o rand serve, mas o random_int é a escolha padrão correta no PHP moderno.
Código verificado por execução: a saída passa no validador (módulo 11 oficial). Números fictícios para teste de software. Revisado em 06/2026.