Validador de CPF online
O validador de CPF confere se o número tem 11 dígitos, se não são todos iguais e se os dois últimos dígitos batem com o cálculo de módulo 11. Isso indica que o formato é válido, mas não prova que o CPF existe nem a quem pertence.
Válido aqui quer dizer que os dois dígitos finais batem com o cálculo. Não prova que o CPF existe nem a quem pertence. O número digitado não sai do seu navegador.
Achou um resultado errado ou tem uma sugestão? Avise por e-mail.
Como usar
- Digite ou cole o CPF, com ou sem pontos e traço.
- O resultado aparece assim que o número tiver 11 dígitos.
- Se for inválido, leia o motivo logo abaixo do campo.
Como funciona
A validação repete o cálculo que gera o CPF: os nove primeiros dígitos, multiplicados por pesos de 10 a 2, definem o primeiro dígito verificador; os dez primeiros, com pesos de 11 a 2, definem o segundo. Em cada caso, divide-se a soma por 11 e o dígito é 0 se o resto for menor que 2, ou 11 menos o resto nos demais casos.
Se os dois dígitos calculados forem iguais aos dois últimos do número digitado, o CPF é considerado válido. Números com todos os dígitos iguais, como 000.000.000-00, são recusados.
Este validador não consulta a Receita Federal. Ele só verifica a regra matemática, então não informa se o CPF foi emitido, nem de quem é, nem se está regular.
Exemplo de cálculo com 529.982.247-25
Nove primeiros dígitos: 5 2 9 9 8 2 2 4 7
Soma com pesos de 10 a 2: 295
295 dividido por 11 deixa resto 9, então o primeiro dígito é 11 − 9 = 2
Com esse 2 incluído (dez dígitos, pesos de 11 a 2): soma 347
347 dividido por 11 deixa resto 6, então o segundo dígito é 11 − 6 = 5
Resultado: 529.982.247-25
Em código
Para validar CPF no seu sistema, este é o mesmo cálculo da ferramenta: remove a máscara, recusa sequências repetidas e confere os dois dígitos.
function validarCPF(valor) {
const cpf = String(valor).replace(/\D/g, '');
if (cpf.length !== 11) return false;
if (/^(\d)\1{10}$/.test(cpf)) return false; // 111.111.111-11 e parecidos
// Pesos de (tamanho + 1) até 2: 10 a 2 no primeiro dígito, 11 a 2 no segundo
const digito = (base) => {
let soma = 0;
for (let i = 0; i < base.length; i++) {
soma += Number(base[i]) * (base.length + 1 - i);
}
const resto = soma % 11;
return resto < 2 ? 0 : 11 - resto;
};
const d1 = digito(cpf.slice(0, 9));
const d2 = digito(cpf.slice(0, 10));
return d1 === Number(cpf[9]) && d2 === Number(cpf[10]);
} import re
def validar_cpf(valor: str) -> bool:
cpf = re.sub(r"\D", "", str(valor))
if len(cpf) != 11 or cpf == cpf[0] * 11: # 111.111.111-11 e parecidos
return False
def digito(base: str) -> int:
# Pesos de (tamanho + 1) até 2
soma = sum(int(d) * (len(base) + 1 - i) for i, d in enumerate(base))
resto = soma % 11
return 0 if resto < 2 else 11 - resto
return digito(cpf[:9]) == int(cpf[9]) and digito(cpf[:10]) == int(cpf[10]) <?php
function validarCpf(string $valor): bool
{
$cpf = preg_replace('/\D/', '', $valor);
if (strlen($cpf) !== 11 || preg_match('/^(\d)\1{10}$/', $cpf)) {
return false; // tamanho errado ou 111.111.111-11 e parecidos
}
// Pesos de (tamanho + 1) até 2
$digito = function (string $base): int {
$soma = 0;
$peso = strlen($base) + 1;
foreach (str_split($base) as $d) {
$soma += (int) $d * $peso--;
}
$resto = $soma % 11;
return $resto < 2 ? 0 : 11 - $resto;
};
return $digito(substr($cpf, 0, 9)) === (int) $cpf[9]
&& $digito(substr($cpf, 0, 10)) === (int) $cpf[10];
} Perguntas frequentes
Validar um CPF confirma que a pessoa existe?
Não. A validação confere apenas o formato e os dígitos verificadores. Para saber a situação cadastral de um CPF, é preciso consultar a Receita Federal.
Por que meu CPF aparece como inválido?
O motivo mais comum é um erro de digitação em algum dígito. A ferramenta informa se o problema é o tamanho, uma sequência de dígitos iguais ou os dígitos verificadores.
Preciso digitar pontos e traço?
Não. O campo aceita o CPF com ou sem pontuação e formata o número automaticamente.
O CPF que eu digito é enviado a algum servidor?
Não. A conferência é feita no seu navegador, e o número não é enviado nem armazenado pelo PraDev.
Guias sobre este assunto
- Máscara de CPF, CNPJ, CEP e telefone em JavaScriptMáscaras de CPF, CNPJ (inclusive alfanumérico), CEP e telefone em JavaScript puro, aplicadas enquanto a pessoa digita, e a formatação em Python e PHP.
- Como validar CPF em JavaScript, Python e PHPAprenda a calcular os dígitos verificadores do CPF e veja funções prontas e testadas para validar CPF em JavaScript, Python e PHP.
Outras ferramentas que podem ajudar
- Gerador de CPFGere CPF válido para testar sistemas e formulários
- Validador de CNPJConfira se um CNPJ é válido, inclusive no novo formato alfanumérico com letras
- Gerador de CNPJGere CNPJ válido para testes, no formato numérico ou no novo alfanumérico da Receita Federal
- Gerador de CNHGere número de CNH válido para testar sistemas e formulários
- Gerador de PessoasGere pessoas fictícias com nome, CPF válido, nascimento, e-mail, celular e endereço para testar sistemas
- Gerador de PIS/PASEPGere número de PIS, PASEP, NIS ou NIT válido para testar sistemas de RH e cadastros