Ferramentas
Guias

Validador de cartão bancário

Dev

Valide números de cartão com o checksum de Luhn e identifique a bandeira (Visa, Mastercard, Amex, UnionPay, Discover). Tudo no seu navegador.

100% no cliente Sem backend

URLs remotas não são buscadas; cole seu JSON diretamente.

A validação ocorre inteiramente no seu navegador. O número nunca é enviado ou armazenado.
Introduza um número de cartão para validar.
Nesta página

O que é um validador de número de cartão?#

Um número de cartão de pagamento (o PAN, ou Primary Account Number) não é uma string aleatória. Os seus dígitos iniciais são um prefixo BIN que identifica o emitente (Visa começa com 4, Mastercard com 51–55 ou 2221–2720, e por ai fora), o seu comprimento total cai numa banda estreita por bandeira, e o seu dígito final é um dígito de controle calculado para que o número inteiro satisfaça o algoritmo de Luhn. Um validador separa esses três sinais e diz-lhe, para qualquer string de dígitos, se está bem formado — não se é um cartão real, emitido e pagável.

Esta página faz exatamente isso, inteiramente no seu navegador. Escreva ou cole um número e ela identifica a bandeira do prefixo BIN, formata os dígitos em grupos legíveis de 4, corre o dígito de controle de Luhn, e verifica o comprimento contra o que essa bandeira realmente usa. É a ferramenta a que se recorre quando se constrói um formulário de checkout (a minha validação ao nível do campo corresponde às regras BIN reais?), quando se aprende como Luhn funciona, ou quando se verifica um arquivo de testes.

Nunca introduza um número de cartão real. Use PANs de teste (os que as gateways de pagamento publicam para uso em sandbox) ou números que gerou você mesmo para aprendizagem. Tudo aqui corre localmente e nada é transmitido, mas tratar qualquer PAN como sensível é o hábito certo.

Como usar#

  1. Leia a nota de privacidade por cima da entrada — confirma que o número nunca sai do seu navegador.
  2. Escreva ou cole um número no campo Número do cartão. Espaços, hífens, pontos e letras são retirados automaticamente; pode colar 4111-1111 1111.1111 e será lido como 4111111111111111.
  3. Clique em Exemplo para carregar um PAN de teste Visa conhecido, ou em Limpar para reiniciar.
  4. Leia o cartão de resultado:
    • A linha de veredito diz se o número está bem formado.
    • O emblema de bandeira mostra o emitente detetado (Visa, Mastercard, American Express, Discover, UnionPay) ou “Desconhecida” quando nenhum prefixo BIN corresponde.
    • Agrupado mostra os dígitos formatados em corridas de 4, prontos a copiar.
    • As três linhas de verificação reportam bandeira, Luhn (aprovado / reprovado) e comprimento (no intervalo / fora do intervalo) separadamente, para que se veja qual regra falhou em vez de apenas um “inválido” plano.

Principais recursos#

  • Dígito de controle de Luhn, implementado de raiz. O mesmo algoritmo que os cartões transportam desde os anos 1960: percorrer os dígitos da direita para a esquerda, dobrar todos os segundos, somar e verificar a divisibilidade por dez. O dígito de controle no fim é o que faz um erro de um único dígito falhar sempre.
  • Deteção de prefixo BIN para cinco bandeiras. Visa, Mastercard, American Express, Discover e UnionPay, correspondidos por ordem de prioridade para que as bandeiras com prefixo 6 (Discover 6011/65 versus UnionPay 62) não colidam.
  • Verificação de comprimento por bandeira. Amex tem 15 dígitos; Visa tem 13 ou 16; Discover e UnionPay podem ter de 16 a 19. A regra de comprimento aplicada é a da bandeira detetada, recuando para a gama geral 12–19 quando o prefixo é desconhecido.
  • Normalização de dígitos segura por locale. Glifos de dígitos arábico-índicos (٤١١١), persa, devanágari, bengali e largura total (12٣) são todos transliterados para ASCII 0–9 antes da validação, pelo que o mesmo PAN valida independentemente do método de entrada ou locale do usuário.
  • Agrupamento em 4 dígitos para exibição. Um PAN de 16 dígitos passa a 4111 1111 1111 1111; um Amex de 15 dígitos passa ao familiar 3782 8224 6310 005 (4-4-4-3).
  • Estritamente local. Não há backend nem pedido de rede. O PAN é processado em memória e renderizado no cartão de resultado no mesmo toque de tecla.

Exemplo detalhado#

Clique em Exemplo para carregar o PAN de teste Visa canónico, ou escreva 4111 1111 1111 1111. O cartão de resultado mostra:

verdict   Válido
brand     Visa
grouped   4111 1111 1111 1111
Luhn      Aprovado
length    No intervalo   (16 dígitos)

Agora experimente um PAN de teste American Express com espaçamento awkward — cole 3782 822463 10005. A ferramenta retira os espaços, deteta Amex do prefixo 37, e reformatá-lo no próprio agrupamento da Amex:

verdict   Válido
brand     American Express
grouped   3782 8224 6310 005
Luhn      Aprovado
length    No intervalo   (15 dígitos)

Finalmente, mude um dígito do número Visa para 4111 1111 1111 1112. A bandeira e o comprimento continuam bons, mas Luhn agora falha — e a ferramenta diz-lho explicitamente, em vez de esconder que verificação partiu:

verdict   Inválido
brand     Visa
grouped   4111 1111 1111 1112
Luhn      Reprovado
length    No intervalo   (16 dígitos)

Essa separação importa quando se está depurando um formulário: um Luhn a falhar aponta para um erro tipográfico, enquanto um comprimento a falhar aponta para a bandeira errada ou uma colagem truncada.

Perguntas frequentes#

”Válido” significa que o cartão efetivamente funciona?#

Não. “Válido” só significa que o número está bem formado — o seu prefixo mapeia a uma bandeira conhecida, o seu comprimento corresponde a essa bandeira, e satisfaz Luhn. Não diz nada sobre se o cartão alguma vez foi emitido, está ativo, ou tem fundos. Trate isto como uma verificação de formato, o mesmo modo como validaria a forma de um e-mail sem saber se a inbox existe.

Porque é que Luhn apanha todos os erros tipográficos de um só dígito?#

Por causa de como o dígito de controle dobra os dígitos alternados: mudar um dígito desloca a soma num valor que nunca é múltiplo de dez, e trocar dois dígitos adjacentes muda a soma de uma forma que Luhn também deteta (com uma exceção estreita). Foi concebido precisamente para apanhar os erros de digitação que os humanos fazem num teclado.

O número que colei tem dígitos não-latinos. Vai funcionar?#

Sim. O validador translitera glifos de dígitos arábico-índicos, persa, devanágari, bengali e largura total para ASCII antes de fazer mais alguma coisa, pelo que ٤١١١ é tratado como 4111. Isto mantém a validação consistente entre locales e métodos de entrada, e a forma “agrupada” exibida usa sempre dígitos ASCII.

Que bandeiras de cartão são reconhecidas?#

Visa, Mastercard, American Express, Discover e UnionPay, pelas suas gamas de prefixo BIN públicas. Números com um prefixo que não corresponde a nenhuma destas (por exemplo, a começar por 1 ou 9) reportam bandeira “Desconhecida”, mas se o comprimento está na gama geral 12–19 e Luhn passa, o número ainda é reportado como bem formado — simplesmente não é uma das cinco bandeiras modeladas.