One wrong digit and an international transfer bounces โ or worse, lands in someone else's account. Paste an IBAN: the mod-97 checksum runs instantly in your browser (it never leaves your device), then the live registry adds the bank name, SWIFT/BIC and country.
How this calculator works
IBAN = country code + 2 check digits + BBAN (bank/account number, up to 30 alphanumeric chars). Validation: move the first 4 chars to the end, convert letters to numbers (A=10 โฆ Z=35), compute mod 97 โ a valid IBAN leaves remainder 1 (ISO 7064/13616). The checksum catches typos but not fake accounts, so the bank lookup confirms the number is actually registered.
How Mod-97 Validation Works, Step by Step
The ISO 13616 standard defines the IBAN and the ISO 7064 mod-97 algorithm that protects it. Structure first: two-letter country code, two check digits, then the Basic Bank Account Number, up to 30 alphanumeric characters encoding bank, branch and account, with length fixed per country, 22 in Germany, 27 in France, 34 in Malta. The validation dance: move the first four characters to the end, replace every letter with its two-digit value, A equals 10 through Z equals 35, and divide the resulting enormous number by 97. A valid IBAN leaves remainder 1. Because the number far exceeds native integer range, implementations use the piecewise modulo trick, processing digits in chunks and carrying the running remainder, which keeps the arithmetic exact in plain JavaScript. This calculator performs that entire check locally in your browser, the number never leaves your device for the format test, so the checksum catches typos with zero privacy cost. Only the optional bank lookup talks to the registry, and only to fetch public routing data.
Why the Live Bank Lookup Matters More Than the Checksum
A passing mod-97 result proves consistency, nothing more. Fraudsters exploit exactly this gap: business email compromise schemes hand over IBANs that are structurally perfect but route to a mule account, and simple fat-finger errors can produce a checksum-valid number pointing at someone else's account, since check digits were designed to catch transcription errors, not adversarial ones. The registry lookup closes the gap from the other side: this validator queries the iban-analyzer.com service, which returns the registered bank name, the bank's SWIFT/BIC code, the country and whether the account sits inside SEPA, the 36-country zone where euro transfers clear like domestic payments, usually within one business day. Before wiring, confirm three things: the bank name matches where your payee actually banks, the country matches their address, and the BIC is a real routing code. Europe is additionally rolling out verification-of-payee, matching the account holder's name at payment time, but that protection lives inside the banking system, not in any public validator, so the registry check plus a call to the payee on a known number remains the human firewall.
IBAN Countries, SEPA, and What Changes in 2026
The IBAN registry now covers more than 80 countries, including all of the EU and UK, plus much of the Middle East, North Africa and parts of the Caribbean; the United States, Canada and Australia remain notable holdouts using their own domestic schemes. SEPA, the Single Euro Payments Area, spans 36 countries and makes cross-border euro credit transfers as fast and cheap as domestic ones, the workhorse for salaries, vendor payments and rent across Europe. Two 2026-era rules tighten the rails. Instant payments: since January 2025, euro-area payment providers that offer standard SEPA credit transfers must also offer the instant variety, clearing in under ten seconds at no extra charge, with receiving-side compliance completing through 2025 and 2026. Verification of payee: from October 2025, PSPs must check the payee's account-holder name against the IBAN before executing a credit transfer and flag mismatches, a direct response to authorized-push-payment fraud. The validator here stays relevant in that world: checksum locally, bank and SEPA status from the live registry, then let the payment rails do their new name-matching job on a number you have already confirmed is real.