Validador de cartão
Confira o algoritmo de Luhn e a bandeira no seu navegador. Nenhum número é enviado.
A checagem acontece só neste navegador. Nada é enviado a um servidor. O Luhn não confirma cartão existente e não autoriza pagamento. Prefira os exemplos fictícios.
Validador de cartão
Como o Luhn funciona
- Fique só com os dígitos. Espaços e traços não entram na conta.
- Da direita para a esquerda, dobre um dígito e pule o outro. O último dígito não é dobrado.
- Se o dobro passar de 9, subtraia 9 (é o mesmo que somar os dois algarismos).
- Some tudo. O número passa quando essa soma é múltipla de 10.
Exemplos de conferência
- Válido: 4111 1111 1111 1111 (Visa) e 3782 822463 10005 (American Express).
- Inválido: 4111 1111 1111 1112. Só o último dígito mudou e o Luhn deixa de fechar.
Bandeira é um palpite pelo início do número (Visa, Mastercard, American Express, Elo, Hipercard ou Diners). Elo que começa com 4 não deve ser lido como Visa.
JavaScript para colar no seu programa
O trecho abaixo é só texto nesta página. Ele não envia o número para lugar nenhum.
function luhnValido(numero) {
const digitos = String(numero).replace(/\D/g, '');
let soma = 0;
let dobrar = false;
for (let i = digitos.length - 1; i >= 0; i -= 1) {
let valor = Number(digitos[i]);
if (dobrar) {
valor *= 2;
if (valor > 9) {
valor -= 9;
}
}
soma += valor;
dobrar = !dobrar;
}
return /^\d{13,19}$/.test(digitos) && soma % 10 === 0;
}Como usar
- Digite ou cole o número, com ou sem espaços.
- A leitura do Luhn e da bandeira aparece na hora.
- Use os exemplos válido e inválido para comparar.
- Copie o trecho de JavaScript se quiser repetir a conta no seu programa.
Perguntas frequentes
O número do cartão é enviado?
Não. A validação fica no navegador e nada é enviado a um servidor.
Luhn válido significa que o cartão existe?
Não. O algoritmo só confere o dígito verificador. Não consulta banco, bandeira nem autoriza pagamento.
Por que um número que começa com 4 pode ser Elo?
Alguns BIN da Elo também começam com 4. A ferramenta usa o prefixo mais específico, não só o primeiro dígito.