Gerador de CPF para teste de software
Números com dígitos verificadores consistentes para você testar software. Em lote de até 100, por região fiscal, com validador na mesma página. Nada sai do seu navegador.
Leia antes de copiar
Os números desta página são matematicamente válidos — passam na conta dos dígitos verificadores. O que eles não são é garantia de não pertencerem a ninguém: o gerador sorteia dígitos do mesmo espaço de onde saem os CPFs emitidos e não consulta base alguma, então um número daqui pode coincidir com o CPF de uma pessoa real. Não há como saber — só a Receita Federal sabe.
Servem para uma coisa: testar software. Popular um banco de desenvolvimento, exercitar a máscara de um formulário, rodar um teste automatizado. Usar documento falso para se identificar perante alguém é crime — Código Penal, art. 307. ver o artigo no Planalto →
Seu número de teste, destrinchado
O que compõe este número
Este CPF é de alguém?
Não sabemos, e esta página não teria como saber. O gerador sorteia nove dígitos e calcula os dois últimos pela regra pública do módulo 11, sem consultar base alguma — a titularidade de um CPF só existe nos sistemas da Receita Federal. Como os CPFs emitidos vêm desse mesmo espaço de nove dígitos, é perfeitamente possível que o número acima já tenha sido emitido para alguém. Passar na conta dos verificadores diz que o número é bem formado, e nada além disso — não diz que ele está livre. É por isso que ele serve no seu ambiente de teste, e só nele.
O lote, pronto para copiar
335.165.708-06
Um CPF por linha. O CSV sai com cabeçalho cpf e o JSON como lista
de textos — os dois montados no seu navegador, sem passar por servidor.
Como melhorar esta calculadora?
Faltou uma verba, o número saiu diferente do seu contracheque ou alguma palavra ficou confusa? Escreva. Quem lê é a pessoa que mantém o site, e é daí que sai a próxima versão desta página.
Abre seu programa de e-mail com o assunto e a página já preenchidos, e com as perguntas que ajudam a entender o caso. Sem formulário, sem cadastro, sem cookie.
publicidade
Validar um CPF
Cole um número para conferir se ele passa na conta dos dígitos verificadores. É a mesma conferência que o gerador usa e roda no seu navegador — o número digitado não é enviado a lugar nenhum. Ela responde se o número é bem formado, nunca se ele existe ou de quem é.
Veredito
Como o dígito verificador é calculado
O CPF tem 11 dígitos: nove de base e dois verificadores no fim. Os dois últimos não
são sorteados — saem de uma conta de módulo 11 sobre os anteriores, e é ela que
permite a um sistema recusar um número digitado errado sem consultar ninguém. Vamos
calcular os dois de 111.444.777-35.
A conta abaixo acompanha o CPF do validador: troque o número lá e os passos daqui se refazem sobre ele.
1. Primeiro verificador: pesos de 10 a 2
Multiplique cada um dos nove dígitos da base (111444777) por um peso que começa em 10 e desce até 2:
1×10 + 1×9 + 1×8 + 4×7 + 4×6 + 4×5 + 7×4 + 7×3 + 7×2 = 162
Divida por 11 e olhe o resto: 162 ÷ 11 = 14, resto 8. A regra é resto menor que 2 vira dígito 0; caso contrário o dígito é
11 − resto. Aqui, 11 − 8 = 3: o primeiro verificador é 3.
2. Segundo verificador: pesos de 11 a 2, já com o primeiro
Agora a base tem dez dígitos (1114447773) e os
pesos começam em 11:
1×11 + 1×10 + 1×9 + 4×8 + 4×7 + 4×6 + 7×5 + 7×4 + 7×3 + 3×2 = 204
204 ÷ 11 = 18, resto 6 →
11 − 6 = 5. O segundo verificador é
5, e a base fecha em
111.444.777-35.
Se o CPF que você digitou termina em outros dois dígitos, é por isso que o validador recusa: a base é a mesma, mas os verificadores que ela produz são estes.
3. A exceção que quase todo validador esquece
As dez sequências de dígitos repetidos — 00000000000,
11111111111 e assim por diante — passam nessa conta. É
coincidência aritmética, não erro seu: por isso a regra precisa recusá-las numa
linha à parte, antes do módulo 11. É o caso de teste que separa um validador pronto
de um validador quase pronto.
Código pronto em JavaScript, Python e PHP
As três implementações fazem o que a seção acima descreve: limpam o que não é dígito, recusam tamanho errado, recusam sequência repetida e conferem os dois verificadores. Use à vontade, inclusive em projeto comercial.
JavaScript
function validarCPF(valor) {
const d = valor.replace(/\D+/g, '');
if (d.length !== 11) return false;
if (/^(\d)\1{10}$/.test(d)) return false;
const dv = (n) => {
let soma = 0;
for (let i = 0; i < n; i++) soma += +d[i] * (n + 1 - i);
const resto = soma % 11;
return resto < 2 ? 0 : 11 - resto;
};
return dv(9) === +d[9] && dv(10) === +d[10];
} Python
import re
def validar_cpf(valor: str) -> bool:
d = re.sub(r"\D+", "", valor)
if len(d) != 11 or d == d[0] * 11:
return False
def dv(n: int) -> int:
soma = sum(int(d[i]) * (n + 1 - i) for i in range(n))
resto = soma % 11
return 0 if resto < 2 else 11 - resto
return dv(9) == int(d[9]) and dv(10) == int(d[10]) PHP
function validarCpf(string $valor): bool {
$d = preg_replace('/\D+/', '', $valor);
if (strlen($d) !== 11) return false;
if (preg_match('/^(\d)\1{10}$/', $d)) return false;
$dv = function (int $n) use ($d): int {
$soma = 0;
for ($i = 0; $i < $n; $i++) $soma += $d[$i] * ($n + 1 - $i);
$resto = $soma % 11;
return $resto < 2 ? 0 : 11 - $resto;
};
return $dv(9) == (int) $d[9] && $dv(10) == (int) $d[10];
}
Um bom conjunto de casos de teste: 111.444.777-35 (passa),
111.111.111-11 (repetido, precisa ser recusado),
123.456.789-00 (verificador errado) e 123 (tamanho
errado).
O nono dígito e as dez regiões fiscais
O nono dígito — o último antes dos dois verificadores — indica a região fiscal da Receita Federal em que o número foi emitido. É a única parte do CPF que carrega informação, e é o que usar quando o seu teste precisa de números plausíveis de um estado específico.
| Nono dígito | Região | Estados |
|---|---|---|
| 1 | 1ª região | DF, GO, MS, MT, TO |
| 2 | 2ª região | AC, AM, AP, PA, RO, RR |
| 3 | 3ª região | CE, MA, PI |
| 4 | 4ª região | AL, PB, PE, RN |
| 5 | 5ª região | BA, SE |
| 6 | 6ª região | MG |
| 7 | 7ª região | ES, RJ |
| 8 | 8ª região | SP |
| 9 | 9ª região | PR, SC |
| 0 | 10ª região | RS |
A décima região usa o dígito 0 — por isso a ordem fiscal e a ordem numérica não coincidem no fim da tabela.
Para que serve — e para que não serve
Serve
- Popular banco de desenvolvimento. Uma tabela de clientes com CPF como
chave única precisa de números que não se repitam e que passem na validação da
própria aplicação. O lote desta página sai sem repetição, e por isso o
INSERTnão estoura no meio. - Exercitar máscara e validação de formulário. Conferir que o campo aceita com e sem pontuação, que recusa 10 dígitos, que recusa sequência repetida e que mostra a mensagem certa em cada caso.
- Teste automatizado e QA. Fixture de teste de integração, cadastro de homologação, carga de dados para medir desempenho — sempre em ambiente que é seu.
- Estudar o algoritmo. Refazer à mão a conta de módulo 11, como na seção acima, é o jeito mais rápido de entender por que um dígito trocado é detectado.
Não serve
- Identificar-se perante alguém. Cadastro em site de terceiro, compra, contrato, atendimento. Isso é uso de documento falso, é crime (CP, art. 307) e é rastreável.
- Burlar validação de sistema alheio. Passar na conta dos verificadores não torna o número seu. Um sistema que consulte a Receita recusa na hora — ou, se o número por acaso for de alguém, você acaba de usar o CPF de outra pessoa. Nos dois casos a tentativa fica registrada.
- Descobrir de quem é um CPF. Esta página não consulta base nenhuma, e não existe consulta pública de titularidade de CPF.
Para as contas que valem dinheiro de verdade — Salário líquido, Rescisão trabalhista ou Férias — veja as calculadoras trabalhistas. Se o que você precisa é somar tempo, a calculadora de horas resolve. Os outros geradores ficam no hub da categoria.
Perguntas frequentes
O CPF gerado aqui é de alguma pessoa?
Não sabemos, e quem garante que não está prometendo o que não pode. O gerador só faz a conta dos dois dígitos verificadores sobre nove dígitos sorteados: ele não consulta base nenhuma e não tem como saber se aquele número já foi emitido. Como os CPFs em uso saem do mesmo espaço de nove dígitos, existe chance real de coincidência com o CPF de uma pessoa de verdade. Só a Receita Federal sabe quais números existem. É exatamente por isso que estes números servem no seu ambiente de teste e em lugar nenhum além dele.
Posso usar esse número para me cadastrar em algum site?
Não. Estes números existem para testar software que você mesmo está construindo: popular um banco de desenvolvimento, exercitar a máscara de um formulário, rodar um teste automatizado. Usar documento falso para se identificar perante alguém é crime, previsto no art. 307 do Código Penal, com pena de detenção e multa.
Como validar um CPF em JavaScript?
Limpe tudo que não for dígito, recuse o que não tiver 11 dígitos e recuse as dez sequências de dígitos repetidos. Depois calcule o primeiro verificador com pesos de 10 a 2 sobre os nove dígitos da base e o segundo com pesos de 11 a 2 sobre os dez primeiros: some, tire o resto da divisão por 11 e use 0 quando o resto for menor que 2, senão 11 menos o resto. A função pronta, em JavaScript, Python e PHP, está na seção de código desta página.
O que significa o nono dígito do CPF?
Ele indica a região fiscal da Receita Federal em que o número foi emitido — são dez regiões, cada uma com um dígito, e a décima usa o zero. O dígito 8, por exemplo, é São Paulo; o 7 é Espírito Santo e Rio de Janeiro. É a única parte do número que carrega informação: os oito primeiros são sequenciais e os dois últimos são calculados.
Por que 111.111.111-11 é recusado se a conta fecha?
Porque a conta fecha mesmo. As dez sequências de dígitos repetidos passam no módulo 11 por coincidência aritmética, e é justamente por isso que todo validador sério as recusa numa regra à parte. Se o seu validador aceita 111.111.111-11, ele está incompleto — e este é o caso de teste que revela isso.
Sobre o uso: os números desta página nascem de aritmética pública, sem consulta a cadastro nenhum — e por isso mesmo podem coincidir com o CPF de uma pessoa real. Usar documento falso para se identificar é crime — Decreto-Lei 2.848/1940 (Código Penal), art. 307. ver na íntegra →