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.

Atualizado em · Por Leonardo Gaertner

Achou um resultado errado ou tem uma sugestão? Avise por e-mail.

Como usar

  1. Digite ou cole o CPF, com ou sem pontos e traço.
  2. O resultado aparece assim que o número tiver 11 dígitos.
  3. 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.

JavaScript
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]);
}
Python
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
<?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.