IBAN Validator
Validate International Bank Account Numbers (IBAN). Check format, country, checksum. Identify bank from IBAN. Support for 80+ countries
IBAN typos are silent. A bank may accept a malformed IBAN at submission time and only surface the error days later when the SWIFT message bounces — by which point your customer has already complained. The IBAN format embeds two check digits (ISO 7064 MOD 97-10) specifically so that single-digit typos and most adjacent-digit transpositions can be caught client-side, before the form is submitted. This tool implements the full check, plus per-country length and BBAN structure verification covering the 80+ countries in the SWIFT IBAN Registry.
How an IBAN is checked
The IBAN standard (ISO 13616) defines a deterministic verification procedure. Reading any official spec will give you the same five steps:
- Strip whitespace and uppercase the string.
- Confirm the total length matches the country-specific length defined in the IBAN Registry (e.g. Poland: 28, Germany: 22, United Kingdom: 22, Norway: 15, Malta: 31).
- Move the first four characters (country code + check digits) to the end of the string.
- Replace every letter with two digits using A=10, B=11, ..., Z=35.
- Compute the resulting integer modulo 97. The IBAN is valid if and only if the remainder is exactly 1.
Because the integer is too large for native 64-bit math, the modulo is computed in chunks of 9 digits — see the worked example below.
Working example: validating GB82 WEST 1234 5698 7654 32
This is the canonical UK test IBAN published in the SWIFT registry. Working through the algorithm:
Input
GB82 WEST 1234 5698 7654 32
Output
1. Strip spaces → GB82WEST12345698765432 2. Length: 22 ✓ (UK requires 22) 3. Rotate → WEST12345698765432GB82 4. Convert letters → 3214283212345698765432161182 5. mod 97 → 1 ✓ Result: VALID
If even one digit had been mistyped, mod 97 would yield something other than 1 with overwhelming probability. The check digits are chosen specifically to make this true.
What the check catches and what it misses
MOD 97-10 reliably detects all single-digit errors and almost all transpositions of adjacent characters — historically the dominant typo classes when humans copy account numbers off paper statements. It catches the vast majority of two-digit independent errors as well.
It does not catch: an IBAN that is well-formed but belongs to a different person at the same bank, a closed account, or a deliberately constructed valid-but-fake IBAN. The check digit is an integrity test, not an authentication or ownership test. For "is this account actually open and owned by John Doe", you need bank-level APIs (Open Banking AIS in the EU, name-and-account-matching services in the UK).
When to reach for this tool
- You added an IBAN field to a checkout form and want to catch typos before payment submission, without bundling a 10kB validation library you have to keep updated.
- You exported customer data from a CRM that accepted free-text IBANs and need to flag rows that will fail at the bank.
- You received a confusing rejection from a SEPA payment and want to confirm whether the IBAN itself was malformed or the rejection came from elsewhere (KYC, sanctions, account closed).
- You are writing a backend validator and want to sanity-check your implementation against a trusted reference for a tricky country (looking at you, MT — 31 characters with mixed alphanumeric BBAN).
What this tool will not do
- It will not verify that the account exists or is open. That requires a paid bank-data API or the Account Identification Service offered by some PSPs.
- It will not verify the account holder's name. UK CoP and EU VoP services do this, but they are bank-side and require regulated access.
- It will not detect IBANs from countries outside the SWIFT registry. Some non-IBAN countries (US, Canada) use ABA/transit numbers instead — paste those into a routing-number validator, not here.
Validation runs entirely in your browser using a JavaScript MOD 97 implementation. No IBANs are logged or sent anywhere — safe to paste production customer data while debugging.
Frequently asked questions
Is a "valid" IBAN guaranteed to belong to a real bank account?
No. Validity only means the structure is correct and the check digits match. The IBAN may belong to a closed account, a different person, or be a deliberately fabricated string that happens to satisfy MOD 97. For ownership verification you need bank-side services like UK Confirmation of Payee or EU Verification of Payee.
Why does my Polish IBAN start with "PL61" but my colleague's starts with "PL45"?
The two digits after the country code are check digits computed from the BBAN, not a region or bank identifier. Different accounts produce different check digits even at the same bank. Bank routing information lives in positions 5-12 (the 8-digit national bank identifier for Poland).
Does an IBAN imply a SWIFT/BIC?
Not directly. The IBAN encodes country and account but not always the BIC. Many EU/EEA SEPA payments do not require BIC at all �� the receiving bank is derivable from the IBAN through national lookup tables. For non-SEPA international transfers you still need BIC separately.
Why do some countries use letters and digits in the BBAN, not just digits?
Historical reasons. UK BBAN includes the 4-character sort-code-derived bank identifier (e.g. WEST in the example above). Malta encodes a mixed alphanumeric branch code. The IBAN spec accommodates this by converting letters to two-digit numbers before the MOD 97 check.
Can I validate offline? Will the tool work without internet?
Yes. The validator is pure JavaScript with no network calls. Load the page once and you can validate IBANs in airplane mode.
Related tools
Validate Polish NIP (tax ID) and PESEL (personal ID) numbers. Extract birth date, gender, and age from PESEL. Check NIP checksum. Free online validator
Decode Vehicle Identification Numbers (VIN). Find manufacturer, country, model year, plant code, serial number. Free online VIN lookup and validator
Validate cryptocurrency wallet addresses. Check if Bitcoin, Ethereum, Solana, Litecoin addresses are valid. Detect address type and network
Real-time currency converter with live exchange rates. Convert USD, EUR, GBP, PLN, JPY and 150+ world currencies. Free forex calculator online
Generate EAN-13, UPC-A, Code128, Code39, ITF barcodes. Download as PNG or SVG. Free online barcode maker for products and inventory
Convert cryptocurrency units. Satoshi to Bitcoin, Wei to Gwei to Ether, and more. Live price conversion between crypto and fiat currencies
Last updated · E-Utils editorial team