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.
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
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.
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.
// 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.
ıE64ıRCE92050112345678 noktasız ı, I'ye dönüşür (Türkçe klavyede var)GB82WEſT12345698765432 U+017F uzun s, S'ye dönüşürGB82WEſt12345698765432 U+FB05 ligatürü ST'ye GENİŞLERSonuncusu 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: Mustafa Kürşad Başer, Senior Software Engineer. Yayın: Ağustos 2026.