What Is This Tool?
An IBAN (International Bank Account Number) is a standardized bank account identifier defined by ISO 13616, made of a 2-letter country code, 2 check digits, and a country-specific Basic Bank Account Number (BBAN). Its length and structure vary by country — a German IBAN is 22 characters, an Italian one is 27.
The 2 check digits aren't random: they're computed from the rest of the IBAN using the ISO 7064 MOD-97-10 algorithm, the same checksum every real banking system uses to catch typos before a transfer is even attempted.
This tool generates the BBAN portion randomly, then runs it through the exact same MOD-97 calculation a bank would use — so the result looks and validates like a real IBAN, while the underlying digits are made up and don't correspond to any actual account.
Why Use It?
- Test forms, payment flows, and IBAN validators without needing real customer bank details.
- Correct MOD-97 checksum, so the generated IBANs pass the same validation logic real IBANs do.
- Covers 8 countries with distinct formats: Germany, France, UK, Spain, Italy, Netherlands, Poland, Turkey.
- Generate up to 20 at once for seeding test databases or demo environments.
- Runs entirely in your browser — nothing generated here is sent anywhere or stored.
How to Use
- Select a country from the dropdown.
- Set how many IBANs you want (1–20).
- Click "Generate IBANs".
- Click "Copy All" to copy the full list.
Example
Input
Country: DE, Count: 2Output
DE89 3704 0044 0532 0130 00
DE87 1009 0000 5628 8283 60Both check digits are computed correctly, so each IBAN validates — but the account numbers are randomly generated and fictional.
Common use cases
- QA and form testing: verify that signup or payment forms correctly accept, reject, and format IBAN input across multiple countries.
- Seeding test databases: bulk-generate realistic-looking IBAN values to populate staging environments without exposing real financial data.
- Demo and sales environments: fill product demos with data that looks legitimate but carries zero financial risk.
- Validator unit tests: use known-good fake IBANs (and deliberately broken variants) to test your own MOD-97 validation logic.
- Frontend development: mock API responses that include IBAN fields before the real backend integration is ready.
Important: not for real transactions
The IBANs produced here are structurally valid but entirely fictional. The country code and check digits are correct by construction, but the account-holding bank code and account number inside the BBAN are random digits with no connection to any real financial institution or account holder.
Do not enter these into real payment forms, invoices, wire transfer instructions, or anywhere money could actually move. They exist solely to help developers and testers exercise IBAN-handling code safely.
How the checksum actually works
IBAN validation follows ISO 7064's MOD-97-10 scheme: move the 4-character prefix (country code + check digits) to the end of the string, replace it with "00", convert every letter to a two-digit number (A=10 through Z=35), and treat the result as one very large integer. That integer, taken modulo 97, should equal 1 for a valid IBAN.
To generate a valid one, the tool does this in reverse: it builds a random BBAN, appends the country code and "00", computes the remainder mod 97, and sets the check digits to 98 minus that remainder. This is the exact same math real banking software uses — the only fictional part is the account data itself.
Frequently Asked Questions
Are these real bank accounts?
No. This tool is for software testing and development only. Every IBAN it produces is a fictional, randomly generated number — it does not correspond to any real bank account. Never use these for actual transfers, invoices, or transactions.
Why do these fake IBANs pass validation, then?
Because the check digits are calculated with the same ISO 7064 MOD-97 formula real banks use. Validation only confirms the checksum is internally consistent with the rest of the number — it can't (and doesn't try to) confirm an account actually exists.
What's a good use case for this?
QA testing IBAN input fields, seeding a staging or test database with plausible-looking payment data, populating demo environments, and unit-testing IBAN validation or formatting code.
How is the MOD-97 check digit calculated?
The BBAN, country code, and "00" placeholder are rearranged, letters are converted to numbers (A=10 … Z=35), and the whole numeric string is reduced modulo 97 using chunked arithmetic. The check digits are 98 minus that remainder, padded to two digits.
Is my generated data stored anywhere?
No. Generation happens locally in your browser using Math.random() for the account digits. Nothing is transmitted, logged, or stored on any server.