Validation Summary
{{ summary.main.is_valid ? 'Valid' : 'Invalid' }}
{{ summary.supplementary.valid }} Supplementary Valid {{ summary.supplementary.invalid }} Supplementary Invalid
Credit-card numbers
Accepts plain-text or CSV files containing card numbers.
# Number Valid Type MII IIN
{{ i + 1 }} {{ r.number }} {{ r.is_valid ? 'Yes' : 'No' }} {{ r.card_type }} {{ r.mii }} {{ r.iin }}

            

Introduction:

Credit-card numbers are structured identifiers that embed industry information and a check digit so payment networks can detect transcription mistakes before authorisation. This self-checking scheme hinges on the Luhn modulus-ten algorithm, which flags slips such as reversed digits or single-digit swaps even before reaching the issuing bank for both e-commerce and point-of-sale transactions.

This validator lets you paste, drag-drop, or import plain-text lists of card numbers and instantly applies the Luhn rule, issuer range patterns, and major industry identifier mapping. Each entry is classified as valid or invalid, linked to its brand, and summarised in an interactive donut chart rendered by a lightweight charting layer entirely in the browser.

Integrate the tool before bulk authorisation batches, QA test checkout forms, or audit data captured by third-party gateways to catch errors early and avoid costly payment declines. Use it interactively on-screen or embed the logic in internal dashboards. Always redact sensitive data before sharing reports and comply with PCI-DSS obligations when handling production card numbers.

Technical Details:

Credit-card validation relies on two complementary structures: a lexical pattern that reserves specific digit prefixes for brands and industries, and a checksum that verifies transcription integrity. The first six digits form the Issuer Identification Number (IIN), further grouped into the Major Industry Identifier (MII) found in the leading digit. The final digit is a Luhn check digit calculated from the preceding sequence so that the weighted digit sum modulo ten equals zero.

Luhn Modulus-10 Algorithm:

  1. Reverse the digit string.
  2. Double every second digit starting with index 1.
  3. Subtract 9 from any doubled value above 9.
  4. Add all resulting digits.
  5. The number is valid when the total mod 10 equals 0.
i=0 n-1 si 0 mod 10

Interpretation Bands:

MII DigitIndustry
0ISO/TC 68 & future assignments
1Airlines
2Airlines / Finance
3Travel & Entertainment
4–5Banking & Financial
6Merchandising
7Petroleum
8Healthcare & Telecom
9National Assignment

The first digit lets you infer the broad service domain, while the IIN pinpoints the issuing bank. Neither element guarantees account status; they merely inform routing and risk checks.

Inputs & Parameters:

  • card_number – 13- to 19-digit numeric string.
  • file_input – optional .txt or .csv list.
  • allow_whitespace – whitespace and comma delimiters ignored.
  • output_format – table, stats, or JSON export.

Worked example (Visa 4539 1488 0343 6467):

7×2=145 4+5+6+5+...=70 70mod10=0

Assumptions & Limitations:

  • Luhn detects most single-digit and transposition errors but not all multi-digit permutations.
  • Brand patterns evolve; newer ranges may return Unknown.
  • Checksum validity does not confirm account status or available credit.
  • Validation requires numeric input; non-digits are stripped before computing.

Edge Cases & Error Sources:

  • Leading zeros trimmed by spreadsheets.
  • Copy-pasted ranges containing hidden non-printing characters.
  • Numbers longer than 19 digits flagged as input error.
  • International characters in CSV headers ignored.

Scientific Validity & References:

The modulus-ten checksum was introduced by IBM scientist Hans Peter Luhn (U.S. Patent 2,950,048, 1956) and remains the ANSI X4.13 standard for card verification. ISO/IEC 7812 defines IIN and MII allocations, while EMVCo bulletins document recent scheme range expansions.

Privacy & Compliance:

All processing occurs client-side, reducing exposure and supporting PCI-DSS requirement 6.4 for pre-authorisation validation.

Step-by-Step Guide:

Follow these steps to check small or bulk lists quickly.

  1. Paste, type, or import numbers into the Input area.
  2. Select Validate to run the checksum and pattern tests.
  3. Review the summary banner; green indicates an overall valid result.
  4. Switch to the Stats tab to inspect the donut chart.
  5. Copy or download the JSON report for reconciliation or auditing.

FAQ:

What is a check digit?

The final digit is derived from the Luhn formula and lets systems verify the rest of the sequence without contacting the issuer.

Does the tool store my data?

No. Numbers remain in your browser memory and disappear when the page is closed; nothing is transmitted or logged.

Why do I see “Unknown” type?

A prefix may belong to a newly issued range not yet listed in public allocations; the checksum is still evaluated correctly.

Can I upload a CSV file?

Yes. Plain-text or comma-separated files up to a few megabytes are parsed instantly; larger files may degrade browser performance.

How accurate is the validation?

The checksum detects over 90 % of common data-entry errors. However, only an issuer authorisation can confirm an active account.

Glossary:

Luhn Algorithm
Modulus-ten checksum used to detect input errors.
MII
Major Industry Identifier; first digit grouping card sectors.
IIN
Issuer Identification Number; first six digits identifying the bank.
Checksum
Digit added to verify the integrity of the preceding sequence.
PCI-DSS
Security standard governing the handling of cardholder data.

Files are processed locally in your browser; nothing is uploaded.