100% free · Runs 100% in your browser · No signup needed
Honest label: this validates the number format only — Luhn checksum, brand prefix and digit length. It cannot tell whether a card is real, active, expired, or has funds. Everything runs in your browser; nothing is uploaded or stored.
Typing a 16-digit card number into a checkout form and getting "invalid card number" is frustrating — was it a typo, or is the card itself the problem? The Credit Card Validator by FistHost checks any card number with the industry-standard Luhn algorithm, detects the card brand from its prefix, and verifies the length — instantly, and 100% in your browser, so your digits never leave your device.
4111 1111 1111 1111 or 4111-1111-1111-1111 freely.4111111111111111 — the standard Visa test number — so you can see a passing check without typing a real card.Invented by Hans Peter Luhn at IBM in 1954, the Luhn checksum catches almost all single-digit typos and most transpositions. Here's the procedure, which the tool performs on every check:
This is the standard Visa test number — safe to use in articles and demos because it isn't a real card. Doubling every second digit from the right, subtracting 9 where needed, and summing gives a total divisible by 10 — it passes Luhn. Try it in the tool with the test-number button and watch each step.
The first digits of a card number identify the network (the IIN/BIN). The tool matches these prefix rules:
| Brand | Prefix (IIN) | Valid lengths |
|---|---|---|
| Visa | Starts with 4 | 13, 16, 19 |
| Mastercard | 51–55 or 2221–2720 | 16 |
| American Express | 34 or 37 | 15 |
| Discover | 6011, 622126–622925, 644–649, or 65 | 16, 19 |
| Diners Club | 300–305, 36, or 38 | 14 |
| JCB | 3528–3589 | 16–19 |
If the prefix doesn't match any known network, the tool still runs the Luhn check but reports the brand as unknown — the checksum is network-independent.
This is the mandatory honest label, and it matters: the tool validates number format only. A passing Luhn check means the digits are plausibly a card number — it cannot tell you whether the card is real, active, expired, blocked, or has any funds. Luhn was designed to catch typos, not fraud. Never treat a "valid" result as proof a card will be accepted, and never use this tool to test card numbers that aren't yours.
Card numbers are sensitive. Many online validators send what you type to their servers. FistHost's validator is 100% client-side — the check runs in your browser's JavaScript and nothing is transmitted, stored, or logged. Never enter a full real card number into any website you don't completely trust; for learning and testing, use the built-in test number.
Building a checkout flow or a membership site? You need hosting you can trust with your customers' data. FistHost shared hosting starts at just $0.99/month, and the annual plan includes a free domain — launch your store or SaaS on fast, secure hosting without enterprise pricing.
4111111111111111 as 4111111111111111 with two digits swapped — Luhn catches most transpositions (though not 09↔90).Card validation is one layer — build the rest. Test your own credentials with the Password Strength Tester, add two-factor codes with the TOTP Generator, hash secrets properly with the Bcrypt Hash Generator, and inspect tokens with the JWT Generator. All free, all client-side, all private.
FistHost builds privacy-respecting tools: no accounts, no uploads, no tracking. And when your project needs a home, FistHost shared hosting at $0.99/month with a free domain on the annual plan gives you secure, reliable hosting that respects your budget. Validate formats, harden logins, launch securely — with FistHost.
The Luhn checksum is so good at catching typos that it escaped the payments world long ago. You'll find it — or close variants — in:
Anywhere humans transcribe long numbers, a check digit pays for itself — which is why understanding Luhn is a rite of passage for developers, not just payments engineers.
If you're building or testing a payment form, Luhn is your first line of defense — client-side, instant, and free:
function luhnValid(number):
digits = strip spaces/dashes from number
total = 0
double = false
for d in digits from right to left:
n = int(d)
if double:
n = n * 2
if n > 9: n = n - 9
total += n
double = not double
return total % 10 == 0
That's the entire algorithm — under fifteen lines in any language. Paste the test number into our tool and compare its verdict with your implementation's; if they disagree, your doubling direction (from the right, skipping the check digit position correctly) is the first thing to verify.
No. It means the number is well-formed per the Luhn checksum and matches a known brand pattern. It says nothing about whether the card exists, is active, or has funds.
The check runs entirely in your browser and nothing is transmitted — but as a general rule, avoid typing full real card numbers into any tool you don't need to. Use the test-number button for experimentation.
The standard Visa test number published for developers. It passes Luhn but isn't a real, chargeable card — that's why it's safe to use in demos and articles.
Most likely a typo — retype carefully. If it consistently fails, the number may be mistyped on the source you're copying from, or it may use a brand prefix the tool doesn't recognize.
No reviews yet. Be the first to review this tool!
Reviews are protected by captcha and moderated before they appear.