Skip to main content

URL Slug Oluşturucu

Başlığı temiz bir URL slugına çevirin. Türkçe doğru işlenir; yaygın aksan temizleme yöntemi "Işık" kelimesini sessizce "is-k" yapar.

Veriler tarayıcınızdan çıkmazYayın: Ağustos 2026
Ayraç
Seçenekler
En fazla

Soldaki alana bir başlık yazın, slug anında burada oluşur.

Metin tarayıcınızda işlenir, hiçbir sunucuya gönderilmez.

Özet (TL;DR)

  • Yaygın kullanılan aksan temizleme yöntemi Türkçede yanlış sonuç verir: "Işık" kelimesini "is-k" yapar, çünkü ı harfinin ayrıştırması yoktur ve İ harfi ASCII I artı bir birleşen noktaya ayrışır.
  • Doğru sıra önce açık harita, sonra ayrıştırmadır. Tersi yapıldığında ş harfi tesadüfen doğru çalışır ve hata yarı düzelmiş gibi görünür; bu yüzden fark edilmeden yayına çıkar.
  • Slug kalıcıdır. Yanlış bir slug yayımlandıktan sonra düzeltmek yönlendirme borcu yaratır, bu yüzden ilk seferde doğru üretmek önemlidir.
  • ß, ø, ł gibi harfler aksanlı biçim değil ayrı harflerdir; ayrıştırma bunlara dokunmaz ve ASCII süzgeci onları sessizce siler.

Herkesin kullandığı yöntem ve neden bozuk

Bir başlığı slug haline getirmek için internette bulacağınız tarif hemen her zaman şudur: metni ayrıştır, birleşen işaretleri sil, küçült, harf ve rakam dışındaki her şeyi tireye çevir.

javascript
text  .normalize('NFD')  .replace(/\p{M}/gu, '')  .toLowerCase()  .replace(/[^a-z0-9]+/g, '-')

İngilizce ve Fransızca için çalışır. Türkçe için çalışmaz ve bozulma biçimi özellikle sinsidir.

GirdiYaygın yöntemOlması gereken
Işıkis-kisik
yığıny-g-nyigin
Diyarbakırdiyarbak-rdiyarbakir
Ağrı Dağıagr-dagagri-dagi
Ölçülmüş sonuçlar. Kelimeler tanınmaz hale gelir.

Sebep: iki harfin ayrıştırma davranışı

Unicode ayrıştırması, aksanlı bir harfi taban harf artı birleşen işaret olarak açar. Türkçenin iki harfi bu modele uymaz.

javascript
'İ'.normalize('NFD')  // 'I' + U+0307  (ASCII büyük I artı nokta!)'ı'.normalize('NFD')  // 'ı'           (hiç ayrışmaz)'ş'.normalize('NFD')  // 's' + U+0327  (bu doğru çalışır)

Noktalı İ harfi ayrıştığında geriye ASCII bir I kalır, yani harf sınıfı değişir. Noktasız ı harfinin ise ayrıştırması hiç yoktur, bu yüzden işaret temizliğinden sağ çıkar ve ardından ASCII olmadığı için silinir; yerinde bir tire kalır.

Asıl mesele şu: ş, ğ, ü, ö, ç harflerinin hepsi doğru çalışır çünkü onların aksanı gerçekten birleşen bir işarettir. Yani yöntem yüzde seksen doğru görünür. Gözden geçirirken "Türkçe destekleniyor" dersiniz, sonra i harfi olan ilk başlıkta bozulur.

Doğru sıra

Türkçe harfler açık bir haritayla, ayrıştırmadan ÖNCE değiştirilmelidir. Bu araç böyle çalışır: önce ı, İ, ğ, ş, ç, ö, ü ve şapkalı ünlüler karşılıklarıyla değiştirilir, ardından geri kalan Avrupa aksanları için ayrıştırma uygulanır.

Aynı harita "rüzgâr" ve "Kâğıthane" gibi kelimelerdeki şapkalı ünlüleri de kapsar. Bunlar atlanırsa yine tire olarak düşerler.

Bilgi

toLocaleLowerCase("tr") çözüm değildir. ASCII I harfini ı yapar, yani slugınıza URL güvenli olmayan bir karakter sokar. Ayrıca çalışma ortamında ICU verisi bulunmasına bağlıdır.

Ayrıştırması olmayan harfler

Bir başka sessiz kayıp grubu: ß, ø, ł, æ, þ gibi harfler aksanlı biçimler değil, kendi başlarına harflerdir. Ayrıştırma bunlara dokunmaz, ASCII süzgeci ise siler.

text
Straße  ->  strae     (ß silindi)Łódź    ->  odz       (Ł silindi)Ærø     ->  r         (Æ ve ø silindi)

Bu araç bunları da açık haritada karşılar: Strasse, Lodz, AEro. Türkçe bir sitede sık karşılaşılmaz ama bir kere yaşandığında sebebi bulmak zordur.

Latin dışı yazılar

Japonca veya Arapça bir başlık ASCII bir sluga dönüştürülemez. Bu araç sonucu boş bırakır ama hangi karakterlerin çıkarıldığını da söyler, çünkü "araç bozuk" ile "başlığınız Latin alfabesinde değil" arasındaki fark, kullanıcının bir sonraki adımını belirler.

Uzunluk sınırı ve kelime sınırı

Bir slugı kısaltırken kelimenin ortasından kesmek okunabilirliği bitirir. Bu araç sınırı aşan slugları en yakın ayraçtan böler, böylece yarım kelime kalmaz. Tam sınıra denk gelen bir kelime varsa korunur.

Veri tarayıcınızdan çıkmaz

Yazdığınız metin hiçbir sunucuya gönderilmez. Dönüşüm tamamen tarayıcınızda çalışır; sayfa yüklendikten sonra bağlantınızı kesseniz bile araç çalışmaya devam eder.

Sıkça Sorulan Sorular

Neden "Işık" bazı araçlarda "is-k" oluyor?
Çünkü o araçlar önce Unicode ayrıştırması yapıp birleşen işaretleri siliyor. Noktasız ı harfinin ayrıştırması olmadığı için bu adımdan sağ çıkıyor, sonra ASCII olmadığı gerekçesiyle siliniyor ve yerine ayraç konuyor. Doğru çözüm, ayrıştırmadan önce açık bir harita uygulamaktır.
Tire mi alt çizgi mi kullanmalıyım?
URL yollarında tire tercih edilir; arama motorları tireyi kelime ayracı sayar, alt çizgiyi saymaz. Alt çizgi dosya adları ve tanımlayıcılar için uygundur. Araç ikisini de üretir.
Slug ne kadar uzun olmalı?
Teknik bir sınır yok, ama okunabilirlik ve paylaşılabilirlik açısından 60 ile 80 karakter arası pratik bir aralıktır. Önemli kelimeler başta olsun; kısaltma yaparken sondan kesilir.
Yayımlanmış bir slugı değiştirmeli miyim?
Zorunda kalmadıkça hayır. Değiştirirseniz eski adresten yenisine kalıcı yönlendirme koymanız gerekir, yoksa bağlantılar kırılır ve arama sıralaması sıfırlanır. Slugı ilk seferde doğru üretmek bu yüzden değerlidir.
Türkçe karakterleri URL'de doğrudan kullanamaz mıyım?
Teknik olarak kullanabilirsiniz, adres yüzde kodlamasıyla taşınır. Ancak kopyalandığında okunamayan uzun bir dizeye dönüşür, bazı eski istemciler bozar ve paylaşımda güven vermez. ASCII slug pratikte hâlâ doğru seçimdir.

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