Skip to content
CardTools

PAN & BIN Validator

Luhn check, length rules and scheme range matching — including the overlaps nobody warns you about.

Runs entirely in your browser. Nothing you paste is uploaded, logged or stored.

This runs entirely in your browser. The number you type is never sent anywhere, and nothing is stored — but as a matter of habit, prefer test numbers over live cardholder data.
Spaces and dashes are ignored
Try:
Enter a card number to check its check digit, length and scheme.

What a card number is made of

Under ISO/IEC 7812 a PAN is up to nineteen digits: an issuer identification number identifying the scheme and issuer, an account identifier assigned by that issuer, and a single Luhn check digit at the end.

The IIN used to be six digits. It became eight in 2017, and both lengths are still in circulation — plenty of production BIN tables are keyed on six. If you are building anything that maps a prefix to an issuer, handle both.

Why we show several schemes at once

Because the ranges genuinely overlap. Elo is carved out of Visa's 4 and Mastercard's 5 blocks, so an Elo BIN legitimately matches all three on a short prefix. Troy shares 65 with Discover. RuPay shares 81 with UnionPay allocations. Discover's 622126-622925 block is the UnionPay co-brand range.

Any tool that returns exactly one scheme for these prefixes is guessing. Real routing decisions come from the acquirer's BIN table, which is licensed commercial data keyed on far more than a prefix — and this site deliberately does not pretend to have one.

Two things Luhn does not tell you

It does not tell you the card exists. A Luhn-valid number in a valid range is trivially easy to generate — that is the point of the check digit calculator. Only an authorisation, or a zero-amount account verification, establishes that a card is real and open.

It also does not always fail on genuine cards. Some domestic-only UnionPay cards do not carry a valid Luhn check digit. Hard-failing on Luhn for 62 ranges will reject real cards, which is why this tool flags it as inconclusive rather than invalid.

Handling real card numbers

Everything here runs in your browser and nothing is transmitted. But the broader habit is worth keeping: a PAN in a browser tab is a PAN in your session history, your clipboard, and possibly a screenshot. Prefer test numbers, and if you must check a live card, mask it first — the first six and last four digits are enough to identify a range and a card, and they are the only parts PCI DSS lets you display.

More Card numbers tools