IBAN Validator

Use this IBAN validator to check International Bank Account Numbers with mod-97 checksum verification. Detects country, check digits, and BBAN format.

This tool validates International Bank Account Numbers using the mod-97 checksum defined in ISO 13616. Enter an IBAN and instantly see whether it is valid, along with the country, check digits, and BBAN (Basic Bank Account Number) breakdown. It catches virtually all single-character errors and most transpositions. Everything runs in your browser - no banking data is sent anywhere.

Ad
Ad

About IBAN Validator

IBAN Structure

An IBAN consists of four parts, always in the same order:

PartLengthContentExample (GB)
Country code2 lettersISO 3166-1 alpha-2GB
Check digits2 digitsMod-97 checksum29
BBANCountry-specificBank code + account numberNWBK 6016 1331 9268 19

The full IBAN is written in groups of four characters with a space between each group for readability: GB29 NWBK 6016 1331 9268 19. When transmitted electronically, spaces are removed.

How the Mod-97 Checksum Works

The validation algorithm has four steps:

StepActionExample (GB29NWBK60161331926819)
1Move first 4 characters to endNWBK60161331926819GB29
2Convert letters to numbers (A=10, B=11...Z=35)232311601613319268191611 29
3Compute remainder: number mod 97232311601613319268191611 29 mod 97
4Valid if remainder = 1Remainder = 1 (valid)

The mod-97 check detects all single-character substitution errors, all single transpositions of adjacent characters, and most other common typos. The error detection rate is approximately 97 in 100 for random errors.

IBAN Lengths by Country

CountryCodeIBAN LengthBBAN Format
United KingdomGB224-char bank code + 6-digit sort code + 8-digit account
GermanyDE228-digit bank code + 10-digit account
FranceFR275-digit bank + 5-digit branch + 11-char account + 2-digit key
SpainES244-digit bank + 4-digit branch + 2-digit check + 10-digit account
ItalyIT271-char check + 5-digit bank + 5-digit branch + 12-char account
NetherlandsNL184-char bank code + 10-digit account
SwitzerlandCH215-digit bank + 12-char account
BelgiumBE163-digit bank + 7-digit account + 2-digit check
AustriaAT205-digit bank + 11-digit account
PortugalPT254-digit bank + 4-digit branch + 11-digit account + 2-digit check
Saudi ArabiaSA242-digit bank + 18-char account
BrazilBR298-digit bank + 5-digit branch + 10-digit account + 1-char type + 1-char owner

Over 80 countries use the IBAN system. The shortest IBANs are 15 characters (Norway) and the longest are 34 characters (Saint Lucia, Jordan). The United States and Canada do not use IBANs - they use ABA routing numbers and account numbers instead.

IBAN vs Other Banking Identifiers

IdentifierPurposeFormatUsed In
IBANIdentifies a specific bank accountCountry code + check digits + BBANEurope, Middle East, parts of Africa/South America
SWIFT/BICIdentifies a bank (not an account)8 or 11 characters (e.g., NWBKGB2L)Worldwide
ABA Routing NumberIdentifies a US bank9 digitsUnited States
Sort CodeIdentifies a UK bank branch6 digits (XX-XX-XX)United Kingdom, Ireland
BSB NumberIdentifies an Australian bank branch6 digitsAustralia

For international wire transfers, you typically need both the IBAN (to identify the account) and the SWIFT/BIC code (to identify the bank). Within the SEPA zone (EU + EEA + UK), the IBAN alone is sufficient for euro transfers.

Common IBAN Errors

Most invalid IBANs come from five recurring mistakes, all catchable by either the length check or the mod-97 algorithm.

ErrorExampleHow to Fix
Wrong lengthGB29NWBK601613319268 (too short)Check all digits are included - UK IBANs are 22 characters
Transposed digitsTwo adjacent digits swappedThe mod-97 check will catch this - re-enter carefully
Spaces in wrong placesSpaces break electronic processingRemove all spaces when entering into banking systems
O/0 or I/1 confusionLetter O read as digit 0IBANs start with 2 letters (country code), rest varies by country
Invalid country codeXX29NWBK...First 2 characters must be a valid ISO 3166-1 country code

Worked Example: Validating GB82 WEST 1234 5698 7654 32

The canonical GB test IBAN from the ISO 13616 specification walks through every step cleanly. Take GB82WEST12345698765432 and work it by hand:

Step 1 - Move the first four characters to the end. GB82WEST12345698765432 becomes WEST12345698765432GB82.

Step 2 - Replace each letter with two digits using A=10, B=11, ..., Z=35. W=32, E=14, S=28, T=29, G=16, B=11. The string becomes 3214282912345698765432161182.

Step 3 - Compute the 28-digit number mod 97. Because the number exceeds the 64-bit integer range, the standard trick is to process it left-to-right, taking the running remainder mod 97 after each digit: 3 mod 97 = 3, 32 mod 97 = 32, 321 mod 97 = 30, ..., final remainder = 1.

Step 4 - A remainder of 1 means the IBAN is valid. Any other remainder means at least one digit is wrong. This is the exact algorithm the tool uses, implemented in a single streaming loop so arbitrarily long IBANs (up to 34 characters for Saint Lucia and Jordan) never overflow.

How Reliable Is the Mod-97 Check?

The mod-97 check catches all single-digit substitution errors and all single transpositions of adjacent characters, which together account for the majority of keying mistakes in published error-pattern research on account numbers. For random two-error combinations it fails about 1 time in 97, giving an overall error-detection rate above 98% on realistic typo distributions. That is strong but not absolute - a valid IBAN means the number is well-formed and internally consistent, not that an account at that number actually exists. Only the receiving bank can confirm that. Payment-initiation standards such as ISO 20022 pain.001 still require IBAN validation at submission time because the cost of a rejected SEPA transfer (typically EUR 5-20 plus a 1-3 business day delay) is far higher than running the check.

IBAN vs US Routing and Account Numbers

The United States and Canada do not use IBAN. US domestic payments use a 9-digit ABA routing number plus a variable-length account number. The ABA routing number has its own checksum: weight digits 1, 4, 7 by 3; digits 2, 5, 8 by 7; digits 3, 6, 9 by 1; the weighted sum must be divisible by 10. This is weaker than mod-97 and catches fewer transposition errors, which is one reason the EU moved to IBAN during the SEPA rollout starting in 2008. For international wires from a US sender to an IBAN-using country, the Federal Reserve and SWIFT require both the IBAN and the recipient bank's BIC in the beneficiary field of the FedWire or SWIFT MT103 message.

SEPA, SWIFT, and Why IBAN Alone Is Sometimes Enough

Inside the SEPA zone (36 countries as of 2024 - the 27 EU member states plus the UK, Iceland, Liechtenstein, Norway, Switzerland, Monaco, San Marino, Andorra, Vatican City), an IBAN alone is sufficient for euro-denominated credit transfers and direct debits. Banks derive the BIC from the IBAN automatically using the IBAN Plus directory maintained by SWIFT. Since February 2016 the European Payments Council has banned "IBAN discrimination" - a business inside SEPA must accept a valid IBAN from any SEPA country on the same terms as a domestic one, per EU Regulation 260/2012.

Outside SEPA, or for non-euro currencies, you usually still need the BIC. A SWIFT MT103 message to a Saudi Arabian SAR account, for example, carries the beneficiary IBAN in field 59 and the beneficiary BIC in field 57A. For related-account lookups, our UUID Generator produces identifiers for internal systems, and the Hash Generator can SHA-256 an IBAN for privacy-preserving database lookups without storing the plaintext number.

Storing and Transmitting IBANs Safely

IBANs are classified as personal financial data under GDPR Article 4(1) in the EU and under the Data Protection Act 2018 in the UK. The ICO treats an IBAN as capable of identifying an individual when combined with a name, so its storage requires a lawful basis and appropriate safeguards. In practice this means encrypting IBANs at rest (AES-256 is the PCI DSS standard carried over), masking them in UIs (showing only GB29 **** **** **** **** 19), and never logging them in plaintext. The PCI DSS v4.0.1 handling rules for PANs apply by analogy to IBANs when processed by payment service providers. For quick format-level checks that do not require transmitting the number, client-side tools like this validator are preferable to server round-trips.

Validating IBANs in Code

Every major language has a battle-tested IBAN library that wraps the ISO 13616 rules:

LanguageLibraryNotes
JavaScript/TypeScriptibantoolsPer-country BBAN regex, mod-97, BIC extraction
Pythonpython-stdnumValidates IBAN plus 200+ other identifiers
Javaiban4jBuilder API, country registry, mod-97
Rubyiban-toolsLightweight validator, no external calls
PHPphp-ibanMaintained fork of the original Globalcitizen library
Gojbub/go-ibanMinimal, zero dependencies

All of these follow the same pattern: strip whitespace, uppercase, check length against the per-country registry, rearrange, letter-to-digit map, mod 97. Rolling your own is straightforward but the libraries keep the country registry up to date - new countries have been added as recently as 2022 (Burundi BI, 27 characters) and 2023 (Djibouti DJ, 27 characters), so a hard-coded list will drift. For related validation workflows, the Credit Card Validator uses the Luhn algorithm on PANs, which is weaker than mod-97 (single-digit detection but only catches 9 of 10 transposition types).

Sources

Frequently Asked Questions

What is an IBAN?

An IBAN (International Bank Account Number) is a standardized format for identifying bank accounts across national borders. It consists of a two-letter country code, two check digits, and a country-specific Basic Bank Account Number (BBAN). IBANs are used primarily in Europe, the Middle East, and parts of Africa and South America.

How does IBAN validation work?

IBAN validation uses the mod-97 algorithm defined in ISO 13616. The country code and check digits are moved to the end, letters are converted to numbers (A=10, B=11, etc.), and the resulting number is checked for divisibility by 97. A valid IBAN always produces a remainder of 1.

Is my bank account information safe?

Yes. All validation happens entirely in your browser. No data is transmitted to any server, and nothing is stored or logged. You can verify this by using the tool while disconnected from the internet.

Which countries use IBANs?

Over 80 countries use IBANs, including all European Union member states, the United Kingdom, Switzerland, Turkey, Saudi Arabia, and Brazil. The United States and Canada do not use the IBAN system, relying instead on routing numbers and account numbers.

Link to this tool

Copy this HTML to link to this tool from your website or blog.

<a href="https://toolboxkit.io/tools/iban-validator/" title="IBAN Validator - Free Online Tool">Try IBAN Validator on ToolboxKit.io</a>