Ú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

  1. 1Digite ou cole o número. Com ou sem espaços — tanto faz.
  2. 2Veja o resultado na hora. A validação roda a cada tecla digitada, sem precisar clicar em nada.
  3. 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

  1. Partindo do último dígito, dobre cada dígito em posição par (contando da direita).
  2. Se o dobro passar de 9, subtraia 9 do resultado.
  3. Some todos os dígitos (os dobrados e os não dobrados).
  4. 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.

Copiado com sucesso!