# 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.

- Endereço oficial: https://pradev.com.br/validador-de-cpf
- Categoria: Documentos brasileiros
- Tipo: Validador
- Atualizado em: 2026-09-30
- Autor: Leonardo Gaertner (https://pradev.com.br/sobre)
- Preço: grátis, sem cadastro. O processamento acontece no navegador de quem usa.

## 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

```text
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]);
}
```

_JavaScript_

```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])
```

_Python_

```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];
}
```

_PHP_

## 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

- [Máscara de CPF, CNPJ, CEP e telefone em JavaScript](https://pradev.com.br/guias/mascara-cpf-cnpj-cep-telefone-javascript): Má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 PHP](https://pradev.com.br/guias/como-validar-cpf-em-javascript): Aprenda a calcular os dígitos verificadores do CPF e veja funções prontas e testadas para validar CPF em JavaScript, Python e PHP.

## Ferramentas relacionadas

- [Gerador de CPF](https://pradev.com.br/gerador-de-cpf): Gere CPF válido para testar sistemas e formulários. Grátis, com ou sem pontuação, direto no navegador. Só para testes de software.
- [Validador de CNPJ](https://pradev.com.br/validador-de-cnpj): Confira se um CNPJ é válido, inclusive no novo formato alfanumérico com letras. Grátis, sem cadastro, direto no navegador.
- [Gerador de CNPJ](https://pradev.com.br/gerador-de-cnpj): Gere CNPJ válido para testes, no formato numérico ou no novo alfanumérico da Receita Federal. Grátis, direto no navegador.
- [Gerador de CNH](https://pradev.com.br/gerador-de-cnh): Gere número de CNH válido para testar sistemas e formulários. Os dois dígitos verificadores estão certos. Grátis, no navegador, só para testes.
- [Gerador de Pessoas](https://pradev.com.br/gerador-de-pessoas): Gere pessoas fictícias com nome, CPF válido, nascimento, e-mail, celular e endereço para testar sistemas. Exporta JSON e CSV. Grátis, no navegador.
- [Gerador de PIS/PASEP](https://pradev.com.br/gerador-de-pis-pasep): Gere número de PIS, PASEP, NIS ou NIT válido para testar sistemas de RH e cadastros. Com ou sem pontuação, grátis, no navegador, só para testes.
