How this works
Every IBAN ends in a two-digit checksum right after the country code. I check it with the ISO 7064 formula (MOD-97-10): strip spaces, uppercase everything, confirm the length for the country, move the first four characters to the end, swap letters for numbers and take the remainder of dividing by 97. If it is 1, the number is well-formed. For a Portuguese IBAN, I also break the BBAN into its parts: 4 bank digits, 4 branch digits, 11 account digits and 2 national check digits.
- 1
I clean what you typed
I strip spaces and uppercase the input. An IBAN is case-insensitive and the spaces are only for readability.
- 2
I check the length
Each country has a fixed length. Portugal is 25 characters; Spain 24; Germany 22. A wrong length fails immediately.
- 3
I run the checksum
I apply MOD-97-10 over the whole number, digit by digit, so precision never overflows. Valid if the remainder is 1.
- 4
I split the BBAN (PT only)
For Portugal I show the bank (0033, 0035…), branch, account number and the 2 national check digits.
Frequently asked
Does this tell me which bank the IBAN belongs to?
For a Portuguese IBAN I show the bank code (the first 4 digits of the BBAN) — for instance, 0033 is Millennium bcp, 0035 is Caixa Geral de Depósitos. I query no database and do not confirm the account holder: the check is purely mathematical and runs in your browser. For other countries I show only the country and the checksum result.
What is MOD-97-10?
It is the ISO 7064 formula that protects every IBAN. You move the first 4 characters to the end, swap letters for numbers (A=10, B=11, … Z=35) and divide the huge number by 97. If the remainder is exactly 1, the IBAN passes. Because the number is enormous, I compute the remainder digit by digit to avoid rounding errors.
Is an IBAN that passes the formula definitely correct?
It means there are no obvious typos — a swapped digit or two transposed digits almost always fail the check. But the account may be closed, belong to someone else or never have existed. Before sending money, confirm the IBAN with whoever gave it to you.
Why does my IBAN have spaces and the validator still accepts it?
Banks usually print the IBAN in groups of four to make it easier to read, but the spaces are not part of the number. I strip spaces and uppercase everything before checking, so you can paste it however it comes.
Which countries does this tool recognise?
I check the exact length for Portugal, Spain, France, Germany, the Netherlands, the UK, Italy, Ireland and Belgium. For any other country I still run the MOD-97-10 checksum, but I do not compare the length against that country’s official spec.
DISCLAIMER
This tool only checks the IBAN’s mathematics — length and checksum — and, for Portugal, splits the BBAN fields. It does not confirm whether the account exists, is active or who it belongs to, nor the bank’s name or address. It queries no database. Before making a transfer, always confirm the IBAN with the recipient. Not financial advice.