Validador de cartão de crédito (Luhn e bandeira)
O validador de cartão de crédito confere se um número passa no algoritmo de Luhn, o dígito verificador dos cartões, e identifica a bandeira pelos primeiros dígitos: Visa, Mastercard, American Express, Hipercard, Diners, Discover e JCB. A conferência é feita no seu navegador e não diz se o cartão existe ou tem limite.
A validação confere o dígito final pelo algoritmo de Luhn e identifica a bandeira pelos primeiros dígitos. Não prova que o cartão existe, está ativo ou tem limite. O número digitado não sai do seu navegador, mas evite colar cartões reais em qualquer site.
Achou um resultado errado ou tem uma sugestão? Avise por e-mail.
Como usar
- Digite o número do cartão, com ou sem espaços.
- A partir de 12 dígitos, o resultado aparece na hora, com a bandeira.
- Se o tamanho não for o comum para a bandeira, aparece um aviso.
Como funciona
A ferramenta aplica o algoritmo de Luhn: da direita para a esquerda, dobra um dígito sim, outro não, subtrai 9 dos dobros maiores que 9 e soma tudo. O número é válido se a soma for múltipla de 10. Isso detecta qualquer dígito trocado e quase todas as inversões de dois dígitos vizinhos.
A bandeira vem dos primeiros dígitos: 4 é Visa, 51 a 55 e 2221 a 2720 são Mastercard, 34 e 37 são American Express, 606282 é Hipercard, e assim por diante. As faixas da Elo são muitas e mudam, por isso ela aparece como não identificada.
Passar no Luhn não quer dizer que o cartão existe, está ativo ou tem limite. Isso só a operadora responde, quando o pagamento é autorizado.
Em código
Para validar o número do cartão em código, aplique o algoritmo de Luhn e confira o tamanho. A bandeira e a existência do cartão ficam com o gateway de pagamento.
// Algoritmo de Luhn: da direita para a esquerda, dobra um dígito sim, outro não
function luhnConfere(digitos) {
let soma = 0;
for (let i = 0; i < digitos.length; i++) {
let n = Number(digitos[digitos.length - 1 - i]);
if (i % 2 === 1) {
n *= 2;
if (n > 9) n -= 9; // 7 × 2 = 14, e 1 + 4 = 5 (o mesmo que 14 - 9)
}
soma += n;
}
return soma % 10 === 0;
}
// Cartão: de 12 a 19 dígitos e o Luhn conferindo
function cartaoValido(numero) {
const d = numero.replace(/\D/g, '');
return d.length >= 12 && d.length <= 19 && luhnConfere(d);
}
// Dígito que completa um número para passar no Luhn (útil para gerar dados de teste)
function digitoLuhn(base) {
for (let dv = 0; dv <= 9; dv++) {
if (luhnConfere(`${base}${dv}`)) return dv;
}
} import re
def luhn_confere(digitos: str) -> bool:
soma = 0
for i, c in enumerate(reversed(digitos)):
n = int(c)
if i % 2 == 1:
n = n * 2 - 9 if n * 2 > 9 else n * 2
soma += n
return soma % 10 == 0
def cartao_valido(numero: str) -> bool:
d = re.sub(r"\D", "", numero)
return 12 <= len(d) <= 19 and luhn_confere(d) <?php
function luhnConfere(string $digitos): bool
{
$soma = 0;
foreach (str_split(strrev($digitos)) as $i => $c) {
$n = (int) $c;
if ($i % 2 === 1) {
$n = $n * 2 > 9 ? $n * 2 - 9 : $n * 2;
}
$soma += $n;
}
return $soma % 10 === 0;
}
function cartaoValido(string $numero): bool
{
$d = preg_replace('/\D/', '', $numero);
return strlen($d) >= 12 && strlen($d) <= 19 && luhnConfere($d);
} Perguntas frequentes
O validador diz se o cartão tem limite?
Não. Ele só confere o formato e o dígito verificador. Se o cartão existe, está ativo ou tem limite, só a operadora responde, na autorização do pagamento.
É seguro digitar o número do cartão aqui?
O número não sai do seu navegador. Mesmo assim, evite colar cartões reais em qualquer site: para testes, use números fictícios ou os cartões de teste do seu gateway.
Como saber a bandeira pelo número do cartão?
Pelos primeiros dígitos: 4 é Visa, 51 a 55 ou 2221 a 2720 é Mastercard, 34 ou 37 é American Express e 606282 é Hipercard. O validador mostra a bandeira ao conferir o número.
Outras ferramentas que podem ajudar
- Gerador de Cartão de CréditoGere números de cartão de crédito fictícios, válidos no algoritmo de Luhn, com validade e CVV, para testar formulários
- Validador de CPFConfira se um CPF é válido pelo cálculo dos dígitos verificadores
- Gerador de PessoasGere pessoas fictícias com nome, CPF válido, nascimento, e-mail, celular e endereço para testar sistemas
- Gerador de QR Code PIXGere o QR Code Pix e o código copia e cola com valor, para receber pagamentos ou testar integrações
- Validador de BoletoConfira se a linha digitável ou o código de barras de um boleto está correto e veja o banco, o valor e o vencimento
- Gerador de Chave PIXGere chaves Pix fictícias para testes de software: chave aleatória, CPF, CNPJ, e-mail e celular, no formato certo e com dígitos válidos