Skip to main content

Karakter ve Kelime Sayacı

Karakter, kelime, cümle ve okuma süresini sayın; meta başlık, açıklama ve sosyal medya sınırlarını canlı görün. Emojileri tek karakter sayar, UTF-16 birimi olarak değil.

Veriler tarayıcınızdan çıkmazGüncelleme: Temmuz 2026

Sayımlar

0Karakter
0Boşluksuz karakter
0Görünen karakter
0Kelime
0Cümle
0Paragraf
0Satır
0UTF-8 bayt
0 snOkuma süresi

Okuma süresi, dakikada 200 kelimelik sessiz okuma hızı varsayılarak hesaplanır.

Görünen karakter, kullanıcının tek harf saydığı birimdir. Bir emoji ailesi ya da bayrak, karakter sayımında birden çok birim tutar ama görünen karakter olarak birdir.

Uzunluk sınırları

Sayfa başlığı (title)0 / 60 karakter (uygun)
Açıklama (meta description)0 / 158 karakter (uygun)
Paylaşım başlığı (og:title)0 / 60 karakter (uygun)
Paylaşım açıklaması (og:description)0 / 110 karakter (uygun)
URL kısa adı (slug)0 / 75 karakter (uygun)
Tweet0 / 280 görünen karakter (uygun)

Arama motoru sınırları kesin kural değil, kırpılma noktasıdır: daha uzun bir başlık reddedilmez, sonuç sayfasında üç noktayla kesilir. Tweet sınırı ise gerçek bir üst sınırdır.

Özet (TL;DR)

  • Türkçe metinde karakter sayısı ile bayt sayısı aynı değil: "ş" bir karakter ama iki bayt tutar.
  • Emoji sayarken JavaScript yanıltır. "👨‍👩‍👧".length sonucu 8 verir, oysa ekranda tek bir simge vardır.
  • Veritabanında VARCHAR(50) tanımı çoğu kurulumda 50 karakter değil, 50 bayt anlamına gelir.
  • Meta başlık ve açıklama sınırları karakterle değil piksel genişliğiyle ölçülür; buradaki sayılar güvenli bir yaklaşıklıktır.

Karakter saymak neden göründüğünden zor

Bir metin kutusuna yazdığınız şeyi saymak ilk bakışta metin.length kadar basit görünüyor. İngilizce yazdığınız sürece de öyle. Sorun, Türkçe yazmaya başladığınızda ya da araya bir emoji girdiğinizde çıkıyor: aynı ifade artık üç farklı sayı üretiyor ve hangisinin doğru olduğu, sayıyı nerede kullandığınıza bağlı.

Bu araç üç sayıyı da ayrı ayrı gösteriyor. Hangisine bakmanız gerektiğine karar vermek için önce farkın nereden geldiğini bilmek gerekiyor.

Karakter, kod birimi ve grafem farkı

JavaScript metinleri UTF-16 kod birimleriyle tutar. length size karakter sayısını değil, o kod birimlerinin sayısını verir. Latin harfleri için ikisi aynı çıkar, o yüzden fark uzun süre gözden kaçar:

javascript
'merhaba'.length      // 7, beklendiği gibi'ş'.length            // 1, burada da sorun yok '👋'.length           // 2  <-- tek simge, iki kod birimi'👨‍👩‍👧'.length          // 8  <-- tek simge, sekiz kod birimi // Ekranda görünen birimi saymak istiyorsanız Intl.Segmenter gerekiyorconst seg = new Intl.Segmenter('tr', { granularity: 'grapheme' });[...seg.segment('👨‍👩‍👧')].length   // 1

Ekranda görünen o tek birimin adı grafem. Kullanıcı "kaç karakter yazdım" diye sorduğunda kastettiği şey neredeyse her zaman grafem sayısıdır. Bu araç grafemleri Intl.Segmenter ile sayıyor, desteklenmeyen bir tarayıcıda ise kod noktalarına düşüyor.

Bayt sayısı ne zaman önemli olur

Karakter sayısı ekran için, bayt sayısı depolama için geçerli. UTF-8 kodlamasında ASCII harfleri bir bayt tutar, Türkçe karakterler iki bayt, çoğu emoji dört bayt. Bu fark veritabanı sınırlarında karşınıza çıkıyor:

MetinKarakterBayt
merhaba77
Kürşad69
İstanbul89
👋14
Aynı metin, üç farklı ölçü. Hangisini kullanacağınız sayıyı nereye yazdığınıza bağlı.

Uyarı

MySQL tarafında VARCHAR(50) tanımı, sütunun karakter kümesine göre davranır ve eski utf8 kümesinde dört baytlık karakterleri hiç saklayamaz. Emoji içeren bir alanda utf8mb4 kullanmanız gerekir. PostgreSQL varchar(n) sınırını karakterle sayar, o yüzden aynı sorunu yaşamazsınız.

SEO sınırları ve piksel genişliği meselesi

Meta başlık için 60, açıklama için 155 ila 160 karakter gibi sayılar dolaşıyor. Bu sayılar işe yarıyor ama arama motorunun gerçekte ölçtüğü şey karakter değil, piksel genişliği. Bir "i" ile bir "M" aynı yeri kaplamıyor, dolayısıyla 60 karakterlik iki başlıktan biri tam sığarken diğeri kesilebiliyor.

Pratik yaklaşım şu: sayacı bir sınır değil bir uyarı olarak kullanın. Sınıra yaklaştığınızda önemli kelimeyi başa alın, böylece kesilme olsa bile anlam ayakta kalır.

Kelime sayımında Türkçe ayrıntısı

Kelime saymak boşluklardan bölmek gibi görünse de Türkçe'de kesme işareti araya giriyor. "Türkiye'nin" tek kelimedir; kesme işaretinden bölen bir sayaç bunu iki kelime sayar ve uzun metinlerde fark birikir. Bu araç kesme işaretini kelime içinde kabul ediyor, ancak alıntı işareti olarak kullanıldığı durumları ayırt ediyor.

Okuma süresi hesabı da kelime sayısına dayanıyor. Dakikada 200 kelime kabul ediyorum; teknik metinlerde gerçek hız bunun altında kalır, o yüzden çıkan süreyi alt sınır olarak okumak daha doğru.

Sıkça Sorulan Sorular

Yazdığım metin bir yere gönderiliyor mu?
Hayır. Sayım tamamen tarayıcınızda çalışan JavaScript ile yapılıyor. Sayfa açıldıktan sonra internet bağlantınızı kesseniz bile araç çalışmaya devam eder.
Neden emoji birden fazla karakter sayılıyor?
Çünkü "karakter" kelimesi iki farklı şeyi anlatıyor. JavaScript UTF-16 kod birimini sayar, siz ekranda gördüğünüz simgeyi kastediyorsunuz. Araçta ikisi ayrı satırlarda gösteriliyor: ekrandaki simge sayısı için grafem satırına bakın.
Meta açıklamam kaç karakter olmalı?
Masaüstünde yaklaşık 155 ila 160 karakter güvenli bir aralık, mobilde daha kısa kesiliyor. Ama Google açıklamayı çoğu zaman kendi seçtiği bir metinle değiştiriyor, bu yüzden sayıyı tutturmak için cümleyi bozmaya değmez.
Karakter sayısı ile bayt sayısı neden farklı?
UTF-8 kodlaması her karakteri aynı boyutta saklamıyor. ASCII harfleri bir bayt, Türkçe karakterler iki bayt, emojiler genellikle dört bayt tutuyor. Bir karakter sınırı veritabanı sütununa yazılacaksa bayt sayısına bakmanız gerekir.
Okuma süresi nasıl hesaplanıyor?
Kelime sayısı dakikada 200 kelime kabul edilerek bölünüyor. Bu ortalama bir okuma hızı; kod bloğu içeren teknik metinlerde gerçek süre daha uzun olur.

Mustafa Kürşad BAŞER

Yazılım Mühendisi

Karmaşık sorunları zarif çözümlerle buluşturan, öğrendiklerini paylaşarak değer katmayı seven bir yazılım mühendisi.

Hızlı Erişim

Bağlantı

© 2026 Mustafa Kürşad BAŞER. Tüm hakları saklıdır.