# Check Digit Validator

Checks the checksum on an IBAN, ISBN-10/13, EAN-13/UPC-A, or Luhn-checked card number, and when it fails, searches for the single substitution or adjacent transposition that would make it valid so you know which digit to fix rather than just that something is wrong.

**Not for:** This is arithmetic verification only. A passing checksum means the number is internally consistent, not that the IBAN belongs to a real open account, that the ISBN is assigned to a real book, or that the card is active, unstolen, or has funds — those all require calling the issuing bank, registry, or network. It does not verify BIC/SWIFT codes, validate card numbers against issuer IIN/BIN ranges beyond Luhn, or handle non-ISO-13616 domestic account formats (e.g. US routing numbers, which use a different checksum). When more than one single-digit fix would satisfy the checksum, it reports the ambiguity instead of picking one.

## Formats

- [IBAN](https://check-digit.gumballtools.com/check/iban) — International Bank Account Number checksum (ISO 7064 MOD 97-10).
- [ISBN-10](https://check-digit.gumballtools.com/check/isbn-10) — 10-digit book identifier checksum, mod 11.
- [ISBN-13](https://check-digit.gumballtools.com/check/isbn-13) — 13-digit book identifier checksum, the same GS1 mod-10 scheme as EAN-13.
- [EAN-13](https://check-digit.gumballtools.com/check/ean-13) — GS1 13-digit barcode checksum, mod 10.
- [UPC-A](https://check-digit.gumballtools.com/check/upc-a) — 12-digit US/Canada barcode checksum — GS1 mod-10 with an implicit leading 0.
- [Luhn (card numbers)](https://check-digit.gumballtools.com/check/luhn) — The mod-10 checksum used by most payment card numbers.

## Surfaces

- HTML: `https://check-digit.gumballtools.com`
- Markdown: same URLs with `Accept: text/markdown` or `?format=md`
- JSON API: `https://check-digit.gumballtools.com/api/v1/run?input=...&format=...`
- OpenAPI: `https://check-digit.gumballtools.com/.well-known/openapi.json`
- MCP: `https://check-digit.gumballtools.com/api/mcp`
