IBAN validator (mod-97)
An IBAN (International Bank Account Number) is the standard format for identifying a bank account across borders for SEPA and international transfers. Getting one digit wrong can send money to the wrong place, so before you save or share an IBAN it is worth checking that the built-in checksum agrees with the rest of the number. This validator does that instantly and entirely offline.
How it works
The tool follows the ISO 13616 mod-97 procedure:
- Strip spaces and uppercase the input. An IBAN is
[CC][2 check digits][account block]. - Move the first four characters (country code + check digits) to the end.
- Replace each letter with two digits:
A=10,B=11 …Z=35. - The IBAN is valid when this large integer mod 97 equals 1.
To avoid huge numbers, the mod-97 is folded digit by digit across the string. The tool also compares the total length against the expected length for the detected country.
Example
Validate the test IBAN GB82 WEST 1234 5698 7654 32:
- Move
GB82to the end →WEST12345698765432GB82. - Expand letters →
W=32,E=14,S=28,T=29 …G=16,B=11. - The resulting integer mod 97 = 1 → valid, and the length (22) matches GB.
Selected IBAN lengths
| Country | Code | Length |
|---|---|---|
| Norway | NO | 15 |
| Belgium | BE | 16 |
| Netherlands | NL | 18 |
| Finland | FI | 18 |
| Switzerland | CH | 21 |
| Germany | DE | 22 |
| United Kingdom | GB | 22 |
| Ireland | IE | 22 |
| Bahrain | BH | 22 |
| France | FR | 27 |
| Italy | IT | 27 |
| Jordan | JO | 30 |
| Malta | MT | 31 |
What the MOD-97 check actually detects
The mod-97 checksum is designed to catch single-character substitutions and transposed adjacent digits — the two most common manual transcription errors. It detects all single-digit errors with certainty. It also catches approximately 99% of two-digit transpositions, making it significantly stronger than simpler checksums like Luhn.
What it does not detect: a completely fabricated IBAN that happens to be constructed correctly (any BBAN with the right check digits computed against it will pass), or an IBAN from the right country with the wrong routing that still satisfies the arithmetic.
Common reasons an IBAN fails
- Wrong length. Each country has a fixed length; being one character short is the most common paste error. The validator checks the length for the detected country before even running the checksum.
- Mixed case. IBANs must be all uppercase. Many systems display them in uppercase, but if a user types a lowercase letter the tool normalizes it automatically before checking.
- Spaces in unexpected places. IBANs are displayed in groups of four for human readability, but the underlying string has no spaces. The tool strips all whitespace before validating.
- Wrong country code. Pasting a DE IBAN but starting with “de” in lowercase, or accidentally writing “EG” instead of “DE”, fails immediately on the country-code check.
- Non-IBAN format. Some countries use account formats that superficially resemble IBANs but are not ISO 13616 IBANs (for example, US routing numbers and account numbers are not IBANs). The validator will fail these unless they happen to match a participating country’s format.
Privacy: the mod-97 calculation runs entirely in your browser. Your IBAN is never uploaded or stored, and a pass confirms internal consistency, not that the account is open.