Tool

IBAN Validator

Checks format, per-country length, and MOD 97 check digits per ISO 13616. Runs 100% in your browser.

100% Client-SideNo Server LogsNo Signup

⚠️ This tool only verifies the format and check digits against ISO 13616. A valid IBAN does not guarantee the account exists, is open, or belongs to a specific person or institution. Always confirm with the recipient or their bank before initiating a transfer.

What is an IBAN and how does the IBAN validator work?

An IBAN (International Bank Account Number) is a standardized international format for identifying bank accounts across borders. Defined by ISO 13616, an IBAN consists of up to 34 alphanumeric characters: a two-letter country code, two check digits, and a Basic Bank Account Number (BBAN) that varies by country. The IBAN validator reads this structure to confirm a number is well-formed before you wire money.

IBAN validation has three layers. First, format validation checks the character set is correct — letters A-Z and digits 0-9 only. Second, length validation verifies the IBAN length matches the expected length for its country (22 characters for Germany, 27 for France, and so on). Third, MOD 97-10 checksum — the mathematical backbone of ISO 13616 — rearranges the IBAN, converts letters to numbers, and computes the remainder modulo 97. A valid IBAN always yields a remainder of 1, and the IBAN validator shows this as a green check only when all three layers pass.

IBAN structure: what the IBAN validator checks

An IBAN is read left to right in three blocks. The diagram below shows how a real German IBAN splits into country code, check digits, and BBAN. The IBAN validator decodes these blocks automatically so you can see exactly which part of the number you are looking at.

D E   8 9   3 7 0 4 0 0 4 4   0 5 3 2 0 1 3 0 0 0
Country
chars 1–2
Check digits
chars 3–4
BBAN
chars 5–22
  • Country code (2 letters) — ISO 3166, e.g. DE for Germany.
  • Check digits (2 digits) — MOD 97-10 checksum of the rest of the IBAN.
  • BBAN (up to 30 chars) — country-specific; here 37040044 is the bank code and 0532013000 the account number.

The BBAN length and internal split differ per country, which is why the IBAN validator keeps a per-country length table. The total IBAN length ranges from 15 (Norway) to 34 characters, and every country fixes its own length exactly.

How to use this IBAN validator

The IBAN validator takes a few seconds and runs entirely in your browser. Follow these steps to check any account number:

  1. Paste or type the IBAN into the field above — spaces are fine, they are stripped automatically.
  2. Watch the result panel: a green check means all three layers (format, length, MOD 97) passed.
  3. Read the breakdown of country code, check digits, and BBAN to confirm the country matches your expectation.
  4. If a check fails, the IBAN validator shows which layer failed and why — fix the highlighted issue and re-validate.
  5. Use the load-example menu to try a known-good IBAN from a supported country.
  6. Confirm with the recipient's bank before sending money — a valid format does not prove the account exists.

Common reasons an IBAN fails the IBAN validator

  • Typo in the country code: "DE" vs "DK" — one character changes the expected length and check digits.
  • Missing or extra characters: A German IBAN must be exactly 22 characters. Spaces and formatting don't count, but missing digits do.
  • Wrong check digits: If any character in the IBAN is mistyped, the MOD 97 check will catch it with 99.9%+ accuracy.
  • Using a domestic account number: Many people paste their local account number thinking it's an IBAN. Always get the IBAN from the recipient.

IBAN length per country: what the IBAN validator expects

Because each country fixes its own IBAN length, the IBAN validator compares your input against a per-country length table. A few common examples:

  • DE · Germany · 22
  • FR · France · 27
  • GB · United Kingdom · 22
  • IT · Italy · 27
  • ES · Spain · 24
  • NL · Netherlands · 18
  • BE · Belgium · 16
  • CH · Switzerland · 21
  • AT · Austria · 20
  • PL · Poland · 28
  • SE · Sweden · 24
  • NO · Norway · 15

For the full structure of any country — BBAN pattern, field breakdown, and a sample IBAN — open the IBAN format page for that country. The IBAN validator uses the same length table to decide whether your input is the right size.

Beyond the IBAN validator: validate IBANs in your own code

The same MOD 97-10 check this site runs in your browser. Copy a self-contained snippet — no API key, no network call for the JS/Python versions.

// Validate an IBAN client-side — no API, no data leaves the browser.
// Full per-country length table: https://ibantool.com/iban
const LENGTHS = { DE: 22, FR: 27, IT: 27, ES: 24, GB: 22, NL: 18, BE: 16,
  CH: 21, AT: 20, PL: 28, SE: 24, NO: 15, DK: 18, FI: 18, IE: 22, PT: 25 };

function cleanIban(s) {
  return s.replace(/[^A-Z0-9]/gi, "").toUpperCase();
}

function mod97(iban) {
  const rearranged = iban.slice(4) + iban.slice(0, 4);
  const digits = rearranged.replace(/[A-Z]/g, (c) => (c.charCodeAt(0) - 55).toString());
  let rem = 0;
  for (const d of digits) rem = (rem * 10 + Number(d)) % 97;
  return rem;
}

function validateIban(input) {
  const iban = cleanIban(input);
  if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]+$/.test(iban)) return { valid: false, reason: "bad format" };
  const len = LENGTHS[iban.slice(0, 2)];
  if (len && iban.length !== len) return { valid: false, reason: `length should be ${len}` };
  if (mod97(iban) !== 1) return { valid: false, reason: "check digits" };
  return { valid: true, iban };
}

validateIban("DE89 3704 0044 0532 0130 00");
// { valid: true, iban: "DE89370400440532013000" }

Note: the curl example calls a third-party service (openiban.com) because ibantool itself has no server API — everything here runs in the browser. Structural validation does not confirm an account exists.

IBAN validator FAQ

How does the IBAN validator work?
The IBAN validator checks three things per ISO 13616: the character set (2 letters, 2 digits, then A–Z / 0–9), the per-country length, and the MOD 97-10 check digits. An IBAN passes only when all three checks succeed. Everything runs in your browser, so the value you paste never reaches a server.
What is the MOD 97 check?
MOD 97-10 is the checksum algorithm ISO 13616 uses. The IBAN is rearranged (BBAN first, then country code and check digits), letters are converted to numbers (A=10, B=11, …, Z=35), and the whole integer is taken mod 97. A valid IBAN always yields a remainder of 1. This catches single-digit errors and most adjacent-digit swaps with over 99.9% accuracy, which is why the IBAN validator can flag a typo from a single wrong character.
Does the IBAN validator tell me the account exists?
No. The IBAN validator only confirms the number is structurally well-formed and the check digits are correct. It does not verify the account exists, is open, or belongs to anyone — that requires a bank-side lookup. Always confirm with the recipient's bank before sending money, even when the IBAN validator shows a green check.
Why does my IBAN fail the length check?
Each country has a fixed IBAN length defined in ISO 13616. A German IBAN is always 22 characters, a Belgian one 16, a French one 27. If your IBAN is too short or too long for its country code, the IBAN validator fails the length check — usually a typo, a missing or extra character, or a domestic account number pasted by mistake.
Is this IBAN validator free and private?
Yes. The IBAN validator is free with no signup, and validation runs entirely client-side. The IBAN you paste never leaves your browser, is not logged, and is not stored. There is no query limit and no API key.
Can I use the IBAN validator for payment integration testing?
Yes. Paste a test IBAN to confirm it passes format and MOD 97 checks, then inspect the breakdown of country code, check digits, and BBAN. For sample IBANs per country, use the load-example menu or see the IBAN example pages linked from each country format page.
What is the difference between an IBAN and a SWIFT/BIC code?
An IBAN identifies a specific bank account; a SWIFT/BIC code identifies the bank itself. For a cross-border transfer you usually need both — the SWIFT code of the receiving bank and the beneficiary's IBAN. Use this IBAN validator for the account number and the SWIFT code lookup for the bank identifier.
Which countries does the IBAN validator support?
The IBAN validator covers the ISO 13616 registry for 50+ countries, including Germany, France, the United Kingdom, Spain, Italy, the Netherlands, Belgium, Switzerland, Austria, Poland, Sweden, Norway, Denmark, Finland, Ireland, Portugal, and more. Each country has its own fixed length and BBAN structure, which the validator checks automatically.
Should I include spaces when I enter an IBAN?
You can, but you don't have to. The IBAN validator strips spaces, hyphens, and other separators before checking, so 'DE89 3704 0044 0532 0130 00' and 'DE89370400440532013000' validate identically. The four-character grouping is only the human-readable presentation defined by ISO 13616.
What does a valid IBAN look like?
A valid IBAN starts with a two-letter country code, two check digits, and a country-specific BBAN. For example, DE89370400440532013000 is a valid German IBAN: DE (Germany) + 89 (check digits) + 37040044 (bank code) + 0532013000 (account number). Paste it into the IBAN validator to see each field broken out.