How do I check if an IBAN is valid?
Paste the IBAN and this tool strips spaces, uppercases it and runs the ISO 13616 mod-97 checksum. It moves the first four characters to the end, turns letters into numbers (A=10 up to Z=35), and checks the whole number leaves a remainder of 1 when divided by 97. It also confirms the length matches the country. Everything runs in your browser.
What an IBAN is, and what this checks
An IBAN, or International Bank Account Number, is the standard way to identify a bank account across borders. It starts with a two-letter country code, then two check digits, then the country's own bank and account number packed into a fixed length. This tool takes any IBAN you paste, strips the spaces, uppercases it and tells you three things: whether it passes its built-in checksum, which country it belongs to, and whether its length matches what that country uses.
It is worth being clear about what a pass means. A valid result tells you the IBAN is structurally correct and free of typos, not that a real, open account sits behind it. Only the receiving bank can confirm that. The check runs entirely in your browser, so you can paste a real IBAN to test it and nothing is uploaded.
How the mod-97 check works
Every IBAN carries its own error detection through the check digits in positions three and four. The method, defined in ISO 13616, is a mod-97 calculation. First you move the first four characters (the country code and check digits) to the end. Then you replace each letter with two digits, where A is 10, B is 11, and so on up to Z at 35. That leaves one very long number, which you divide by 97. If the remainder is exactly 1, the checksum passes.
The number is far too big to hold in a normal variable, so it is processed in chunks: you take the remainder so far, bring down the next digit, and take mod 97 again, all the way along. This is the same trick you would use for long division by hand, and it catches almost every single-character typo and most swapped digits.
Country codes and lengths
Each country fixes its IBAN to a set length, so a UK IBAN is always 22 characters while a German one is 22 as well but a French one is 27 and a Maltese one runs to 31. Checking the length is a quick, cheap way to spot a truncated or padded number before you even run the checksum. This tool knows the published lengths for the United Kingdom, Ireland, Germany, France, Spain, Italy, the Netherlands, Belgium and many more, and it flags an IBAN whose length does not match its country.
If you paste something whose first two letters are not a country the tool recognises, it will still run the checksum and tell you the result, but it cannot confirm the length. That is useful for spotting a genuinely malformed entry.
Generating test IBANs
The generate mode builds an IBAN for testing forms, imports and validation code. Pick a country and the tool fills the bank and account portion with random digits, then solves the check digits with the same mod-97 maths in reverse, so the result always passes validation. These are test values only. The check digits are real but the rest is random, so a generated IBAN is not connected to any bank or account and must never be used for a real payment. If you need to test how your software handles a rejection, corrupt one character of a generated IBAN and paste it back into the validator to watch the checksum fail.
How we work it out
IBAN validation by the ISO 7064 mod-97-10 checksum: strip spaces and uppercase, check the length is 15 to 34 and matches the country's published length, move the first four characters to the end, replace each letter with two digits (A=10 to Z=35), then compute the big number mod 97 in chunks; it is valid only if the remainder is 1. Test IBANs are generated by filling a random BBAN and solving the check digits the same way.
Frequently asked questions
Does this tool check that the bank account actually exists?
No. It only checks that the IBAN is structurally correct: the right length for its country and a passing mod-97 checksum. A valid IBAN can still point at a closed or never-opened account. Only the receiving bank can confirm an account is real and active.
What does the mod-97 check actually catch?
It catches almost all single-character typos and most digit swaps, which is exactly what it was designed for. If you mistype one character the remainder will almost never come back as 1, so the IBAN is flagged invalid. It cannot catch an error that happens to produce another valid IBAN, which is rare but possible.
Are the generated IBANs safe to use?
They are test values only. The country and check digits are correct, so they pass validation, but the bank and account portion is random and is not tied to any real bank or account. Use them for testing forms, imports and validation code, never for a real payment.
Why does my valid IBAN get rejected somewhere else?
Some systems also check the national bank code and account number format, not just the length and checksum. An IBAN can pass the mod-97 test here yet fail a stricter check that looks up a real sort code or bank identifier. This tool checks the international structure, which is the part every IBAN shares.
Is my IBAN sent anywhere?
No. All the checking and generating happens in your browser with plain JavaScript. Nothing you type is uploaded, logged or shared, so it is safe to paste a real IBAN to check it.