Skip to content
CardCheck

Runs in your browser. Nothing is sent anywhere.

Is that card number even real?

Long before a bank gets asked, the number itself can tell you if it was mistyped. Type one below and watch the card react.

Try a sandbox number:

Waiting for a number

  • Card networkWaiting for the first digits.
  • LengthLength depends on the network.
  • Luhn checksumRuns once the number is long enough.
  • ExpiryOptional. Try 12/30.
  • Security codeOptional. 3 digits, or 4 on American Express.

Three checks, no bank needed

Every number you type goes through the same three questions. Each one is cheap enough to run on every keystroke, which is why good checkout forms can tell you about a typo before you press Pay.

  1. 1

    Who issued it?

    The first digits are an issuer identification number. 4 means Visa, 34 or 37 means American Express, 51 to 55 means Mastercard, and so on. That tells us which rules to apply next.

    See every prefix →
  2. 2

    Is it the right length?

    American Express cards have 15 digits, most Visa and Mastercard cards have 16. A number with the wrong count cannot be real, no matter what the digits say.

    Lengths by network →
  3. 3

    Does the maths work out?

    The last digit is a check digit. Double every second digit from the right, add everything up, and the total has to end in 0. This is the Luhn algorithm, and it catches almost every typo.

    Walk through it →

Watch the maths happen

Each block is a digit. Watch which ones get picked, doubled and folded, then see the total settle into a ring. It plays by itself, or click a step to jump to it.

Start with the number

Take the digits exactly as printed. The very last digit is the check digit. It was chosen by the issuer so that the whole number works out, and everything else in the number is what it gets checked against.

What this does not tell you

Passing all three checks means the number is well formed, nothing more. It does not mean the card exists, is active, has money on it or belongs to whoever is typing. Only the card network and the issuing bank can answer that, and your backend still has to ask them. The point of checking early is to save people a round trip when they have simply fat-fingered a digit.