Skip to main content

IBAN Doğrulama

IBAN sağlamasını tarayıcınızda kontrol edin; Türkiye ve 75 ülke desteklenir. Veri hiçbir yere gitmez, sağlamanın tutması hesabın var olduğunu göstermez.

Veriler tarayıcınızdan çıkmazYayın: Ağustos 2026
IBAN

Bir IBAN girin, sonuç anında burada görünür.

Girdiğiniz IBAN tarayıcınızdan çıkmaz, hiçbir sunucuya gönderilmez.

Özet (TL;DR)

  • IBAN sağlaması, karakterlerin kendi içinde tutarlı olduğunu söyler. Hesabın var olduğunu, kime ait olduğunu veya para alabileceğini göstermez; bunu yalnızca banka bilir.
  • Mod-97 hesabı 28 haneli bir sayı üretir. Number() ile hesaplamak güvenli tam sayı sınırını aştığı için hem geçerli hesapları reddeder hem geçersizleri kabul eder.
  • Uzunluk kontrolü zorunludur: mod-97 tek başına, bir hanesi eksik veya fazla bir IBAN'ı yaklaşık doksan yedide bir olasılıkla kabul eder. Türkiye için IBAN tam olarak 26 karakterdir.
  • Büyük harfe çevirmeden önce ASCII kontrolü yapılmalıdır. toUpperCase() bazı ASCII olmayan harfleri A-Z aralığına eşler ve bu, biçim kontrolünü atlatır.

Sağlama ne söyler, ne söylemez

IBAN'ın üçüncü ve dördüncü karakteri sağlama hanesidir ve geri kalanından hesaplanır. Tutuyorsa, IBAN'ı yazarken veya kopyalarken bir karakteri kaçırmadığınızı anlarsınız. Tutmuyorsa bir yerde hata vardır.

Söylemediği şey daha önemlidir: hesabın açık olup olmadığını, kime ait olduğunu, para kabul edip etmediğini bilmez. Sağlamadan geçen sonsuz sayıda IBAN üretilebilir ve bunların hemen hepsi hiçbir hesaba karşılık gelmez. Bu yüzden bu araç sonucu "geçerli hesap" değil "sağlama doğru" diye yazar.

Bilgi

Bir formda IBAN alıyorsanız sağlama kontrolü ilk adımdır: kullanıcının yazım hatasını anında yakalar ve boşuna banka sorgusu yapılmasını önler. Hesabın gerçekten var olduğunu ancak bankanız doğrulayabilir.

Mod-97 algoritması

IBAN doğrulaması ISO 13616 ile tanımlıdır ve üç adımdan oluşur: ilk dört karakter sona alınır, harfler sayıya çevrilir (A=10, B=11, ... Z=35), elde edilen büyük sayının 97 ile bölümünden kalan 1 olmalıdır.

text
TR33 0006 1005 1978 6457 8413 26 1. İlk dört karakteri sona al:   000610051978645784132612 + TR33 2. Harfleri sayıya çevir (T=29, R=27):   0006100519786457841326292733 3. Kalan 1 ise IBAN geçerlidir.

Number() ile hesaplamak neden çalışmaz

Bir Türk IBAN'ı bu dönüşümden sonra 28 haneli bir sayıya dönüşür. JavaScript'te Number.MAX_SAFE_INTEGER 16 hanedir; bu sınırın ötesinde tam sayılar artık kesin temsil edilemez.

javascript
// Yukarıdaki GEÇERLİ IBAN için gerçek kalan 1'dirNumber(digits) % 97   // -> 96, taşma nedeniyleBigInt(digits) % 97n  // -> 1n, doğru // BigInt olmadan da olur; her ara sonuç 970'in altında kalır,// yani hiçbir çalışma ortamında taşma riski yoktur:let r = 0;for (const ch of digits) r = (r * 10 + Number(ch)) % 97;

Bu hatanın sinsi tarafı, gözle fark edilmemesidir: doğrulayıcı çalışıyor görünür, bazı IBAN'ları doğru bazılarını yanlış değerlendirir ve kimse nedenini anlamaz. Bu araç iteratif yöntemi kullanır.

Uzunluk kontrolü neden ayrıca gerekli

Mod-97 tek başına yeterli değildir. Bir hanesi eksik veya fazla girilmiş bir IBAN, tesadüfen 1 kalanını verebilir; olasılık kabaca doksan yedide birdir. Yani yüz kullanıcıdan biri, eksik yazdığı IBAN'ın kabul edildiğini görür.

ISO 13616 her ülke için sabit bir uzunluk tanımlar. Türkiye 26, Almanya 22, Birleşik Krallık 22, Malta 31 karakterdir. Bu araç 76 ülkenin uzunluğunu bilir ve önce onu kontrol eder, böylece o doksan yedide birlik pay sıfırlanır.

Büyük harfe çevirmeden önce ASCII kontrolü

Bu, geliştirme sırasında ölçülerek bulunan ve düzeltilen bir açıktı. Biçim kontrolünü büyük harfe çevirdikten sonra yapmak, ASCII olmayan bazı harflerin içeri sızmasına izin verir; çünkü toUpperCase() onları A-Z aralığına eşler.

text
ıE64ıRCE92050112345678    noktasız ı, I'ye dönüşür (Türkçe klavyede var)GB82WEſT12345698765432    U+017F uzun s, S'ye dönüşürGB82WE12345698765432     U+FB05 ligatürü ST'ye GENİŞLER

Sonuncusu en kötüsüdür: 21 karakterlik bir girdi, genişleme uzunluk ölçülmeden önce gerçekleştiği için 22 karakterlik kontrolü geçer. Yani uzunluk kontrolü, kullanıcının hiç yazmadığı bir dizeyi doğrular. Çözüm, ham girdiyi büyük harfe çevirmeden önce ASCII olarak sınamaktır.

Veri tarayıcınızdan çıkmaz

Girdiğiniz IBAN hiçbir sunucuya gönderilmez, kaydedilmez ve günlüğe yazılmaz. Hesaplama tamamen tarayıcınızda çalışır; sayfa yüklendikten sonra internet bağlantınızı kesseniz bile araç çalışmaya devam eder.

Sıkça Sorulan Sorular

Sağlama doğru çıktı, hesap gerçek mi?
Hayır. Sağlama yalnızca karakterlerin birbiriyle tutarlı olduğunu gösterir. Hesabın açık olup olmadığını, kime ait olduğunu veya para kabul edip etmediğini yalnızca banka bilir. Sağlamadan geçen sonsuz sayıda IBAN vardır ve hemen hepsi hiçbir hesaba karşılık gelmez.
Hangi ülkeler destekleniyor?
ISO 13616 kayıtlı 76 ülke. Her biri için o ülkeye özgü sabit uzunluk kontrol edilir, ardından mod-97 hesaplanır. Tanımadığı bir ülke kodu görürse tahmin yürütmez, bilinmeyen ülke olduğunu söyler.
Boşluklu veya küçük harfli yazabilir miyim?
Evet. IBAN'lar genellikle dörtlü gruplar hâlinde yazılır ve öyle kopyalanır. Boşluklar ve tireler bilgi taşımaz, temizlenir. Küçük harf de kabul edilir.
Kendi kodumda kullanabilir miyim?
Aynı algoritmayı uygulayabilirsiniz, önerilir de. İki tuzağa dikkat edin: mod-97 için Number() kullanmayın, ve ülkeye özgü uzunluğu ayrıca kontrol edin. Üçüncüsü, biçim kontrolünü büyük harfe çevirmeden önce yapın.
Girdiğim IBAN kaydediliyor mu?
Hayır. Hesaplama tarayıcınızda çalışır, ağ üzerinden hiçbir şey gönderilmez. Sayfayı yükledikten sonra bağlantınızı kesip denerseniz aracın çalışmaya devam ettiğini görürsünüz.

Bu aracı ve yazıyı hazırlayan: , Senior Software Engineer. Yayın: Ağustos 2026.