IBAN Validator — Check Any European Bank Account Number
An IBAN (International Bank Account Number) is the standardised format used across Europe and beyond to identify bank accounts for international wire transfers. Even a single digit error can send your payment to the wrong account or cause it to be rejected. This validator checks your IBAN against the ISO 13616 standard using the MOD-97 algorithm — the same mathematical check used by banks — and extracts the country code, check digits, bank identifier, and account number. Enter your IBAN below to validate it instantly. No data is transmitted to any server; all processing runs in your browser.
Spaces and hyphens are ignored. Accepts upper or lower case.
This calculator provides estimates for informational purposes only and does not constitute financial advice. Consult a qualified financial advisor for decisions based on your individual circumstances.
What Is an IBAN?
The International Bank Account Number (IBAN) is a standardised numbering system developed by the International Organisation for Standardisation (ISO) and the European Committee for Banking Standards (ECBS) to uniquely identify bank accounts across national borders. The standard is defined in ISO 13616.
Before the IBAN was introduced, cross-border payments relied on ad-hoc domestic account number formats, which led to frequent errors and high failure rates for international transfers. The SEPA (Single Euro Payments Area) mandate, introduced in 2007 and fully enforced by 2014, made IBAN mandatory for all euro-area payments. Today more than 80 countries have adopted the IBAN standard, although the United States, Canada, Australia, and most of Asia still use domestic formats.
An IBAN can be up to 34 characters long, though actual lengths are fixed per country. It consists entirely of alphanumeric characters (letters A-Z and digits 0-9) with no special characters. When written for human reading it is conventionally split into groups of four characters separated by spaces, but the spaces are not part of the IBAN itself and are stripped before any processing.
IBAN Structure
Every IBAN follows a three-part structure:
[CC][KK][BBAN]
CC = 2-letter ISO 3166-1 country code (e.g. GB, DE, FR)
KK = 2-digit check digits (e.g. 82 in GB82)
BBAN = Basic Bank Account Number (remaining chars, country-specific length)
Example: GB82 WEST 1234 5698 7654 32
CC = GB (United Kingdom)
KK = 82 (check digits)
BBAN = WEST12345698765432
^^^^ bank sort code prefix (4 chars for UK)
^^^^^^^^^^^^^^ branch + account number The BBAN encodes the domestic account number in a country-specific format. For a UK IBAN, the BBAN contains the 4-character bank code (e.g., WEST for Westpac/Western Bank), followed by the 6-digit sort code and 8-digit account number. For a German IBAN the BBAN is purely numeric: an 8-digit bank code (Bankleitzahl) followed by a 10-digit account number. Each country's IBAN registry specifies the exact BBAN structure.
The MOD-97 Check Digit Algorithm
The two check digits at positions 3-4 of every IBAN are calculated using a modulo-97 algorithm. The MOD-97 algorithm was chosen because 97 is a prime number and provides excellent coverage of common transcription errors — it catches all single-digit errors, all transpositions of adjacent characters, and most other error patterns.
The validation algorithm works in four steps:
- Rearrange: Move the first four characters (country code + check digits) to the end of the string.
- Convert letters to numbers: Replace each letter with its numeric equivalent: A=10, B=11, C=12, ..., Z=35. This converts the entire IBAN into a long sequence of digits.
- Compute modulo 97: Treat the resulting digit string as one very large integer and calculate its remainder when divided by 97.
- Check the result: If the remainder equals 1, the IBAN is structurally valid. Any other result means the IBAN contains an error.
Because JavaScript's Number type loses precision for very large integers, this validator
uses a chunked iterative method — processing the digit string in 9-character blocks — to compute
the modulo exactly without floating-point errors.
Worked Example: Validating GB82 WEST 1234 5698 7654 32
Let's trace through the complete MOD-97 validation of the IBAN GB82WEST12345698765432:
Step 1 — Strip spaces, uppercase: GB82WEST12345698765432 Step 2 — Check country code and length: Country: GB (United Kingdom), expected length = 22 ✓ Actual length: 22 ✓ Step 3 — Rearrange: move first 4 chars (GB82) to end: WEST12345698765432GB82 Step 4 — Replace letters with numbers (A=10, ..., Z=35): W=32, E=14, S=28, T=29, G=16, B=11 → 3214282912345698765432161182 Step 5 — Compute 3214282912345698765432161182 mod 97: Process in chunks of 9 digits: 321428291 mod 97 = 76 762345698 mod 97 = 14 (prepend remainder 76) 14765432 mod 97 = 29 (prepend remainder 14) 29161182 mod 97 = 1 (prepend remainder 29) Step 6 — Result = 1 ✓ → IBAN is VALID
The check digit value of 82 in "GB82" was chosen precisely so that the final MOD-97 result equals 1. When an IBAN is issued by a bank, the check digits are calculated by temporarily setting them to "00", running the algorithm, and then setting KK = 98 - (result mod 97).
Country-Specific IBAN Lengths
The table below lists the IBAN length for every country this validator supports. Lengths are defined in the SWIFT IBAN Registry, which is updated periodically as new countries adopt the standard.
| Country | Code | Length | Country | Code | Length |
|---|---|---|---|---|---|
| Andorra | AD | 24 | Italy | IT | 27 |
| United Arab Emirates | AE | 23 | Jordan | JO | 30 |
| Albania | AL | 28 | Kuwait | KW | 30 |
| Austria | AT | 20 | Kazakhstan | KZ | 20 |
| Azerbaijan | AZ | 28 | Lebanon | LB | 28 |
| Bosnia & Herzegovina | BA | 20 | Liechtenstein | LI | 21 |
| Belgium | BE | 16 | Lithuania | LT | 20 |
| Bulgaria | BG | 22 | Luxembourg | LU | 20 |
| Bahrain | BH | 22 | Latvia | LV | 21 |
| Brazil | BR | 29 | Monaco | MC | 27 |
| Switzerland | CH | 21 | Moldova | MD | 24 |
| Costa Rica | CR | 22 | Montenegro | ME | 22 |
| Cyprus | CY | 28 | North Macedonia | MK | 19 |
| Czech Republic | CZ | 24 | Mauritania | MR | 27 |
| Germany | DE | 22 | Malta | MT | 31 |
| Denmark | DK | 18 | Mauritius | MU | 30 |
| Dominican Republic | DO | 28 | Netherlands | NL | 18 |
| Estonia | EE | 20 | Norway | NO | 15 |
| Spain | ES | 24 | Pakistan | PK | 24 |
| Finland | FI | 18 | Poland | PL | 28 |
| Faroe Islands | FO | 18 | Palestinian Territory | PS | 29 |
| France | FR | 27 | Portugal | PT | 25 |
| United Kingdom | GB | 22 | Qatar | QA | 29 |
| Gibraltar | GI | 23 | Romania | RO | 24 |
| Greenland | GL | 18 | Serbia | RS | 22 |
| Greece | GR | 27 | Saudi Arabia | SA | 24 |
| Guatemala | GT | 28 | Sweden | SE | 24 |
| Croatia | HR | 21 | Slovenia | SI | 19 |
| Hungary | HU | 28 | Slovakia | SK | 24 |
| Ireland | IE | 22 | San Marino | SM | 27 |
| Israel | IL | 23 | Tunisia | TN | 24 |
| Iceland | IS | 26 | Turkey | TR | 26 |
| Ukraine | UA | 29 | British Virgin Islands | VG | 24 |
Common Mistakes When Using IBANs
Confusing IBAN with SWIFT/BIC. These serve different purposes. The IBAN identifies the account; the SWIFT/BIC identifies the bank. For most SEPA payments inside Europe, the IBAN alone is sufficient. For intercontinental payments — for example, sending euros from the US to Germany — you typically need both the recipient's IBAN and their bank's SWIFT/BIC code.
Using domestic formats for international payments. If you are in the UK and want to pay a German supplier, you must use their German IBAN (starting with DE) — not their local account number. Some UK businesses still quote their sort code and account number on invoices. To construct the IBAN, use your bank's online tool or a trusted IBAN calculator that knows the German BBAN structure.
Assuming MOD-97 = guaranteed correct. A valid MOD-97 result means the IBAN is structurally correct. It does not prove the account exists, that it is active, or that it belongs to the person you intend to pay. For high-value transfers, always confirm the IBAN verbally or via a separate communication channel — email can be intercepted and IBAN details changed by fraudsters in business email compromise (BEC) attacks.
Entering IBANs manually from handwritten sources. The characters most commonly confused are: 0 (zero) vs O (letter O), 1 (one) vs I (letter I) vs l (lowercase L), and 8 vs B. The MOD-97 check will catch most such errors, but double-checking against the source document is always recommended for large payments.
Privacy Note
This IBAN validator runs entirely in your browser using client-side JavaScript. The IBAN you enter is never transmitted to our servers, not stored in any database, and not shared with any third party. You can verify this by inspecting the browser's network tab while using the validator — no network requests are made when you type. The source code for the validation logic is the standard ISO 13616 MOD-97 algorithm implemented in TypeScript.
Frequently Asked Questions
What is the difference between IBAN and SWIFT/BIC?
An IBAN (International Bank Account Number) identifies a specific bank account at a specific branch — it encodes the country, bank, branch, and account number in a single string. A SWIFT code (also called a BIC, Bank Identifier Code) identifies the bank institution itself, not a particular account. When making an international wire transfer you typically need both: the IBAN to identify the destination account and the SWIFT/BIC to identify the destination bank. Within the SEPA zone (EU + UK + a few others), IBAN alone is usually sufficient for credit transfers. SWIFT/BIC is still required for transfers to countries outside the IBAN system, such as the United States, Canada, and Australia.
Is an IBAN safe to share?
Sharing your IBAN is generally safe and necessary for receiving payments. It is the international equivalent of sharing your sort code and account number. Anyone who has your IBAN can send money to your account — they cannot withdraw money or make payments from it. However, in some rare cases fraudsters have used IBANs to set up fraudulent direct debits. If your bank offers the ability to monitor or block unexpected direct debit mandates, it is worth enabling that feature. Never share your IBAN alongside your online banking password or PIN.
Why do IBAN lengths differ by country?
Each country's IBAN structure is based on its existing domestic bank account format (called the BBAN — Basic Bank Account Number). Countries that historically used longer account numbers, such as Malta (31 characters) or Mauritius (30 characters), have longer IBANs because the BBAN portion must fit the local format. Countries with shorter domestic account numbers, such as Norway (15 characters) or Belgium (16 characters), have shorter IBANs. The country code and two check digits are always fixed at 4 characters; the remaining characters are country-specific.
Can an IBAN pass validation but still be wrong?
Yes, but it is very rare. The MOD-97 algorithm is designed to catch the vast majority of single-digit errors and transpositions. However, it is mathematically possible (roughly 1 in 97 chance for a random error) for a mistyped IBAN to produce the correct check digit. The algorithm is not a guarantee that the account exists or belongs to the person you intend to pay — it only confirms the IBAN is structurally valid. Banks perform additional verification (such as matching the IBAN against their account database) when they process a payment.
Does the UK still use IBAN after Brexit?
Yes. UK IBANs remain valid after Brexit. The United Kingdom continues to use the IBAN standard for international payments. UK IBANs are 22 characters long and start with "GB". For domestic UK payments (using Faster Payments or BACS) you typically still use sort code + account number. However, for cross-border payments — including transfers between the UK and EU — the IBAN is required. Many UK banks display your IBAN on your online statement or in the account details section of their app.
What happens if I send money to the wrong IBAN?
If you send money to an IBAN that does not exist, the payment will normally be rejected by the recipient bank and returned to your account within a few working days. If you accidentally send money to a valid IBAN that belongs to someone else, recovery is more difficult. You must contact your bank immediately and request a recall. Under EU payment rules (PSD2), banks are required to make reasonable efforts to recover misdirected funds, but recovery is not guaranteed if the recipient refuses to return the money. Always double-check the IBAN with the payee before initiating a transfer.