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.
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.
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.
| Girdi | Yaygın yöntem | Olması gereken |
|---|---|---|
| Işık | is-k | isik |
| yığın | y-g-n | yigin |
| Diyarbakır | diyarbak-r | diyarbakir |
| Ağrı Dağı | agr-dag | agri-dagi |
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.
'İ'.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
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.
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: Mustafa Kürşad Başer, Senior Software Engineer. Yayın: Ağustos 2026.