Card & IBAN Validator

Check a payment card number against the Luhn algorithm or an IBAN against its mod-97 checksum — entirely in your browser.

Use test numbers, not real ones. Nothing is transmitted and no data is stored — but there is never a good reason to type a live card number or bank account into a web page, and this only checks arithmetic, not whether an account exists.

  • A passing checksum only means the number is well-formed. It catches typos and transposed digits — it does not mean the account exists or has funds.
  • Luhn is a single check digit, so it catches every single-digit error and most adjacent transpositions, but not all of them.
  • IBAN mod-97 is far stronger, rejecting well over 99% of accidental errors, which is why bank transfers rely on it.

Your Data Never Leaves Your Device

Every tool runs entirely in your browser. Nothing you type is uploaded, stored, or logged on our servers.

100% Client-Side

This validator runs the two checksums that guard against mistyped financial identifiers. Luhn is the single check digit on payment cards: double every second digit from the right, subtract nine from anything over nine, and the total must divide by ten. The card brand is identified separately from its issuer range, because a number can satisfy Luhn and still not belong to any scheme.

IBAN uses mod-97 from ISO 13616 — move the first four characters to the end, convert letters to numbers, and the remainder must be 1 — plus a per-country length check. That is a far stronger test than Luhn, rejecting well over 99% of accidental errors, which is why bank transfers depend on it. Neither check tells you an account exists; they only catch typos. Everything runs locally, and you should still use the published test numbers rather than live ones.

FAQ

No. Nothing is transmitted and nothing is stored, but there is no good reason to type a live card number into any web page. Use the published test numbers provided — the arithmetic is identical.

It is a single check digit. Double every second digit from the right, subtract 9 from anything over 9, and the total must be divisible by 10. It catches every single-digit typo and most transpositions, but it says nothing about whether an account exists.

Passing Luhn only means the checksum works. If the leading digits do not match a known card scheme's issuer range, it is not a usable card number, so both checks are reported separately.

Mod-97 per ISO 13616: move the first four characters to the end, replace letters with numbers (A=10 through Z=35), and the remainder when divided by 97 must be 1. Length is also checked against the country's fixed length.

Mod-97 over the whole string rejects well over 99% of accidental errors, where a single Luhn check digit catches far fewer. That is why bank transfers rely on it — a mistyped IBAN should fail before money moves.

No. It means the structure and checksum are correct for that country. Only the bank can confirm the account is real and open.