Query String Nasıl Çalışır? (Örneklerle)
Bir e-ticaret sitesinde ürünleri filtrelediğinizde veya bir reklamdan bir siteye tıkladığınızda, adres çubuğunda ? işaretinden sonra gelen uzun bir metin belirir. Buna query string denir. Bu rehberde query string'in anatomisini, çoklu değerlerin nasıl taşındığını, UTM/izleme parametrelerini ve bir query string'i nasıl parçalayıp JSON'a çevireceğinizi gerçek URL örnekleriyle gösteriyoruz.
Query string nedir?
? işaretinden sonra gelen ve & ile ayrılan anahtar=değer çiftleridir (örn. ?renk=kirmizi&beden=42). Bir web sayfasına veya API isteğine ek, isteğe bağlı parametre göndermek için kullanılır; sunucu bu parametrelere göre farklı içerik, filtre veya sıralama döndürebilir.
Query string, URL'nin geri kalanından (protokol, host, yol) tamamen ayrı ve isteğe bağlıdır — bir sayfa query string olmadan da çalışabilir. Kendi query string'inizi parçalamak isterseniz query parçalama aracını kullanabilirsiniz.
Query string'in anatomisi
? başlangıcı belirtir, her anahtar=değer çifti bir parametredir, çiftler arasına & konur. Değerler her zaman encodeURIComponent ile kodlanmış olmalıdır — özellikle boşluk ve Türkçe karakter içeriyorsa.
| Bileşen | Değer | Açıklama |
|---|---|---|
| Ayırıcı | ? | Yolun bittiğini, query string'in başladığını belirtir |
| 1. parametre | renk=kırmızı | Kodlanmış hali: renk=k%C4%B1rm%C4%B1z%C4%B1 |
| 2. parametre | beden=42 | Rakam olduğundan kodlamaya gerek yok |
| 3. parametre | stokta=true | Query string'de her değer aslında bir metindir (string) |
Kaynak: WHATWG URL Standardı — URLSearchParams davranışı. Tüm örnekler tarayıcının URLSearchParams API'siyle doğrulanmıştır.
stokta=true yazsanız bile bu JavaScript'te boolean true değil, "true" metnidir. Kendi kodunuzda tip dönüşümünü (=== "true" veya Number(...)) elle yapmanız gerekir; aksi halde beklenmedik "her zaman truthy" hataları alırsınız.
Aynı anahtarla birden fazla değer nasıl taşınır?
renk=kirmizi&renk=mavi), köşeli parantez eklemek (renk[]=kirmizi&renk[]=mavi) veya değerleri virgülle birleştirmek (renk=kirmizi,mavi). Hangisinin kullanılacağı sunucu tarafındaki framework'e (Express, Rails, Django vb.) bağlıdır.
| Biçim | Örnek | Nerede yaygın |
|---|---|---|
| Anahtar tekrarı | tag=js&tag=web | URLSearchParams.getAll(), çoğu web sunucusu |
| Köşeli parantez | tag[]=js&tag[]=web | PHP, Rails, bazı Express eklentileri |
| Virgülle ayrılmış | tag=js,web | Birçok REST API (tek parametre olarak kalır) |
Kendi query string'ini parçala
Bir URL veya query string yapıştır; tüm anahtar=değer çiftlerini okunabilir bir tabloda gör, bilinen izleme parametrelerini otomatik işaretle.
Query Parçalama Aracını Aç →UTM ve izleme parametreleri nedir?
utm_source, utm_medium, utm_campaign vb.), bir ziyaretçinin hangi kaynaktan geldiğini analiz araçlarına (Google Analytics gibi) bildirmek için query string'e eklenen izleme parametreleridir. Sayfanın işlevselliğini etkilemezler, yalnızca pazarlama istatistiği amaçlıdır.
Örnek: https://ornek.com/haber?utm_source=instagram&utm_medium=cpc&utm_campaign=yaz2026 adresinde utm_source=instagram, ziyaretçinin Instagram'dan geldiğini; utm_medium=cpc tıklama başına ödemeli bir reklamdan geldiğini gösterir. Benzer amaçlı diğer izleme parametreleri arasında Google Ads'ten gelen gclid, Facebook'tan gelen fbclid ve Microsoft Ads'ten gelen msclkid sayılabilir.
- utm_source: Trafiğin geldiği platform (instagram, newsletter, google).
- utm_medium: Trafiğin türü (cpc, email, social, organic).
- utm_campaign: Kampanyanın adı (yaz2026, blackfriday).
- gclid / fbclid / msclkid: Reklam platformlarının otomatik eklediği tıklama kimlikleri; bir bağlantıyı başkasıyla paylaşmadan önce bu parametrelerin temizlenmesi önerilir.
Bir bağlantıyı paylaşmadan önce bu izleme parametrelerinden arınmış, temiz bir hâlini oluşturmak isterseniz araç sayfasındaki URL Temizleyici mini aracını kullanabilirsiniz — tek tıkla tüm bilinen izleme parametrelerini kaldırır.
Query string'i JSON'a çevirme
anahtar=değer çifti önce decode edilir, sonra bir JavaScript nesnesine (JSON) anahtar-değer olarak eklenir. Örneğin ?ad=Ahmet&aktif=true, {"ad":"Ahmet","aktif":"true"} nesnesine döner — dikkat: aktif değeri hâlâ bir metindir, boolean değildir.
Bu dönüşüm özellikle bir API isteğini debug ederken veya bir query string'i bir uygulama konfigürasyonuna aktarırken işe yarar. Elle yazmak yerine Query String → JSON mini aracını kullanarak herhangi bir query string'i anında JSON'a çevirebilirsiniz.
Sık sorulan sorular
Query string nedir?
? işaretinden sonra gelen ve & ile ayrılan anahtar=değer çiftleridir (örn. ?renk=kirmizi&beden=42). Bir sayfaya veya API isteğine ek parametre göndermek için kullanılır.Query string nasıl oluşturulur?
& ile ayrılır ve her değer encodeURIComponent ile kodlanır. Örnek: renk=kırmızı ve beden=42 için sonuç renk=k%C4%B1rm%C4%B1z%C4%B1&beden=42 olur.Aynı anahtarla birden fazla değer nasıl gönderilir?
renk=kirmizi&renk=mavi), köşeli parantez eklemek (renk[]=kirmizi&renk[]=mavi) veya virgülle birleştirmek (renk=kirmizi,mavi). Sunucu tarafındaki framework'e göre seçim yapılır.UTM parametreleri nedir?
Query string'i JSON'a nasıl çeviririm?
?ad=Ahmet&aktif=true önce {"ad":"Ahmet","aktif":"true"} nesnesine döner; değerler her zaman metin olarak kalır.İlgili rehberler
URLSearchParams ve URL API'leri çalıştırılarak üretilip doğrulanmıştır. Kaynaklar: WHATWG URL Standardı · RFC 3986 · MDN Web Docs (URLSearchParams). Son güncelleme: 17 Temmuz 2026. Yazı bilgilendirme amaçlıdır; üretim kodunuzda kullanmadan önce kendi ortamınızda test etmeniz önerilir.