Cartão fictício + explicação técnica
Cartão de Crédito Válido (Luhn / mod-10)
Cartão válido significa que passa no algoritmo Luhn (mod-10), o checksum criado por Hans Peter Luhn em 1954 na IBM e adotado pela ISO 7812 pra numeração de cartões. Todo cartão gerado pelo FakeForge tem o último dígito calculado corretamente. Abaixo, o gerador + explicação passo a passo do algoritmo.
Clique em Gerar para começar
O que torna um cartão "válido"
Um número de cartão é válido quando o último dígito (dígito verificador ou check digit) é o resultado correto do algoritmo Luhn aplicado aos 15 dígitos anteriores (ou 14, no caso de Amex de 15 dígitos totais). Se você digitar 1 dígito errado no meio do número, o Luhn detecta. Se trocar 2 dígitos adjacentes, também detecta. Por isso ele é usado no mundo todo pra validar entrada de cartão no front-end antes de mandar pro gateway.
Válido não significa emitido. Ninguém precisou aprovar o cartão pra ele ser válido matematicamente - qualquer sequência de 16 dígitos onde o último bate com o cálculo é válida. Só emissores (Visa, Master, Elo) sabem quais desses números foram realmente atribuídos a titulares reais.
Algoritmo Luhn passo a passo
Pra validar o cartão 4485 1234 5678 9012:
- Da direita pra esquerda, dobra cada dígito em posição par (segundo, quarto, sexto...).
- Se o resultado da multiplicação passar de 9, soma os dígitos (ex: 8 × 2 = 16 → 1 + 6 = 7).
- Soma todos os dígitos (os que foram dobrados + os que não foram).
- Se o total for múltiplo de 10, o cartão é válido. Se não, é inválido.
Pra gerar um cartão válido (o que o FakeForge faz), você calcula tudo isso menos o último dígito, depois escolhe o último dígito que faz o total virar múltiplo de 10. Detalhes completos com implementação em JavaScript no artigo Algoritmo Luhn.
Implementação em JavaScript
function isValidLuhn(cardNumber: string): boolean {
const digits = cardNumber.replace(/\D/g, "").split("").map(Number);
let sum = 0;
let shouldDouble = false;
for (let i = digits.length - 1; i >= 0; i--) {
let digit = digits[i];
if (shouldDouble) {
digit *= 2;
if (digit > 9) digit -= 9;
}
sum += digit;
shouldDouble = !shouldDouble;
}
return sum % 10 === 0;
}
// Testar com cartão gerado pelo FakeForge
isValidLuhn("4485 1234 5678 9012"); // true ou false
Prefixos BIN por bandeira
Antes de validar Luhn, o front-end costuma identificar a bandeira pelo prefixo (BIN - Bank Identification Number). O FakeForge respeita esses prefixos ao gerar:
- Visa: começa com 4 (13, 16 ou 19 dígitos)
- Mastercard: 51-55 ou 2221-2720 (16 dígitos)
- Elo: prefixos específicos como 636368, 438935, 504175, 451416, 509046 (16 dígitos)
- Hipercard: 606282 (16 dígitos)
- Amex: 34 ou 37 (15 dígitos, CVV de 4)
Perguntas Frequentes
Cartão válido é diferente de cartão fake?+
Não. Todo cartão gerado por ferramentas de teste sérias (incluindo o FakeForge) é ao mesmo tempo válido (passa Luhn) e fake (não vinculado a conta real). Cartão sem Luhn é 'aleatório' e falha na primeira validação de front-end.
Cartão gerado passa no BIN Check?+
Sim pro BIN em si (prefixo da bandeira). Não pra API de BIN lookup que consulta emissor real - essas APIs sabem quais faixas de BIN foram emitidas pra quais bancos. Um cartão fake com prefixo 4485 pode não corresponder a nenhum banco existente pra esse BIN.
Luhn é a única validação de cartão?+
É a primeira. Depois vem verificação de bandeira (BIN), formato (dígitos por bandeira), CVV, expiry date, e finalmente o call ao gateway que checa se o número existe + tem saldo + passa 3DS. O FakeForge cobre as 4 primeiras camadas.
Cartão válido pra Netflix teste?+
Serviços que checam apenas Luhn no front vão aceitar o cartão gerado. Serviços que fazem pré-autorização (bloqueio de R$1 ou similar) vão rejeitar porque o número não corresponde a conta real. Netflix faz pré-auth, então não passa - use o teste gratuito oficial.