Türkçe karakter kaç bayt tutar, metin boyutu nasıl hesaplanır

UTF-8'de ç, ğ, ı, İ, ö, ş ve ü 2 bayt, ASCII harfleri 1 bayt tutar. Ölçülmüş tablolar, bozuk karakterlerin nedeni, SMS sınırı ve metin boyutunu ölçme adımları.

Arif Akkoyu 9 dk okuma 56 görüntülenme
Tezgâhta küçük bir terazinin kefesinde ç, ğ ve ş harfli tahta taşlar, yanında düz harfli taşlar

UTF-8 kodlamasında ç, ğ, ı, İ, ö, ş ve ü harflerinin her biri 2 bayt tutar. İngilizce alfabedeki harfler, rakamlar ve boşluk 1 bayt, ₺ işareti 3 bayt, 😀 gibi tek kod noktalı bir emoji ise 4 bayttır. Birden çok kod noktasından oluşan emojiler daha fazla bayt tutar. Bu yüzden Türkçe bir metnin bayt sayısı da çoğu zaman karakter sayısından biraz fazla çıkar. Bir veritabanı alanının, form alanının ya da dosyanın sınırı bayt cinsinden verilmişse karakter saymak seni yanıltabilir.

RFC 3629'a göre UTF-8 bayt aralıkları

Bir karakterin UTF-8'de kaç bayt tutacağını o karakterin Unicode kod noktası belirler. UTF-8'i tanımlayan RFC 3629 belgesinin 3. bölümü (3 Kasım 2026'da okuduk) aralıkları aşağıdaki gibi verir.

Kod noktası aralığıUTF-8 bayt sayısıÖrnek
U+0000 ile U+007F1a, 7, boşluk
U+0080 ile U+07FF2ç, ğ, ı, İ, ö, ş, ü
U+0800 ile U+FFFF3₺
U+10000 ile U+10FFFF4😀

Tablodaki altı küçük harfin (ç, ğ, ı, ö, ş, ü) ve İ'nin kod noktaları U+00E7 (ç) ile U+015F (ş) arasında kalır. Bu aralık tümüyle tablonun ikinci satırına girdiği için harflerin her biri 2 bayttır. Noktasız ı (U+0131) ile noktalı büyük İ (U+0130) da aynı gruptadır. Büyük Ç, Ğ, Ö, Ş ve Ü de 2 bayt tutar. Üçüncü satırdaki aralıkta U+D800 ile U+DFFF arasındaki değerler UTF-16'ya ayrılmıştır ve UTF-8'de tek başına karakter olarak kodlanamaz.

Türkçe kelimelerde karakter sayısı ve bayt sayısı

Yalnız ASCII karakterlerden ve Türkçe harflerden oluşan bir metinde bayt sayısı, karakter sayısına Türkçeye özgü harflerin sayısı eklenerek bulunur. Bu kural harfler tek kod noktasıyla yazıldığında geçerlidir, birleşik işaretle yazılmış harflerde sonuç değişir. Aşağıdaki değerleri 3 Kasım 2026'da iki yoldan ölçtük. Python 3.13 ile metni UTF-8'e kodlayıp bayt uzunluğuna baktık, aynı metinleri dijital.link'teki Metin Boyutu Hesaplama aracına da girdik. İki ölçüm her satırda aynı çıktı.

MetinKarakter (kod noktası)UTF-8 baytFark nereden geliyor
Merhaba77Türkçeye özgü harf yok
İstanbul89Yalnız İ 2 bayt
ığüşöç612Altı harfin hepsi 2 bayt
Iğdır 20261012ğ ve ı 2 bayt, boşluk ve rakamlar 1 bayt
₺13Üçüncü aralıkta yer alır
😀14Dördüncü aralıkta yer alır
👍🏽28Başparmak ve ten rengi ayrı kod noktaları, ikisi de 4 bayt

"Iğdır" kelimesinin başındaki büyük I, İngilizce alfabedeki I ile aynı karakterdir ve 1 bayt tutar. Boşluk da sayılır ve o da 1 bayttır.

Karakter sayısı ile bayt sayısı neden farklı çıkar

Fark, UTF-8'in her karaktere aynı sayıda bayt ayırmamasından doğar. ASCII karakterler 1 bayta sığar, a, e, k gibi harfler de buna dahildir. Türkçeye özgü harfler 2 bayt ister, bazı işaretler ve emojiler ise daha fazlasını. Farkın ikinci nedeni, ekranda tek harf gibi görünen şeyin arka planda birden fazla kod noktasından oluşabilmesidir.

Unicode'un UAX #15 normalleştirme biçimleri belgesi NFC ve NFD adlı iki biçim tanımlar. Bu yüzden aynı görünen bir harf iki farklı biçimde kodlanabilir. Bazı kaynaklardan kopyalanan metin ayrışmış biçimde gelebilir. Bu durumda aynı kelime beklediğinden fazla bayt tutar. Ölçtüğümüz "i̇" dizisi de ekranda tek harf gibi durur. Düz i harfi ile onun üstüne binen birleşik üst noktadan (U+0307) oluşur ve 2 kod noktası, 3 bayt tutar. Bizim örneğimizde bu dizi aşağıda anlatılan büyük ve küçük harf dönüşümünden doğdu, ama başka kaynaklardan kopyalanan metinlerde de karşına çıkabilir.

Büyük ve küçük harf dönüşümü bayt sayısını değiştirebilir

Dil belirtilmeden yapılan büyük ve küçük harf dönüşümü Türkçe metnin bayt sayısını değiştirebilir. Unicode'un SpecialCasing dosyası (sürüm 18.0.0, 3 Kasım 2026'da okuduk) İ harfinin genel küçük harfini i ve birleşik üst nokta (0069 0307) olarak verir. Aynı dosyada "tr" ve "az" dilleri için ayrı kurallar bulunur. Bu dillerde İ küçültülünce düz i (0069), I küçültülünce de arkasından birleşik üst nokta gelmiyorsa ı (0131) olur. Küçük i büyütülünce ise İ (0130) elde edilir.

3 Kasım 2026'da Node.js 26 ile yaptığımız denemenin sonuçları aşağıda.

  • "İSTANBUL".toLowerCase() sonucu "i̇stanbul" oldu. Baştaki harf i ile birleşik noktadan oluşuyor, toplam 9 kod noktası ve 10 bayt.
  • "İSTANBUL".toLocaleLowerCase("tr") sonucu "istanbul" oldu, yani 8 kod noktası ve 8 bayt.
  • "ırmak".toUpperCase() sonucu "IRMAK" oldu. Bayt sayısı 6'dan 5'e iniyor, çünkü 2 baytlık ı yerine 1 baytlık I geliyor.

Kodunda Türkçe metni küçültüp bir alana yazıyorsan dili belirt. Aksi hâlde "İSTANBUL" gibi bir değer küçültülünce 1 kod noktası ve 1 bayt büyüyebilir. Sınıra yakın bir alanda bu tek bayt bile taşmaya yol açabilir.

Türkçe harflerin onaltılık UTF-8 baytları

Aşağıdaki yedi Türkçe harfin her biri UTF-8'de iki bayttan oluşur ve ilk bayt C3, C4 ya da C5'tir. Değerleri 3 Kasım 2026'da Python 3.13 ile hesapladık.

HarfKod noktasıUTF-8 baytları (onaltılık)Bayt
ıU+0131C4 B12
İU+0130C4 B02
çU+00E7C3 A72
şU+015FC5 9F2
ğU+011FC4 9F2
öU+00F6C3 B62
üU+00FCC3 BC2
i̇ (i ve birleşik üst nokta)U+0069 ve U+030769 CC 873

Bir log dosyasında ya da veritabanı çıktısında bu baytları görüyorsan harf büyük olasılıkla UTF-8 olarak kaydedilmiştir. Kesin bilgi için dosyanın kodlama ayarına da bak. Son satır, dil belirtilmeden küçültülen İ harfinin neden 1 bayt fazla tuttuğunu gösteriyor.

Türkçe karakterler neden bozuk görünür

"Türkçe" gibi bozuk görünümler, UTF-8 ile kaydedilmiş baytlar tek baytlık bir kod sayfasıyla okunduğunda ortaya çıkar. Tek baytlık kod sayfası her baytı ayrı bir karakter sayar. Böylece Türkçe harfin 2 baytı iki ayrı tuhaf işarete dönüşür.

Doğru harfUTF-8 baytlarıWindows-1252 sanılınca görünen
ıC4 B1ı
İC4 B0İ
çC3 A7ç
şC5 9FÅŸ
ğC4 9FÄŸ
öC3 B6ö
üC3 BCü

"Türkçe karakter" ifadesi de aynı yolla "Türkçe karakter" olarak görünür. Bozuk dizi, baytların hangi kod sayfasıyla okunduğuna göre değişir. Yukarıdaki sonuçları Python 3.13 ile yalnız Windows-1252 için hesapladık. Böyle bir durumda baytlar yerinde durur, sorun okuma biçimindedir. Dosyayı ya da metni UTF-8 olarak yeniden açtığında harfler genellikle düzelir. Metin yanlış okunduktan sonra yeniden kaydedildiyse düzeltmek zorlaşabilir.

Aynı karışıklık web adreslerinde de görülür. Adreslerdeki Türkçe harflerin nasıl yazıldığını URL nedir yazımızda anlattık.

UTF-8, UTF-16 ve Windows-1254'te aynı cümlenin boyutu

15 karakterlik "Türkçe karakter" ifadesi UTF-8'de 17, UTF-16'da 30, Windows-1254 kod sayfasında ise 15 bayt tutar. Bu sayılar bayt sırası işareti (BOM) olmadan geçerlidir. Dosyanın başına BOM eklenirse UTF-8'de 3, UTF-16'da 2 bayt daha eklenir.

KodlamaKural"Türkçe karakter" boyutu
UTF-8ASCII 1 bayt, Türkçeye özgü harf 2 bayt17 bayt
UTF-16U+10000 altı 2 bayt, üstü 4 bayt30 bayt
Windows-1254Her karakter 1 bayt15 bayt

UTF-16 kuralı RFC 2781 belgesinin 2.1. bölümünden geliyor. U+10000'in altındaki her karakter tek bir 16 bitlik sayıyla, yani 2 baytla kodlanır. Daha büyük kod noktaları iki 16 bitlik sayıyla, yani 4 baytla kodlanır. Bu yüzden Türkçe harfler de ASCII harfler de 2 bayt tutar ve 15 karakter 30 bayt eder.

Windows-1254 için Unicode Consortium'un yayımladığı Microsoft Windows-1254 eşleme dosyasına baktık. Dosya, 0x00 ile 0xFF arasındaki baytların neredeyse hepsini birer Unicode karakterine eşler. Yalnız yedi bayt (0x81, 0x8D, 0x8E, 0x8F, 0x90, 0x9D ve 0x9E) tanımsızdır. Örneğin ı 0xFD, İ 0xDD, ğ 0xF0, ş 0xFE, ç ise 0xE7 baytına karşılık gelir. Kiril harfleri için kullanılan Windows-1251 eşleme dosyası da aynı mantıkla çalışır ve desteklediği her Kiril harfini 1 bayta yazar. Ama Unicode'daki bütün Kiril harflerini kapsamaz, örneğin Ӂ (U+04C1) bu tabloda yoktur. Tek baytlık kodlama yer kazandırır ama karşılığında kodlanabilecek karakterler 256 değerle sınırlı kalır. Azericedeki ə (U+0259) Windows-1254 dosyasında yer almaz.

SMS'te Türkçe karakter sınırı UTF-8 ile hesaplanmaz

SMS'in karakter sınırı yukarıdaki UTF-8 bayt hesabıyla belirlenmez, SMS kendi alfabelerini kullanır. Bu alfabeleri tanımlayan 3GPP TS 23.038 belgesine göre (sürüm 18.0.0, 3 Kasım 2026'da okuduk) GSM 7 bit varsayılan alfabeyle yazılan bir mesaj en fazla 160 karakter, UCS2 ile kodlanan bir mesaj en fazla 140 oktet, yani 70 karakter taşır. Uzantı tablosundan gelen her karakter, gösterilebilecek karakter sayısını bir azaltır. Aynı belge Türkçe için ayrı ulusal dil tabloları da tanımlar. Türkçe harfli bir mesajın hangi kodlamayla gideceği gönderim hizmetine ve telefonlara bağlı olduğu için kesin sayıyı gönderim hizmetinin sayacından kontrol et. SMS'e link koyarken dikkat edilecekleri SMS'e link ekleme yazımızda topladık.

Bayt sınırı olan bir alana Türkçe metin sığdırmak

Bayt sınırı olan bir alana kaç karakter sığacağı, metnindeki Türkçeye özgü harflerin oranına bağlıdır. Varsayımsal bir örnek düşün. Bir form alanı en fazla 200 bayt kabul ediyor. Bu sınırı yalnız örnek olsun diye seçtik, belirli bir platformun kuralını anlatmıyor.

  • Metin "Merhaba" gibi yalnız ASCII karakterlerden oluşuyorsa 200 karakter sığar.
  • Metnin her karakteri "ığüşöç" örneğindeki gibi Türkçeye özgü bir harfse 100 karakter sığar.
  • Metindeki oran "Iğdır 2026" ile aynıysa, yani her 10 karakter 12 bayt tutuyorsa, yaklaşık 166 karakter sığar.

Gündelik Türkçe metinlerin çoğu bu iki uç arasında kalır. Sınır bayt cinsinden verilmişse, denetleyen kodu yazarken karakter sayısına değil UTF-8 bayt sayısına bak. Sınır karakter cinsindense o sistemin karakteri nasıl saydığını öğren, çünkü iki ölçü her zaman aynı değildir. Sosyal medya sınırları çoğu zaman karakter cinsinden verilir, örnekleri bio yazma rehberimizde bulabilirsin. Metni kısaltman gerekiyorsa harfi bölmeden kes. Bayt sayısına bakılarak ortadan bölünen 2 baytlık bir harf, son karakterin bozuk görünmesine yol açabilir. Emin olmak için birkaç gerçek metni ölç ve sonucu sınırla karşılaştır.

Metin Boyutu Hesaplama ile metnin boyutunu ölçmek

Metninin kaç bayt tuttuğunu görmenin en kısa yolu onu bir bayt sayacına yapıştırmaktır. Metin Boyutu Hesaplama Dijital Link'in, yani bizim ücretsiz aracımızdır ve doğrudan tarayıcında çalışır. Adımlar aşağıda.

  1. Metin Boyutu Hesaplama sayfasını aç.
  2. Ölçmek istediğin metni Metin alanına yaz ya da yapıştır.
  3. Alanın altındaki sonuca bak. Değer sen yazdıkça güncellenir, basman gereken bir düğme yoktur.

Sonuç satırının etiketi 3 Kasım 2026 itibarıyla "Karakter Adedi" diye yazıyor, ama yanındaki değer bayt sayısıdır ve sonunda B, KB gibi bir birim durur. "Türkçe karakter" yazdığında 15 değil 17 B görürsün. Araç boyutu tarayıcının Blob nesnesiyle hesaplar ve metnin UTF-8 bayt sayısını gösterir. Hesaplama için metin sunucuya gönderilmez ve ölçmeden önce normalleştirilmez. Yapıştırdığın her karakter, boşluk ve satır sonu sayılır. Sonuç B, KB, MB, GB ve TB birimleriyle, en fazla iki ondalık basamakla gösterilir. Burada 1 KB 1024 bayttır. Denememizde tam 1024 baytlık bir metin "1024 B", 1025 baytlık bir metin "1 KB" olarak göründü. Standartta 1024 baytlık birimin adı KiB'dir. Değer yuvarlandığı için 1024 baytı aşan bir metni hassas bir sınırla karşılaştırırken bu gösterim tek tek baytları ayırt etmeyebilir.

Karakter Sayacı ne sayar, bayt sayar mı

Dijital Link'teki Karakter Sayacı bayt saymaz. Metni Gönder düğmesiyle sunucuya yollar ve Karakter, Kelimeler ve Satırlar olmak üzere üç sayı gösterir. Aracın kodunu okuduk, kelime sayımını 3 Kasım 2026'da düzelttik ve aşağıdaki metinleri düzeltmeden sonra canlı formda denedik.

  • Karakter kod noktası sayısıdır. "Türkçe karakter" 15 çıkar, 😀 1 sayılır, 👍🏽 ise iki kod noktası olduğu için 2 sayılır.
  • Tarayıcılar formu gönderirken metin alanındaki her satır sonunu iki karakterlik CR LF çiftine çevirir (HTML standardı). Bu yüzden Karakter Sayacı her satır sonunu 2 karakter sayar. Metin Boyutu Hesaplama ise aynı satır sonunu 1 bayt sayar, çünkü tarayıcı alanın değerini tek karakterlik satır sonuyla verir.
  • Kelimeler harf ve rakam dizilerini sayar. Türkçe harfler kelimeyi bölmez, sayılar da kelime sayılır, noktalama işaretleri sayılmaz. Bu sayım 3 Kasım 2026'dan önce Türkçe harfli kelimelerde yanlış sonuç veriyordu.
  • Satırlar satır sonu sayısının bir fazlasıdır.
MetinKarakterKelimelerGerçekte kaç kelime
Merhaba711
Türkçe karakter1522
Iğdır 20261022
ığüşöç611

Karakter sınırı olan bir alan için Karakter sayısına, kelime sınırı olan bir alan için Kelimeler sayısına bakabilirsin. Bayt sınırı varsa Metin Boyutu Hesaplama'yı kullan.

Metin Boyutu Hesaplama'nın sınırları

Araç metni her zaman UTF-8 olarak sayar. Aynı metni Windows-1254 ya da Windows-1251 gibi başka bir kodlamayla kaydedersen dosyanın diskteki boyutu araçta gördüğünden farklı olabilir. Satır sonları da sayıma girer ve araçta her biri 1 bayttır. Bir dosyada satır sonu CR LF çifti olarak kaydedilirse 2 bayt tutar, bu yüzden çok satırlı ve sınıra yakın bir metni kendi dosyanla da kontrol et. Araç metni normalleştirmediği için ayrışmış biçimde kopyalanmış bir metin, aynı görünen birleşik biçime göre daha fazla bayt gösterebilir.

Kendi metnini denemek için metninin boyutunu bayt olarak ölç.

Bu yazı işine yaradı mı?0 değerlendirmede ortalama 0
Paylaş
Arif Akkoyu YazarArif AkkoyuDijital Link Kurucu - Dijital Pazarlama Uzmanı
Okuduğunu hemen deneBio link sayfanı ücretsiz oluştur, linklerini kısalt, QR kodunu üret. Kredi kartı gerekmez.
Ücretsiz başla