Rehber
JavaScript SEO: Google JavaScript sitelerini nasıl işler?
Googlebot sayfaları tarama, oluşturma ve dizine ekleme adımlarıyla işler. Oluşturma gecikmesi verisi, yapay zekâ tarayıcıları ve Yandex farkı, ham HTML'den başlayan bir denetim listesi.
JavaScript SEO, içeriğini JavaScript ile üreten sitelerin arama motorlarınca taranabilmesi, oluşturulabilmesi (render) ve dizine eklenebilmesi için yapılan teknik çalışmadır. Google bu sayfaları üç aşamada işler: tarama, oluşturma ve dizine ekleme. Oluşturma çoğu sayfada saniyeler içinde biter, bazılarında saatler sürer. En güvenli yol, ana içeriği ve bağlantıları sunucudan gelen ilk HTML'e koymaktır.
Google JavaScript sitelerini nasıl işler?
Google'ın JavaScript SEO temelleri belgesi süreci üç adımda anlatır:
- Tarama: Googlebot önce robots.txt'ye bakar, izin verilen URL'yi çeker ve yanıttaki href bağlantılarını tarama sırasına ekler.
- Oluşturma: 200 kodu dönen her sayfa, JavaScript kullansın kullanmasın oluşturma sırasına girer. Sayfa birkaç saniye ya da daha uzun bekleyebilir. Ardından güncel sürümlü, ekransız (headless) bir Chromium JavaScript'i çalıştırır. 200 dışında kod dönen sayfalar bu adımı atlayabilir.
- Dizine ekleme: Google oluşturulmuş HTML'i dizine ekler ve bağlantıları bu HTML'den yeniden çıkarır.
Googlebot Mayıs 2019'dan beri güncel Chromium sürümünü izliyor. O gün 74 sürümüne geçilmiş ve 1000'den fazla yeni özellik desteklenmeye başlamıştı. Modern JavaScript sözdizimi tek başına sorun değildir.
Gecikmeye dair en ayrıntılı açık veri Vercel ile danışmanlık şirketi MERJ'den geliyor. Ekip, Nisan 2024'te ağırlıkla nextjs.org üzerinde 100.000'den fazla Googlebot isteğini inceledi. Hata veren ve dizine eklenemeyen sayfalar dışarıda bırakıldığında HTML sayfalarının %100'ü tam oluşturuldu. Oluşturma gecikmesinin ortancası 10 saniye, 75. yüzdeliği 26 saniyeydi. 90. yüzdelikte ise yaklaşık 3 saate, 99. yüzdelikte yaklaşık 18 saate çıktı. Sorgu parametreli URL'ler daha uzun bekledi. Örneklemin tek bir siteye dayandığını ve Vercel'in Next.js barındırma hizmeti sattığını hesaba katın.
Bir de boyut sınırı var. Googlebot belgesine göre Googlebot desteklenen bir dosyanın ilk 2 MB'ını tarar. HTML'in çağırdığı her CSS ve JavaScript dosyası ayrı çekilir ve aynı sınıra tabidir, sınır sıkıştırılmamış veriye uygulanır. HTTP Archive'ın Web Almanac 2024 verisinde mobilde sayfa başına ortanca JavaScript 558 kilobayt. Sınır çoğu sitede sorun çıkarmaz, tek parça dev paketlerde çıkarabilir.
Google oluşturabiliyorsa sorun nerede?
Üç yerde:
- Zamanlama: Ham HTML'de olmayan içerik ancak oluşturmadan sonra görülür. Gecikme kuyruğun ucunda saatleri bulabildiği için fiyat, stok veya haber gibi hızlı değişen bilgide fark yaratır.
- Kaynak maliyeti: Oluşturma için çekilen her dosya, onu sunan alan adının tarama bütçesinden düşer (Google). Büyük sitelerde bu konu tarama bütçesine bağlanır.
- Diğer botlar: Google belgesi, her botun JavaScript çalıştıramadığını hatırlatır. Vercel'in Aralık 2024 analizine göre GPTBot, ClaudeBot ve PerplexityBot dahil büyük yapay zekâ tarayıcılarının hiçbiri JavaScript oluşturmuyor. ChatGPT isteklerinin %11,50'si, Claude isteklerinin %23,84'ü JavaScript dosyalarına gidiyor, ama bu dosyalar çalıştırılmıyor. Gemini ise Googlebot altyapısını kullanıyor.
Ham ve oluşturulmuş HTML arasındaki fark küçük bir ayrıntı değil. Web Almanac 2025 SEO bölümüne göre ana sayfalarda iki sürüm arasındaki kelime sayısı farkının ortancası masaüstünde %18, mobilde %16. Masaüstü sitelerin %2,71'inde, mobil sitelerin %3,02'sinde kanonik etiketi oluşturma sırasında değişiyor.
Türkiye'de durum: Yandex kendi kararını veriyor
StatCounter'ın Ekim 2026 verisinde Yandex'in Türkiye'deki arama motoru payı %21,63. Yandex'in belgesine göre JavaScript oluşturma hâlâ beta aşamasında. Varsayılan ayarda robot, sayfayı JavaScript'li ve JavaScript'siz karşılaştırarak kodu çalıştırıp çalıştırmayacağına kendisi karar veriyor. Sitede sunucu tarafı oluşturma varsa Yandex oluşturmayı kapatmayı öneriyor. İçeriği ilk HTML'de vermek, Google'daki gecikmeyi ve Yandex'teki belirsizliği aynı anda çözer.
Hangi oluşturma yöntemi seçilmeli?
Google'ın tercihi net. JavaScript SEO temelleri, sunucu tarafı oluşturmayı veya ön oluşturmayı (pre-rendering) hem kullanıcı hem tarayıcı için daha hızlı olduğu gerekçesiyle öneriyor. Dinamik oluşturma belgesi ise botlara ayrı sürüm sunan bu yöntemi geçici bir çözüm sayıyor ve artık önermiyor. Yerine sunucu tarafı oluşturma, statik oluşturma veya hidrasyon (hydration) gösteriyor.
Pratik ayrım sayfanın görevine göre yapılır:
- Aramada bulunması gereken sayfalar (ürün, kategori, hizmet, yazı): Ana metin, başlık, meta açıklama, kanonik etiketi ve gezinme bağlantıları sunucudan gelen HTML'de olmalı. Statik oluşturma veya sunucu tarafı oluşturma uygundur.
- Etkileşimli eklentiler (filtre arayüzü, canlı sohbet, sayaçlar): İstemci tarafında kalabilir.
- Giriş gerektiren paneller: Zaten dizine girmeyecekleri için istemci tarafı oluşturma sorun yaratmaz.
Oluşturma tercihi sayfa hızını da etkiler. Etkileşim tarafını INP yazısında ele alıyoruz.
JavaScript sitesi adım adım nasıl denetlenir?
- Ham HTML'e bakın. Sayfanın kaynağını açın. Başlık, meta açıklama, kanonik, ana metin ve gezinme bağlantıları burada yoksa Google'ın oluşturma adımına bağımlısınız.
- Oluşturulmuş hâli test edin. Search Console'daki URL Denetleme aracında canlı test yapın. Oluşturulmuş HTML'i, yüklenen kaynakları ve JavaScript konsol çıktısını görürsünüz. Ekran görüntüsü yalnız canlı testte çıkar.
- Bağlantıları denetleyin. Google ancak href taşıyan
<a>öğelerini güvenle izler. Google onclick ile çalışan, href'siz routerLink kullanan veya javascript: ile başlayan bağlantıları önermez. - Adres yapısını düzeltin. Farklı içerikleri
/#/urunlergibi parçalarla yüklemeyin, History API kullanın. - Durum kodlarını doğru dönün. Tek sayfa uygulamalarında (SPA) bulunamayan içerik 200 ile dönerse yumuşak 404 oluşur. Google iki çözüm önerir: 404 dönen bir sunucu adresine JavaScript ile yönlendirmek ya da noindex eklemek.
- noindex ve kanoniği ilk HTML'de doğru yazın. Googlebot ilk HTML'de noindex görürse oluşturmayı atlayabilir, JavaScript ile kaldırmak işe yaramayabilir. Kanonik JavaScript ile yazılıyorsa HTML'dekiyle aynı olmalı, sayfada tek kanonik etiketi bulunmalı.
- Tembel yüklemeyi (lazy loading) görünür alana bağlayın. Google sayfayla etkileşime girmez, kaydırmaz, tıklamaz. İçerik görünür alana girdiğinde yüklenmeli. Sonsuz kaydırmada her parçanın
?page=12gibi kalıcı bir adresi olmalı. - Dosya adlarını içerikle eşleyin. Googlebot önbelleği agresif kullanır.
main.2bb85551.jsgibi içerik özetli dosya adları eski JavaScript'in kullanılmasını önler.
Etkisi nasıl ölçülür?
- Şablon karşılaştırması: Her şablondan, yani ana sayfa, kategori, ürün ve yazıdan birer örnek seçin. Ham ve oluşturulmuş HTML'de başlık, kanonik, ana metin ve bağlantı sayısını yan yana yazın. Fark olan her öğe bir risktir.
- Dizine ekleme durumları: Sayfa dizine ekleme raporunda yumuşak 404 ve "Crawled - currently not indexed" sayılarının şablon bazında eğilimini izleyin.
- Tarama İstatistikleri: Dosya türü kırılımında JavaScript payını takip edin. Bu pay yükselirken HTML istekleri düşüyorsa kaynaklar bütçeyi yiyor olabilir.
- Hata kaydı: Google'ın sorun giderme belgesi, kullanıcı ve tarayıcı tarafındaki JavaScript hatalarını kaydetmeyi öneriyor. İstemci tarafı analitiğin Googlebot etkinliğini doğru yansıtmayabileceğini de not ediyor.
- Dizine girme süresi: Yeni sayfaların yayın tarihini URL Denetleme'deki son tarama tarihiyle karşılaştırın.
Sık yapılan hatalar
- İçeriği izne, çereze veya yerel depolamaya bağlamak. Google, Googlebot'un izin isteklerini reddettiğini, çerezlerin ve yerel depolamanın sayfa yüklemeleri arasında temizlendiğini yazar.
- CSS ve JavaScript'i robots.txt ile kapatmak. Oluşturma kaynakları açık kalmalı. Ayrıntı robots.txt rehberinde.
- noindex'i JavaScript ile kaldırmayı beklemek. Vercel ve MERJ verisinde ilk HTML'de noindex taşıyan sayfalar hiç oluşturulmadı.
- Yeni projede dinamik oluşturma kurmak. Google bu yöntemi artık önermiyor.
- WebSocket veya WebRTC'ye bağımlı içerik. Googlebot bunları desteklemez, HTTP ile bir yedek yol gerekir.
- Yalnız Google'ı düşünmek. Yapay zekâ tarayıcıları ve Yandex için ilk HTML hâlâ belirleyici.
Yarın en değerli şablonun ham HTML'ini açın
Organik trafiği en çok getiren sayfa şablonunu seçin, örneğin ürün sayfasını. Sayfayı tarayıcıda kaynak görünümüyle açın ve beş şeyi arayın: başlık, meta açıklama, kanonik etiketi, ana metnin ilk paragrafı ve kategori bağlantıları. Eksik olanları listeleyin, sonra aynı sayfayı URL Denetleme'de canlı test edin. İki liste arasındaki fark, geliştirme ekibine götüreceğiniz ilk iş kalemidir. Altyapı değişikliği gerekiyorsa kurumsal web sitesi geliştirme ile teknik SEO aynı kararın iki yüzüdür.
Kaynaklar
- Google Search Central, Understand JavaScript SEO basics
- Google Search Central, Fix Search-related JavaScript problems
- Google Search Central, Dynamic rendering as a workaround
- Google Search Central, Make your links crawlable
- Google Search Central, Fix lazy-loaded content
- Google Search Central, Googlebot
- Google Search Central Blog, The new evergreen Googlebot, Mayıs 2019
- Google Search Central Blog, Crawling December: The how and why of Googlebot crawling, Aralık 2024
- Search Console Yardım, URL Inspection tool
- Vercel ve MERJ, How Google handles JavaScript throughout the indexing process, 2024
- Vercel, The rise of the AI crawler, Aralık 2024
- HTTP Archive, Web Almanac 2024: JavaScript
- HTTP Archive, Web Almanac 2025: SEO, Ocak 2026
- Yandex Webmaster Yardım, Indexing pages with JavaScript
- StatCounter, Search Engine Market Share Turkey, Ekim 2026