Última atualização: 5 de setembro de 2026
Validador de Cartão de Crédito
Verifique de imediato se um número de cartão passa no algoritmo de Luhn.
Nota de conformidade: a validação roda inteiramente no seu navegador (JavaScript client-side). O número digitado não é enviado, armazenado ou logado em nenhum servidor.
Como usar o Validador de Cartão de Crédito
- 1Digite ou cole o número. Com ou sem espaços — tanto faz.
- 2Veja o resultado na hora. A validação roda a cada tecla digitada, sem precisar clicar em nada.
- 3Para validar vários de uma vez, cole uma lista com um número por linha — cada um aparece com seu próprio resultado.
O que o algoritmo de Luhn confirma (e o que ele não confirma)
O algoritmo de Luhn é um checksum simples, criado nos anos 1950, adotado por praticamente todas as bandeiras de cartão (Visa, Mastercard, American Express, Discover) como a primeira barreira contra números digitados errado ou inventados ao acaso. Ele soma os dígitos do número alternando a duplicação a partir da direita e confere se o total é múltiplo de 10. Isso garante que o número é estruturalmente coerente — mas não confirma que o cartão existe, está ativo, tem limite disponível ou pertence a alguém.
Passo a passo do cálculo
- Partindo do último dígito, dobre cada dígito em posição par (contando da direita).
- Se o dobro passar de 9, subtraia 9 do resultado.
- Some todos os dígitos (os dobrados e os não dobrados).
- Se o total for múltiplo de 10, o número passa no Luhn.
É exatamente essa rotina que o Gerador de Cartão de Crédito do QALabs usa para calcular o último dígito de cada número fictício — por isso os dois formam um par natural: gere um número aqui, confira ali (ou vice-versa).
Exemplo de código: a mesma validação em JavaScript
A rotina executada a cada tecla digitada nesta página pode ser reaproveitada como uma função standalone em qualquer script de teste:
function isValidLuhn(number) {
const digits = number.replace(/\D/g, '');
if (digits.length < 12) return false;
let sum = 0;
let shouldDouble = false;
for (let i = digits.length - 1; i >= 0; i--) {
let digit = parseInt(digits[i], 10);
if (shouldDouble) {
digit *= 2;
if (digit > 9) digit -= 9;
}
sum += digit;
shouldDouble = !shouldDouble;
}
return sum % 10 === 0;
}
Perguntas Frequentes
Um número que passa neste validador é um cartão real e ativo?
Não. Este validador confirma apenas que o número passa no algoritmo de Luhn. Isso não significa que o número corresponda a um cartão emitido e ativo — essa confirmação só a operadora do cartão pode fazer.
Por que usar o algoritmo de Luhn em vez de conferir com o banco?
O Luhn é a primeira camada de validação que qualquer sistema de pagamento aplica antes de sequer consultar o adquirente. Testar essa camada isoladamente, sem depender de uma operadora real, é exatamente o que faz sentido em ambiente de desenvolvimento.
O número precisa estar formatado com espaços para ser validado?
Não, o validador aceita o número com ou sem espaços, normalizando a entrada antes de calcular o Luhn.
Esse número de cartão é enviado para algum servidor durante a validação?
Não. O cálculo do Luhn roda inteiramente no seu navegador; nenhum número digitado é transmitido ou armazenado.