Bank Code & Payment Tools

IBAN Validator

Validate an IBAN properly: the country's published length and character pattern, the ISO 7064 mod-97 check digits recomputed step by step, the national bank and account parts split out, and bulk checking for a whole list.

  • Valid or invalid with the reason
  • Mod-97 working shown
  • Bank, branch and account parts, CSV export
Runs in your browser

Everything you paste, type or drop is processed in this browser tab. It is not uploaded, logged, stored or sent to analytics.

IBAN check workspace

1 IBANs to check

Try a published specimen:

Spaces, hyphens and lower case are ignored. Up to 2,000 lines. Nothing leaves this browser tab.

Build the check digits for a new IBAN

Enter a country code and the national account number (the BBAN) to see the two check digits ISO 7064 gives it. Use this to check a number your bank has given you, not to invent an account.

2 Result

Paste an IBAN on the left, or load one of the specimens, and the verdict appears here.

What the IBAN Validator does

This page checks an IBAN three ways: the country's registered length, the character pattern that country's national account number must follow, and the ISO 7064 mod-97-10 check digits, recomputed in front of you. Paste one IBAN and you get the verdict with the arithmetic shown and the national part split into named fields; paste a list and you get a row per line with a reason for each failure, ready to export.

Everything runs in this browser tab. The IBANs you paste are never uploaded, logged or stored, which matters because an IBAN plus a name is enough for a direct debit mandate in much of Europe.

A pass means the string is well formed. It does not mean the account exists, that it belongs to the person you are paying, or that money sent to it will arrive - those are different questions, and no arithmetic can answer them.

How to use it

  1. Paste an IBAN into the box, with or without spaces. The verdict, the mod-97 working and the field breakdown appear as you type.
  2. To check a whole list, paste one IBAN per line. The page switches to a table with a row per line, a reason for every failure, and a flag on any IBAN that appears twice.
  3. Read the findings. Length and pattern problems point at a typo or a truncated field; a mod-97 failure with the right length usually means one character was mistyped or two were swapped.
  4. Open 'Build the check digits' if you have a country code and a national account number and want to see what the two check digits should be.
  5. Export the result as CSV or JSON, or copy it, if you need to attach the check to a payment file review.

Reading the results

Well formed means length, pattern and check digits all agree. It is the strongest thing a string can say about itself, and it catches the overwhelming majority of typing and copying errors.

A mod-97 remainder that is not 1 is decisive: at least one character is wrong. The check digits catch every single-character error and almost every transposition of two adjacent characters, which is exactly the family of mistakes people make when retyping a number from an invoice.

A country that is not in the bundled registry subset still gets a mod-97 check, but no length or pattern check, and the page says so instead of implying a fuller verdict than it gave.

Some countries keep their own check digit inside the national part - the French cle RIB, the Italian CIN, the Belgian last two digits. Passing mod-97 says nothing about those, and the page flags them rather than quietly claiming them.

Worked example: the published United Kingdom specimen, checked by hand

Take GB82 WEST 1234 5698 7654 32, the specimen in the IBAN Registry documentation. Stripped of spaces it is 22 characters, which is the registered length for the United Kingdom, and the national part matches the registered pattern 4!a6!n8!n: four letters WEST (the first four characters of the bank's BIC), six digits 123456 (the sort code) and eight digits 98765432 (the account number).

Now the check digits. Move the first four characters to the end to get WEST12345698765432GB82, then replace each letter by its position in the alphabet plus 9, so W becomes 32, E becomes 14, S becomes 28, T becomes 29, G becomes 16 and B becomes 11. That gives the number 3214282912345698765432161182. Dividing it by 97 leaves a remainder of 1, which is what a valid IBAN always leaves.

Change the final 2 to a 3 and the remainder becomes 2, so the page rejects it and says the mod-97 check failed rather than guessing which character was wrong - the algorithm detects the error but cannot locate it.

Formulas and scoring rules

Check digit test
remainder = numeric(BBAN + country + check) mod 97; valid when remainder = 1Letters become 10 to 35 for A to Z. The number is reduced seven digits at a time, so no intermediate value ever overflows.
Check digits for a new IBAN
check = 98 - (numeric(BBAN + country + "00") mod 97), padded to two digitsThis is ISO 7064 mod-97-10, the same system ISO 11649 uses for RF creditor references.
Total length
length = 4 + length(BBAN)Fixed per country by the IBAN Registry: 15 for Norway, 31 for Malta. An IBAN is never longer than 34 characters.

What the mod-97 check actually catches

ISO 7064's mod-97-10 was chosen because it is unusually strong for two check characters. It detects every single-character error, every transposition of two adjacent characters, and the great majority of random multi-character corruptions - roughly 98.97% of them, since only one remainder in 97 passes by chance.

What it cannot do is tell you which character is wrong. The remainder is a single number computed over the whole string, so a failure means 'something here is not right' and nothing more. If you are chasing a failing IBAN, compare it against the bank's own statement character by character rather than trying to reverse-engineer the arithmetic.

Validation is not verification

There are five different questions people collapse into 'is this IBAN valid?'. Is it syntactically well formed? Do its check digits agree? Is it in a published directory? Which institution does it name? And does the account exist and belong to my payee? This page answers the first two, names the institution only as far as the national fields allow, and cannot answer the last two at all.

For the last one, the tools that exist are the bank's own confirmation-of-payee service or an account-verification API operated under contract - both of which involve sending the account details to a third party. If a free web page claims to confirm that an IBAN belongs to a named person, ask where it got the name.

Limitations: what the result does not prove

  • Syntax and checksum only. It cannot confirm that the account exists, that it belongs to your payee, that funds are available, or that a payment will succeed.
  • The bundled country table is a subset of the SWIFT IBAN Registry, not the whole of it. An IBAN from a country outside the subset gets the mod-97 check and an explicit warning that no length or pattern check was run.
  • National check digits inside the account number - the cle RIB, the CIN, Belgium's last two digits - are not recomputed. Mod-97 passing does not mean those pass.
  • IBAN structures change when a country joins the scheme or a bank renumbers. The table is dated; for a payment that matters, the registry and the beneficiary's bank are the authorities.
  • A well-formed IBAN can still be a fraudulent one. Invoice-redirection fraud uses perfectly valid IBANs belonging to the wrong person.

Privacy: where your data goes

Everything you paste, type or drop is processed in this browser tab. It is not uploaded, logged, stored or sent to analytics. Session recording and tag-manager scripts are switched off on this page.

Standards and sources

Frequently asked questions

What does it mean if an IBAN fails the mod-97 check?

At least one character of the IBAN is wrong - a mistyped digit, a swapped pair, a missing or extra character. The check cannot say which one, because the remainder is computed over the whole string at once. Compare the number against the bank's own statement rather than trying to patch it.

Why is my IBAN the wrong length when the account number looks right?

Each country has one fixed IBAN length, and it includes the bank and branch fields as well as the account number. A German IBAN is always 22 characters, a Norwegian one 15. If yours is short, a leading zero has probably been dropped by a spreadsheet, which stores the IBAN as text but strips zeros when it guesses the column is numeric.

Can an IBAN validator tell me which bank an account belongs to?

Only as far as the national fields go. British and Dutch IBANs carry the first four characters of the bank's BIC, French and Italian ones carry a numeric bank code, and German ones carry the Bankleitzahl. Mapping those codes to a current bank name needs a directory this page does not bundle, and mergers make old mappings wrong.

Is it safe to paste an IBAN into a website?

Not as a general rule - an IBAN with an account holder's name is enough to set up a direct debit in the SEPA area. This page is built so the question does not arise: the check runs entirely in your browser, nothing is sent to any server, and you can confirm that in your browser's network panel.

What is the difference between an IBAN and a BIC?

An IBAN identifies one account; a BIC identifies one financial institution. Many SEPA payments no longer need the BIC because the IBAN's country and bank fields are enough to route them, but payments outside the SEPA area usually still ask for both.

Why does my IBAN pass here but get rejected by my bank?

Because your bank is answering a different question. Its rejection normally means the account is closed, the name does not match, the account cannot receive that payment type, or its own directory has no record of that bank code - none of which is visible in the string itself.

Do IBANs have national check digits as well?

Several countries do. France has the cle RIB, Italy has the CIN letter, Belgium's last two BBAN digits are their own mod-97 check, and Norway, Finland, Poland and Portugal all carry national check digits inside the account number. Those are separate from the IBAN's own two check digits and are not recomputed here.

Can I make up a valid IBAN for testing?

You can build a string that passes the arithmetic - the 'build the check digits' box does exactly that, and the IBAN format guide shows a synthetic example per country. Use those only as test fixtures. A number that passes mod-97 may still be someone's real account, so never send money to one.

Last reviewed by the A2Z.Tools team against the sources listed above.

Rate this tool

Was this tool useful? Your feedback helps us improve it.

No ratings yet — be the first to rate this tool.
Your rating (required)
0 / 2000

Please do not include passwords, payment details or other sensitive information.

Your feedback is sent privately to the A2Z.Tools team and will not be posted publicly.