229 SEO kuralı

Ne kontrol ettiğimiz, neden önemli olduğu ve nasıl düzeldiği. Oto etiketlileri Balanseo kendisi düzeltir.

İndekslenebilirlik 58

Canonical zinciri Oto

Canonical'ın gösterdiği sayfa da başka bir sayfaya canonical veriyor. Google zinciri izlemeyebilir.

Çözüm: Canonical'ı doğrudan son hedefe yönlendir.

idx.canonical_chain · Orta

Canonical HTTPS sitede HTTP URL'yi gösteriyor Oto

HTTPS sayfanın canonical'ı HTTP sürümünü işaret ediyor.

Çözüm: Canonical'ı HTTPS URL olarak düzelt.

idx.canonical_http · Orta

Canonical etiketi yok Oto

Self-referencing canonical, parametreli kopyaların ve protokol varyasyonlarının tek URL'de toplanmasına yardım eder.

Çözüm: <head> içine <link rel="canonical" href="sayfanın tam URL'si"> ekle.

idx.canonical_missing · Düşük

Birden fazla canonical Oto

Birden çok canonical etiketi varsa Google hepsini yok sayar.

Çözüm: Sayfada tek bir canonical etiketi bırak.

idx.canonical_multiple · Yüksek

Canonical başka alan adına gidiyor

Sayfanın canonical'ı başka bir alan adını gösteriyor; bu sayfa indekslenmez. Kasıtlı değilse ciddi trafik kaybıdır.

Çözüm: Kasıtlı (syndication) değilse canonical'ı bu sitedeki adrese çevir.

idx.canonical_other_domain · Orta

Canonical göreli adres Oto

Göreli canonical (ör. '/sayfa') yanlış alan adı ya da protokolle birleşebilir.

Çözüm: Canonical'da protokol ve alan adıyla tam URL kullan.

idx.canonical_relative · Düşük

Canonical noindex sayfayı gösteriyor Oto

Canonical hedefi noindex: Google iki çelişkili sinyal alır ve sayfayı indeksten düşürebilir.

Çözüm: Canonical'ı indekslenebilir sürüme çevir ya da hedefteki noindex'i kaldır.

idx.canonical_to_noindex · Yüksek

Canonical bozuk ya da yönlenen bir URL'yi gösteriyor Oto

Canonical hedefi 200 dönmüyor. Google canonical'ı yok sayar ve yanlış URL'yi seçebilir.

Çözüm: Canonical'ı 200 dönen, indekslenebilir son URL'ye çevir.

idx.canonical_to_non200 · Yüksek

Sayfa başka bir URL'ye canonical veriyor

Bu sayfa kendisini değil başka bir URL'yi tercih edilen sürüm olarak işaret ediyor.

Çözüm: Bilinçli bir tercih değilse canonical'ı sayfanın kendi URL'sine ayarla.

idx.canonicalized · Bilgi

Sayfa çok derinde (4+ tık) Öneri

Ana sayfadan 4 tıktan fazla uzaktaki sayfalar daha seyrek taranır ve daha az otorite alır.

Çözüm: Kategori/hub sayfalarından ya da ilgili yazılardan link vererek derinliği azalt.

idx.deep_page · Düşük

Sayfaya ulaşılamadı

Bağlantı kurulamadı, zaman aşımına uğradı ya da yönlendirme döngüsüne girdi.

Çözüm: Sunucu erişilebilirliğini, DNS ve SSL ayarlarını, yönlendirme kurallarını kontrol et.

idx.fetch_error · Yüksek

Taranan sayfaların büyük kısmı hata veriyor

Sayfaların %10'undan fazlası 4xx/5xx dönüyor; arama motorları siteyi daha seyrek tarar.

Çözüm: Kırık sayfaları yönlendir ya da kaldır, bunlara verilen iç linkleri güncelle.

idx.high_error_ratio · Yüksek

Ana sayfa noindex

Ana sayfada noindex var: Google ana sayfayı dizinden çıkarır ve sitenin geri kalanını keşfetmesi zorlaşır. Çoğunlukla geliştirme ortamından kalan bir ayardır.

Çözüm: Ana sayfadaki meta robots noindex'i ya da X-Robots-Tag başlığını kaldır (WordPress: Ayarlar → Okuma → 'Arama motorlarını engelle' işaretini kaldır).

idx.home_noindex · Kritik

HTTP sürümü HTTPS'e yönlenmiyor

Sitenin HTTP sürümü 301 ile HTTPS'e gitmiyor. Kopya içerik ve güvenlik riski oluşur.

Çözüm: Sunucuda tüm HTTP isteklerini 301 ile HTTPS'e yönlendir.

idx.https_redirect · Yüksek

İndekslenebilir sayfa sitemap'te değil Oto

Sitemap eksik. Bu sayfa yalnızca iç linklerle keşfedilebiliyor.

Çözüm: Sayfayı sitemap'e ekle.

idx.indexable_not_in_sitemap · Düşük

Meta refresh yönlendirmesi Oto

<meta http-equiv="refresh"> ile yönlendirme yavaştır ve otorite aktarımı belirsizdir.

Çözüm: Sunucu tarafında 301 yönlendirme kullan.

idx.meta_refresh · Orta

Sayfa nofollow

Meta robots nofollow, sayfadaki tüm linklerin takip edilmemesini istiyor; iç link değeri aktarılmaz.

Çözüm: Bilinçli değilse 'nofollow' direktifini kaldır.

idx.nofollow_meta · Düşük

Sayfa noindex

Sayfa meta robots ya da X-Robots-Tag ile indekslemeye kapatılmış. Bilinçli değilse trafik kaybıdır.

Çözüm: Sayfanın aranmasını istiyorsan noindex'i kaldır; istemiyorsan iç linkleri ve sitemap kaydını da kaldır.

idx.noindex · Orta

noindex ile başka sayfaya canonical bir arada

Sayfa hem noindex hem başka bir URL'ye canonical veriyor; Google bu çelişkide canonical'ı yok sayabilir.

Çözüm: Kopya sayfalarda yalnız canonical kullan; noindex'i kaldır.

idx.noindex_canonical_conflict · Orta

noindex sayfa sitemap'te

Sitemap'e eklenen sayfa noindex. Google'a çelişkili sinyal gönderiyor.

Çözüm: Sayfayı sitemap'ten çıkar ya da noindex'i kaldır.

idx.noindex_in_sitemap · Orta

Yetim sayfa (iç link yok) Öneri

Sitemap'te olan ama hiçbir sayfanın linklemediği sayfa. Google sayfayı önemsiz sayar.

Çözüm: Sayfaya ilgili içeriklerden ve kategori sayfalarından iç link ver.

idx.orphan · Orta

Sayfalama ilk sayfaya canonical veriyor Oto

?page=2 gibi sayfaların canonical'ı ilk sayfayı gösteriyor; sonraki sayfalardaki ürün/yazılar keşfedilmez.

Çözüm: Her sayfalama adımı kendine canonical vermeli.

idx.paginated_canonical_first · Orta

Parametreli adres indekslenebilir Oto

Sorgu parametreli adres kendini canonical gösteriyor ya da canonical'sız; aynı içerik birden çok adreste indekslenebilir.

Çözüm: Parametreli sayfalarda canonical'ı parametresiz adrese ver.

idx.param_indexable · Düşük

Parametre tuzağı: aynı sayfanın çok sayıda varyantı

Filtre, sıralama ya da takip parametreleri aynı sayfanın sayısız kopyasını üretiyor; tarama bütçesi boşa harcanıyor.

Çözüm: Parametreli varyantlarda canonical'ı ana sayfaya ver, gereksiz parametreleri robots.txt ya da link yapısıyla sınırla.

idx.param_trap · Orta

Silinen sayfa ana sayfaya yönlendiriliyor

Alakasız sayfaların ana sayfaya yönlendirilmesini Google 'soft 404' sayar; eski sayfanın değeri aktarılmaz.

Çözüm: Sayfayı en yakın ilgili sayfaya yönlendir; karşılığı yoksa 410/404 döndür.

idx.redirect_to_home · Orta

robots.txt sunucu hatası veriyor

robots.txt 5xx ya da 429 dönerse Google siteyi bir süre tamamen taranamaz kabul eder; uzarsa sayfalar indeksten düşer.

Çözüm: robots.txt'nin her zaman 200 (ya da kasıtlıysa 404) dönmesini sağla; sunucu, CDN ve güvenlik duvarı kurallarını kontrol et.

idx.robots_5xx · Kritik

robots.txt'nin engellediği sayfalara iç link var

Engelli sayfalar taranamaz ama linklendikleri için içerikleri görülmeden indekslenebilir; link değeri de boşa gider.

Çözüm: Bu sayfaların gerçekten engellenmesi gerekiyorsa linkleri kaldır; indekslenmesi gerekiyorsa robots.txt'yi güncelle.

idx.robots_blocked_linked · Bilgi

robots.txt CSS/JS dosyalarını engelliyor Oto

Google sayfayı tarayıcı gibi çizer; CSS ve JavaScript engelliyse sayfanın içeriğini ve mobil uyumunu doğru göremez.

Çözüm: Engellenen CSS/JS klasörleri için Allow kuralı ekle (ör. Allow: /klasor/*.css$).

idx.robots_blocks_resources · Yüksek

robots.txt tüm siteyi engelliyor Oto

Googlebot ana sayfayı tarayamıyor. Site arama sonuçlarından düşer.

Çözüm: robots.txt içindeki 'Disallow: /' kuralını kaldır.

idx.robots_blocks_site · Kritik

meta robots ile X-Robots-Tag çelişiyor

HTML'deki robots etiketi ile HTTP başlığındaki X-Robots-Tag farklı şey söylüyor; en kısıtlayıcı olan geçerli olur.

Çözüm: İki sinyali aynı değere getir; tek bir yerden yönet.

idx.robots_conflict · Orta

Birden çok, çelişen robots meta etiketi

Sayfada farklı içerikli birden fazla robots meta etiketi var; Google en kısıtlayıcı olanı uygular.

Çözüm: Tek bir robots meta etiketi bırak.

idx.robots_meta_multiple · Orta

robots.txt bulunamadı Oto

robots.txt yok. Zorunlu değil, ama sitemap konumunu bildirmek ve tarama kurallarını yönetmek için önerilir.

Çözüm: Kök dizine sitemap satırını içeren bir robots.txt ekle.

idx.robots_missing · Düşük

robots.txt'de desteklenmeyen noindex yönergesi Oto

Google 2019'dan beri robots.txt içindeki noindex/nofollow satırlarını uygulamıyor; sayfalar indekslenmeye devam eder.

Çözüm: Bu satırları kaldır; sayfayı indeksten çıkarmak için meta robots noindex ya da X-Robots-Tag kullan.

idx.robots_noindex_directive · Düşük

robots.txt'de geçersiz satırlar

Tanınmayan yönergeler ya da User-agent'tan önce yazılmış kurallar arama motorlarınca yok sayılır.

Çözüm: Her grubu bir User-agent satırıyla başlat; yalnız Allow, Disallow ve Sitemap yönergelerini kullan.

idx.robots_syntax · Düşük

robots.txt 500 KB sınırını aşıyor

Google robots.txt'nin yalnız ilk 500 KiB'ını okur; sonrasındaki kurallar yok sayılır.

Çözüm: Tekrarlanan kuralları jokerlerle (*, $) birleştirerek dosyayı küçült.

idx.robots_too_large · Orta

Sitemap'teki adresler robots.txt'de engelli

Sitemap 'bunları indeksle', robots.txt 'bunları tarama' diyor; Google çelişkili sinyal alır ve sayfaları göremez.

Çözüm: Ya robots.txt kuralını gevşet ya da bu adresleri sitemap'ten çıkar.

idx.sitemap_blocked · Yüksek

Sitemap'te canonical olmayan URL Oto

Sitemap'teki adres başka bir sayfaya canonical veriyor. Sitemap yalnız tercih edilen sürümleri içermeli.

Çözüm: Sitemap'e canonical hedefini koy, bu adresi çıkar.

idx.sitemap_canonicalized · Düşük

Sitemap'te HTTP adresler

Site HTTPS iken sitemap'te http:// adresler var; Google yönlendirilen adresleri sitemap'te istemez.

Çözüm: Sitemap'teki tüm adresleri https:// ve canonical biçimiyle üret.

idx.sitemap_http_urls · Orta

Sitemap'te gelecek tarihli lastmod

Gelecek tarihli ya da her taramada değişen lastmod, Google'ın bu alana güvenmemesine yol açar.

Çözüm: lastmod'u yalnız içerik gerçekten değiştiğinde güncelle; sunucu saatini kontrol et.

idx.sitemap_lastmod_future · Düşük

Sitemap'te geçersiz lastmod

lastmod W3C tarih biçiminde (2026-10-13 ya da 2026-10-13T09:00:00+03:00) değilse yok sayılır.

Çözüm: lastmod değerlerini ISO 8601 biçiminde, sayfanın gerçek son değişiklik tarihiyle üret.

idx.sitemap_lastmod_invalid · Düşük

XML sitemap bulunamadı Oto

Sitemap, arama motorlarının tüm sayfaları keşfetmesini hızlandırır.

Çözüm: Bir sitemap.xml oluştur, robots.txt'de bildir ve Search Console'a gönder.

idx.sitemap_missing · Orta

Sitemap'teki URL 200 dönmüyor

Sitemap yalnızca indekslenebilir 200 URL'leri içermelidir.

Çözüm: Yönlenen ve hata veren URL'leri sitemap'ten çıkar.

idx.sitemap_non200 · Orta

Sitemap robots.txt'de bildirilmemiş Oto

Sitemap robots.txt'de 'Sitemap:' satırıyla bildirilirse tüm botlar onu bulabilir.

Çözüm: robots.txt'ye 'Sitemap: https://alanadi/sitemap.xml' satırı ekle.

idx.sitemap_not_in_robots · Düşük

Sitemap'te başka alan adının adresleri

Bir sitemap yalnız kendi alan adındaki adresleri listeleyebilir; diğerleri yok sayılır.

Çözüm: Başka alan adlarının adreslerini çıkar ya da o alan adının kendi sitemap'ine taşı.

idx.sitemap_offhost · Orta

Sitemap dosyası sınırı aşıyor

Tek sitemap en fazla 50.000 adres ve 50 MB (sıkıştırılmamış) olabilir; aşan dosyalar okunmaz.

Çözüm: Sitemap'i parçalara böl ve bir sitemap index dosyasıyla bağla.

idx.sitemap_too_large · Yüksek

Soft 404 (hata sayfası 200 dönüyor)

Sayfa 'bulunamadı' diyor ama sunucu 200 döndürüyor. Google bunu soft 404 sayar ve tarama bütçesi harcanır.

Çözüm: Gerçekten olmayan sayfalar için 404/410 döndür ya da ilgili sayfaya 301 yap.

idx.soft_404 · Yüksek

Sayfa 4xx hatası veriyor Oto

Sitenin kendi linklediği bir sayfa 4xx (çoğunlukla 404) döndürüyor. Ziyaretçi ve tarama bütçesi boşa gidiyor.

Çözüm: Sayfayı geri getir ya da en alakalı sayfaya 301 yönlendirme ekle; içerideki linkleri güncelle.

idx.status_4xx · Yüksek

Sunucu hatası (5xx)

Sunucu sayfayı üretemiyor. Google tekrarlayan 5xx görünce taramayı yavaşlatır, sayfa indeksten düşebilir.

Çözüm: Sunucu loglarını incele; uygulama hatasını, zaman aşımını ya da kaynak yetersizliğini gider.

idx.status_5xx · Kritik

www / www'siz sürüm tutarsız

Hem www hem www'siz sürüm içerik sunuyor; otorite iki host arasında bölünür.

Çözüm: Tercih etmediğin sürümü 301 ile tercih ettiğine yönlendir.

idx.www_consistency · Orta

Yalnız harf büyüklüğüyle ayrışan URL'ler

Aynı adresin büyük ve küçük harfli sürümleri ayrı sayfalar olarak taranıyor (kopya içerik).

Çözüm: Tek bir küçük harfli sürüm seç, diğerlerini 301 ile yönlendir.

url.case_duplicate · Orta

URL'de çok fazla klasör seviyesi

Beşten fazla klasör seviyesi kullanıcıya ve botlara karmaşık bir yapı sinyali verir.

Çözüm: Bilgi mimarisini sadeleştir; önemli sayfaları üst seviyelere taşı.

url.deep_path · Bilgi

URL yolunda çift eğik çizgi

'//' içeren yollar çoğunlukla hatalı link üretiminden kaynaklanır ve kopya adres oluşturur.

Çözüm: Linkleri üreten şablonu düzelt, çift eğik çizgili adresleri tekine yönlendir.

url.double_slash · Düşük

URL'de çok fazla parametre

Üçten fazla parametreli adresler tarama bütçesini harcar ve kopya sayfa üretir.

Çözüm: Filtre/sıralama parametrelerini canonical ile ana sürüme bağla ya da robots.txt ile sınırla.

url.many_params · Düşük

URL'de oturum kimliği

Oturum kimliği içeren adresler her ziyarette değişir; sonsuz kopya sayfa ve tarama israfı yaratır.

Çözüm: Oturumu çereze taşı; parametreyi linklerden kaldır.

url.session_id · Yüksek

URL çok uzun

115 karakteri aşan adresler paylaşımda kesilir ve arama sonucunda okunmaz.

Çözüm: Gereksiz klasör ve kelimeleri çıkararak kısa, açıklayıcı URL kullan.

url.too_long · Düşük

Sonda eğik çizgi tutarsızlığı

'/sayfa' ve '/sayfa/' ikisi de 200 dönüyor; Google bunları iki ayrı sayfa sayar.

Çözüm: Birini seç, diğerini 301 ile yönlendir ya da canonical ekle.

url.trailing_slash_duplicate · Orta

URL'de alt çizgi var

Google kelime ayırıcı olarak tireyi (-) önerir; alt çizgi kelimeleri birleştirir.

Çözüm: Yeni URL'lerde tire kullan; mevcutlar iyi sıralanıyorsa değiştirmek zorunlu değil.

url.underscore · Bilgi

URL'de büyük harf var

Sunucular çoğu zaman büyük/küçük harfi ayrı adres sayar; aynı sayfanın iki sürümü oluşabilir.

Çözüm: URL'leri küçük harfe çevir, eski adresleri 301 ile yönlendir.

url.uppercase · Düşük

Başlık & Meta 27

Karakter seti tanımlı değil

Charset yoksa Türkçe karakterler bozuk görünebilir.

Çözüm: <head> başına <meta charset="utf-8"> ekle.

meta.charset_missing · Düşük

Meta description başka sayfalarla aynı Oto

Kopya açıklamalar sayfaları arama sonucunda birbirinden ayırt edilemez yapar.

Çözüm: Her sayfaya özgün açıklama yaz.

meta.desc_duplicate · Orta

Meta açıklama title ile aynı Oto

Açıklama title'ı tekrar ediyor; arama sonucunda ek bilgi verme fırsatı kaçıyor.

Çözüm: Açıklamada sayfanın faydasını ve içeriğini 1-2 cümlede anlat.

meta.desc_eq_title · Düşük

Meta description yok Oto

Description yoksa Google snippet'i sayfadan rastgele bir parçayla doldurur ve CTR düşer.

Çözüm: 70-160 karakterlik, fayda ve çağrı içeren bir açıklama yaz.

meta.desc_missing · Orta

Meta description çok uzun Oto

160 karakteri aşan açıklama kesilir.

Çözüm: Açıklamayı kısalt; önemli bilgiyi başa yaz.

meta.desc_too_long · Düşük

Meta description çok kısa Oto

70 karakterden kısa açıklamalar snippet alanını boşa harcar.

Çözüm: Açıklamayı genişlet.

meta.desc_too_short · Düşük

Favicon yok

Google mobil sonuçlarda favicon gösterir; yoksa genel bir ikon görünür.

Çözüm: Kare bir favicon ekle (en az 48x48).

meta.favicon_missing · Bilgi

H1 başka sayfalarla aynı

Aynı H1'i taşıyan sayfalar aynı konuyu hedefliyor olabilir.

Çözüm: H1'i sayfaya özgü hale getir.

meta.h1_duplicate · Düşük

H1 boş

Sayfada H1 etiketi var ama içi boş (ya da yalnız görsel).

Çözüm: H1'e sayfanın konusunu anlatan metin yaz.

meta.h1_empty · Orta

H1 başlığı yok Oto

H1, sayfanın ana konusunu hem kullanıcıya hem arama motoruna söyler.

Çözüm: Sayfanın en üstüne konuyu anlatan tek bir H1 ekle.

meta.h1_missing · Yüksek

Birden fazla H1

Birden çok H1 kullanımı ana konuyu bulanıklaştırır.

Çözüm: Tek H1 bırak, diğerlerini H2'ye çevir.

meta.h1_multiple · Düşük

H1 çok uzun

70 karakteri aşan H1 odak kaybettirir; başlık bir paragraf gibi okunur.

Çözüm: H1'i kısa ve net tut; ayrıntıyı alt başlığa taşı.

meta.h1_too_long · Düşük

Başlık hiyerarşisi atlıyor

H2'den H4'e atlamak gibi kırılmalar içerik yapısını ve erişilebilirliği bozar.

Çözüm: Başlıkları sırayla kullan (H1 → H2 → H3).

meta.heading_skip · Düşük

Eski meta keywords etiketi

meta keywords 2009'dan beri Google tarafından kullanılmıyor; rakiplere anahtar kelime listesi sunar.

Çözüm: Etiketi kaldır.

meta.keywords_tag · Bilgi

html lang niteliği yok Oto

lang niteliği dil algılamaya ve ekran okuyuculara yardım eder.

Çözüm: <html lang="tr"> gibi dil kodunu ekle.

meta.lang_missing · Düşük

Uzun içerikte alt başlık yok

600 kelimeyi aşan içerik H2 olmadan taranması ve okunması zor bir metin bloğudur.

Çözüm: İçeriği H2 alt başlıklarla bölümlere ayır.

meta.no_h2 · Düşük

Title tamamen büyük harf Oto

Tamamı büyük harfli başlıklar 'bağırıyor' gibi görünür, okunması zordur; Google bazen yeniden yazar.

Çözüm: Title'ı normal cümle düzeninde yaz; yalnız özel adları büyük harfle başlat.

meta.title_all_caps · Düşük

Title marka adıyla başlıyor Oto

Marka başta olunca sayfanın konusu kesilme riskine girer ve tıklama oranı düşer (ana sayfa hariç).

Çözüm: Konuyu başa, markayı ' | Marka' biçiminde sona al.

meta.title_brand_first · Bilgi

Title yalnızca marka adı Oto

Title sadece marka/site adından oluşuyor; sayfanın konusu arama sonucunda görünmüyor.

Çözüm: Sayfanın konusunu başa, markayı sona koy.

meta.title_brand_only · Orta

Title başka sayfalarla aynı Oto

Aynı title'ı paylaşan sayfalar birbiriyle yarışır (cannibalization) ve CTR düşer.

Çözüm: Her sayfaya kendi içeriğini anlatan benzersiz bir title ver.

meta.title_duplicate · Yüksek

Title ve H1 birebir aynı

Aynı olmaları hata değildir, ama farklı varyasyonlar daha fazla sorguyu hedeflemeyi sağlar.

Çözüm: Title'ı tıklamaya teşvik eden, H1'i sayfa içi başlık olarak yaz.

meta.title_eq_h1 · Bilgi

Title etiketi yok Oto

Title, arama sonucundaki mavi başlıktır ve en güçlü on-page sinyallerden biridir.

Çözüm: Sayfanın konusunu ve ana anahtar kelimesini içeren, 30-60 karakterlik benzersiz bir title yaz.

meta.title_missing · Kritik

Birden fazla title etiketi Oto

Sayfada birden çok <title> var; arama motoru hangisini kullanacağını tahmin etmek zorunda kalır.

Çözüm: Tek bir <title> bırak.

meta.title_multiple · Orta

Title piksel genişliği fazla Oto

Karakter sayısı uygun olsa da geniş harfler yüzünden title arama sonucunda kesilebilir (~580 px).

Çözüm: Daha kısa kelimeler seç ya da önemli kısmı başa al.

meta.title_pixel_width · Bilgi

Title'da kelime tekrarı Oto

Aynı kelimenin title'da üç ya da daha fazla geçmesi anahtar kelime doldurma olarak algılanır.

Çözüm: Kelimeyi bir kez kullan; kalan alanı faydaya ayır.

meta.title_stuffing · Orta

Title çok uzun Oto

~60 karakterden (≈580px) uzun title'lar arama sonucunda kesilir.

Çözüm: En önemli kelimeleri başa al ve title'ı kısalt.

meta.title_too_long · Düşük

Title çok kısa Oto

30 karakterden kısa title'lar fırsatı kaçırır.

Çözüm: Title'ı marka ve niteleyicilerle genişlet.

meta.title_too_short · Orta

İçerik 16

Kopya içerik Oto

Bu sayfanın metni başka sayfalarla birebir aynı.

Çözüm: Kopyaları birleştir, canonical ile tek sürüme işaret et ya da içeriği farklılaştır.

content.duplicate · Yüksek

Aynı alt başlık tekrar ediyor

Aynı metinli H2/H3 başlıkları bölümleri ayırt etmeyi zorlaştırır ve içindekileri anlamsız kılar.

Çözüm: Her alt başlığı bölümün içeriğine özgü yaz.

content.duplicate_headings · Düşük

Boş alt başlık

İçi boş H2–H6 etiketleri sayfa yapısını bozar; ekran okuyucular boş başlık okur.

Çözüm: Boş başlıkları kaldır ya da metin ekle; görsel boşluk için CSS kullan.

content.empty_heading · Düşük

Cümleler çok uzun

Ortalama cümle uzunluğu 25 kelimeyi aşıyor; metin zor okunuyor.

Çözüm: Uzun cümleleri böl, gereksiz yan cümleleri çıkar.

content.hard_to_read · Bilgi

Kelime aşırı tekrar ediliyor

Tek bir kelime metnin %4'ünden fazlasını oluşturuyor; bu doğal değil ve spam sinyali verebilir.

Çözüm: Eş anlamlılar ve doğal dil kullan; tekrarı azalt.

content.keyword_stuffing · Orta

Çok uzun paragraflar

150 kelimeyi aşan paragraflar mobilde okunmaz ve AI özetlerine alıntılanma şansını düşürür.

Çözüm: Paragrafları 2-4 cümlelik parçalara böl.

content.long_paragraphs · Bilgi

Yer tutucu metin (lorem ipsum)

Sayfada şablondan kalmış yer tutucu metin var.

Çözüm: Gerçek içerikle değiştir.

content.lorem · Yüksek

Metin/HTML oranı düşük

HTML'in çok küçük bir kısmı görünür metin. Kod şişkinliği ya da az içerik işareti olabilir.

Çözüm: Gereksiz inline kod ve markup'ı azalt, içerik ekle.

content.low_text_ratio · Bilgi

Bozuk karakterler (kodlama hatası)

'ü', 'ÅŸ', 'ı' gibi bozuk karakterler kodlama (UTF-8) hatasını gösterir; metin okunmaz, arama motorları yanlış dizinler.

Çözüm: Veritabanı, dosya ve HTTP başlığında karakter kodlamasını UTF-8 yap; bozulmuş metni düzelt.

content.mojibake · Yüksek

Neredeyse kopya içerik Oto

Metni başka sayfalarla büyük ölçüde aynı (yalnız birkaç kelime farklı). Google bunlardan birini seçip diğerlerini göstermez.

Çözüm: Sayfaları birleştir, canonical ver ya da her sayfaya özgün içerik ekle.

content.near_duplicate · Orta

Uzun içerikte görsel yok

500 kelimeyi aşan bir sayfada hiç görsel yok; görseller okumayı kolaylaştırır ve Google Görseller'den trafik getirir.

Çözüm: İçeriği destekleyen en az bir açıklayıcı görsel ekle.

content.no_images · Bilgi

Uzun içerikte içindekiler yok

2000 kelimeyi aşan, çok bölümlü içerikte sayfa içi bağlantılar okuyucuya yol gösterir; Google bunları 'şuraya atla' linki olarak gösterebilir.

Çözüm: Başa H2 başlıklarına giden bir içindekiler listesi ekle (her H2'ye id verip #id ile linkle).

content.no_toc · Bilgi

Başlıkta eski yıl

Title ya da H1'deki eski yıl ('2023 rehberi') sayfanın güncel olmadığını söyler; tıklanma oranı düşer.

Çözüm: İçeriği güncelleyip yılı yenile ya da başlıktan yılı kaldır.

content.outdated_year · Düşük

Yapım aşaması / yer tutucu ifade

Sayfada 'yakında', 'coming soon', 'test sayfası' gibi tamamlanmamış içerik izi var.

Çözüm: Sayfayı tamamla ya da hazır olana dek noindex yap.

content.placeholder · Düşük

Zayıf içerik (az kelime) Öneri

200 kelimeden az içerik genellikle sorguyu karşılamaya yetmez; 'yardımcı içerik' değerlendirmesinde geride kalır.

Çözüm: İçeriği kullanıcının sorularını yanıtlayacak şekilde genişlet; örnek, veri ve SSS ekle.

content.thin · Orta

Title'daki konu metinde geçmiyor

Title'daki ana kelimelerin hiçbiri sayfa metninde yok; başlık ile içerik uyumsuz görünüyor.

Çözüm: İçerikte title'daki konuyu doğal biçimde işle ya da title'ı içeriğe göre güncelle.

content.title_terms_missing · Düşük

Linkler & Yönlendirmeler 22

Kırık dış link Oto

Sayfa, artık çalışmayan bir dış kaynağa link veriyor. Kullanıcı deneyimini ve güveni zedeler.

Çözüm: Linki güncel bir kaynakla değiştir ya da kaldır.

links.broken_external · Orta

Sayfa içi çapa hedefi yok

'#bolum' linklerinin hedefi sayfada yok; tıklayınca hiçbir yere gitmez (içindekiler tabloları sık bozulur).

Çözüm: Çapa adını hedef başlığın id'siyle eşleştir.

links.broken_fragment · Düşük

Kırık iç link Oto

Sayfa, 4xx/5xx dönen bir iç sayfaya link veriyor.

Çözüm: Linki doğru URL ile değiştir ya da kaldır; hedef taşındıysa 301 ekle.

links.broken_internal · Yüksek

Metinsiz link

Metni, alt'lı görseli ya da aria-label'ı olmayan linkler: Google hedefin konusunu, ekran okuyucular amacını bilemez.

Çözüm: Linke görünür metin, görseline alt ya da aria-label ekle.

links.empty_anchor · Orta

Açıklayıcı olmayan link metni

'Tıklayın', 'devamı' gibi link metinleri hedef sayfa hakkında bilgi vermez.

Çözüm: Link metnini hedef sayfanın konusunu anlatacak şekilde yaz.

links.generic_anchor · Düşük

İç linklerin çoğu yönlendirmeye gidiyor

İç linklerin %10'undan fazlası yönlendirilen adreslere gidiyor; her biri tarama bütçesini ve sayfa hızını harcar.

Çözüm: Menü, şablon ve içerikteki linkleri son adrese güncelle.

links.high_redirect_ratio · Orta

HTTPS sayfadan HTTP iç linke

İç linkler HTTP sürüme gidiyor; her tıklamada ekstra yönlendirme ve karışık sinyal oluşur.

Çözüm: İç linkleri https:// ile güncelle.

links.https_to_http · Orta

İç linkte nofollow

Kendi sayfalarına verilen nofollow linkler iç link değerinin akışını keser.

Çözüm: İç linklerden rel=nofollow'u kaldır.

links.internal_nofollow · Düşük

JavaScript'e bağımlı linkler

href'siz, onclick ya da javascript: ile çalışan linkleri Google takip edemez; hedef sayfalar keşfedilmeyebilir.

Çözüm: Gezinmeyi <a href="/adres"> ile yap; JavaScript davranışını bunun üzerine ekle.

links.js_only · Orta

Çok uzun link metni

100 karakteri aşan link metinleri bağlamı bulanıklaştırır; genellikle paragrafın tamamı link yapılmıştır.

Çözüm: Link metnini hedefi anlatan kısa bir ifadeyle sınırla.

links.long_anchor · Bilgi

Sayfada hiç iç link yok Öneri

Çıkmaz sayfa: tarayıcılar ve kullanıcılar sitenin geri kalanına geçemez.

Çözüm: İlgili sayfalara, kategoriye ve ana sayfaya link ver.

links.no_outlinks · Orta

Geçici (302/307) yönlendirme Oto

Kalıcı bir taşıma için geçici yönlendirme kullanılmış; otorite aktarımı gecikebilir.

Çözüm: Taşıma kalıcıysa 301/308 kullan.

links.redirect_302 · Düşük

Yönlendirme zinciri Oto

URL birden fazla adımla yönleniyor. Her adım link değeri ve hız kaybettirir.

Çözüm: Zinciri tek 301'e indir: ilk URL doğrudan son hedefe gitsin.

links.redirect_chain · Orta

Yönlendirme döngüsü Oto

URL'ler birbirine yönleniyor; sayfa hiç açılmıyor.

Çözüm: Döngüdeki kurallardan birini kaldır.

links.redirect_loop · Kritik

İç link başka alan adına yönleniyor

Sitedeki bir adres başka bir alan adına yönlendiriyor; iç linkler kullanıcıyı farkında olmadan siteden çıkarıyor.

Çözüm: Yönlendirmeyi kontrol et; kasıtlıysa linki doğrudan dış adresle değiştir.

links.redirect_offsite · Orta

Yalnız bir iç link alıyor Öneri

İndekslenebilir sayfaya sitede yalnız bir sayfa link veriyor; önem sinyali zayıf.

Çözüm: İlgili sayfalardan ve kategori sayfalarından ek iç linkler ver.

links.single_inlink · Bilgi

target="_blank" linklerde noopener yok

Yeni sekmede açılan dış linkler eski tarayıcılarda açan sayfaya erişebilir (tabnabbing).

Çözüm: Dış linklere rel="noopener" ekle.

links.target_blank_unsafe · Bilgi

Canonical'ı başka adrese giden sayfalara iç link

Link verilen sayfa başka bir adresi canonical gösteriyor; iç linkler doğrudan canonical adrese gitmeli.

Çözüm: Linki hedef sayfanın canonical adresiyle değiştir.

links.to_canonicalized · Düşük

noindex sayfalara iç link

Link verilen sayfa noindex; link değeri indekslenmeyecek bir sayfaya akıyor.

Çözüm: Bu linkleri indekslenen bir sayfaya yönlendir ya da hedef sayfanın noindex'ini kaldır.

links.to_noindex · Düşük

İç link yönlendirmeye gidiyor Oto

İç link, yönlenen bir URL'yi gösteriyor. Her yönlendirme gecikme ve tarama israfı demek.

Çözüm: Linki doğrudan son URL'ye güncelle.

links.to_redirect · Düşük

Çok fazla link

300'den fazla link, sayfa başına link değerini dağıtır ve kullanıcıyı yorar.

Çözüm: Gereksiz linkleri azalt.

links.too_many · Bilgi

Çok fazla dış link

100'den fazla dış link sayfanın link değerini dağıtır ve spam izlenimi verebilir.

Çözüm: Gereksiz dış linkleri kaldır; reklam/ortaklık linklerine rel="sponsored" ekle.

links.too_many_external · Bilgi

Görseller 13

ALT metni dosya adı gibi

'IMG_1234.jpg' gibi ALT metinleri görseli anlatmaz; boş ALT'tan farksızdır.

Çözüm: Görselde ne olduğunu anlatan doğal bir ALT yaz.

img.alt_filename · Orta

Görselde ALT metni yok Oto

ALT metni görme engelli kullanıcılar ve Google Görseller için gerekli.

Çözüm: Görseli anlatan kısa, doğal bir ALT metni yaz. Dekoratif görsellerde alt="" kullan.

img.alt_missing · Orta

Aynı ALT metni tekrar ediyor

Sayfada üç ya da daha fazla görsel aynı ALT metnini kullanıyor; görseller ayırt edilemiyor.

Çözüm: Her görsel için içeriğine özgü ALT yaz.

img.alt_repeated · Bilgi

ALT metni çok uzun

125 karakteri aşan ALT metinleri ekran okuyucularda kesilir ve anahtar kelime doldurma gibi görünür.

Çözüm: ALT'ı görseli anlatan kısa bir cümleyle sınırla.

img.alt_too_long · Düşük

Kırık görsel

Görsel yüklenemiyor (4xx/5xx).

Çözüm: Görsel yolunu düzelt ya da görseli kaldır.

img.broken · Yüksek

Görsel dosya adı anlamsız

'IMG_1234.jpg' gibi dosya adları Google Görseller'e görselin ne olduğunu anlatmaz.

Çözüm: Görselleri içeriği anlatan kısa, tireli adlarla yükle (ör. filtre-kahve-demleme.jpg).

img.generic_filename · Bilgi

Görsel dosyası çok büyük

300 KB'ı aşan görseller sayfayı yavaşlatır ve LCP'yi kötüleştirir.

Çözüm: Görseli gösterildiği boyuta küçült, WebP/AVIF'e çevir ve sıkıştır.

img.large_file · Orta

İlk görsel lazy-load

Sayfanın ilk (büyük olasılıkla LCP) görseli loading="lazy"; tarayıcı onu geç indirir ve LCP kötüleşir.

Çözüm: İlk görselden loading="lazy"'yi kaldır, fetchpriority="high" ekle.

img.lcp_lazy · Orta

Eski görsel formatı

JPEG/PNG yerine WebP/AVIF kullanımı görsel boyutunu %25-50 düşürür.

Çözüm: Görselleri WebP veya AVIF'e dönüştür.

img.legacy_format · Bilgi

Görselde width/height yok Oto

Boyutu belirtilmemiş görseller yüklenirken sayfayı kaydırır (CLS).

Çözüm: img etiketlerine width ve height ekle ya da CSS aspect-ratio kullan.

img.no_dimensions · Düşük

Görseller lazy-load değil Oto

Ekranın altında kalan görsellerin hemen yüklenmesi ilk açılışı yavaşlatır.

Çözüm: İlk görsel dışındakilere loading="lazy" ekle.

img.no_lazy · Düşük

Duyarlı görsel (srcset) yok

Görseller tek boyutta sunuluyor; mobil cihazlar gereğinden büyük dosya indiriyor.

Çözüm: srcset/sizes ya da <picture> ile farklı genişlikler sun.

img.no_srcset · Bilgi

Sayfada çok fazla görsel

100'den fazla görsel sayfa ağırlığını ve istek sayısını artırır; mobilde yavaşlık yapar.

Çözüm: Galerileri sayfalandır, lazy-load kullan, dekoratif görselleri CSS'e taşı.

img.too_many · Bilgi

Yapısal Veri 19

Article işaretlemesinde görsel yok

Article/BlogPosting için image önerilir; olmadan Discover ve zengin sonuçlarda görsel gösterilmez.

Çözüm: image alanına en az 1200 px genişliğinde bir görsel ekle.

sd.article_no_image · Orta

BreadcrumbList hatalı

itemListElement öğelerinde position sıralı değil ya da name/item eksik; Google içerik haritasını göstermez.

Çözüm: Her öğeye 1'den başlayan sıralı position, name ve item (son öğe hariç) ekle.

sd.breadcrumb_invalid · Orta

JSON-LD'de @context eksik

@context "https://schema.org" olmadan işaretleme yorumlanamaz.

Çözüm: Her kök nesneye "@context": "https://schema.org" ekle.

sd.context_missing · Orta

Artık zengin sonuç üretmeyen şema türü

Google HowTo zengin sonuçlarını 2023'te kaldırdı; bu işaretleme arama sonuçlarında görünüm sağlamaz.

Çözüm: İşaretleme zarar vermez, ama zengin sonuç beklentisiyle emek harcama; adımları içerikte net listele.

sd.deprecated_rich_result · Bilgi

Aynı şema türü tekrar ediyor

Sayfada aynı tekil türden (ör. iki Organization ya da iki BreadcrumbList) birden fazla var; Google birini seçer, diğeri yok sayılır.

Çözüm: Tekrarlanan işaretlemeyi birleştir (genelde tema + eklenti çakışması).

sd.duplicate_type · Düşük

Yapısal veride geçersiz tarih

datePublished / dateModified ISO 8601 biçiminde olmalı (ör. 2026-10-12 ya da 2026-10-12T09:00:00+03:00).

Çözüm: Tarihleri ISO 8601 biçimine çevir.

sd.invalid_date · Orta

Yapısal veri (schema.org) yok Oto

JSON-LD, zengin sonuçlar (yıldız, fiyat, SSS) ve AI arama motorlarının sayfayı anlaması için kullanılır.

Çözüm: Sayfa türüne uygun JSON-LD ekle (Organization, Article, Product, BreadcrumbList...).

sd.missing · Düşük

Breadcrumb şeması yok Oto

BreadcrumbList, arama sonucunda URL yerine site hiyerarşisini gösterir.

Çözüm: BreadcrumbList JSON-LD ekle.

sd.no_breadcrumb · Bilgi

Ana sayfada Organization/WebSite şeması yok Oto

Organization ve WebSite şemaları marka bilgi panelini ve site adını besler.

Çözüm: Ana sayfaya Organization (logo, sameAs) ve WebSite şeması ekle.

sd.no_org_home · Düşük

Geçersiz stok durumu (availability)

availability schema.org değerlerinden biri değil; Google stok bilgisini gösteremez.

Çözüm: https://schema.org/InStock, OutOfStock, PreOrder gibi değerlerden birini kullan.

sd.offer_availability_invalid · Düşük

Organization'da logo ya da sameAs yok

Organization işaretlemesindeki logo ve sosyal profiller (sameAs) bilgi panelinde ve AI yanıtlarında marka tanınırlığını artırır.

Çözüm: logo (tam URL) ve sameAs (sosyal profil adresleri) ekle.

sd.org_incomplete · Düşük

JSON-LD bozuk Oto

JSON-LD bloğu geçerli JSON değil; arama motorları onu tamamen yok sayar.

Çözüm: JSON sözdizimini düzelt (virgül, tırnak, kaçış karakterleri).

sd.parse_error · Yüksek

Şemadaki fiyat sayfada görünmüyor

Product şemasındaki fiyat sayfa metninde bulunamadı; Google yanlış ya da gizli fiyatı yanıltıcı işaretleme sayabilir.

Çözüm: Şemadaki price değerinin sayfada gösterilen fiyatla aynı olduğundan emin ol (indirim ve KDV dahil).

sd.price_mismatch · Düşük

Product'ta fiyat bilgisi eksik

Ürün zengin sonucu için offers içinde price ve priceCurrency gerekir; eksikse Google fiyatı göstermez.

Çözüm: offers.price, offers.priceCurrency (ör. TRY) ve availability ekle.

sd.product_offer_incomplete · Yüksek

Puan işaretlemesi hatalı

ratingValue aralık dışında ya da ratingCount/reviewCount eksik; Google yıldızları göstermez.

Çözüm: ratingValue'yu bestRating/worstRating (varsayılan 1–5) aralığında tut, ratingCount ya da reviewCount ekle.

sd.rating_invalid · Orta

Schema'da önerilen alan eksik

Önerilen alanlar zengin sonuçta daha fazla bilgi gösterilmesini sağlar.

Çözüm: Önerilen alanları doldur.

sd.recommended_missing · Bilgi

Yapısal veride göreli adres

JSON-LD'deki url, image ve logo alanları tam adres (https://...) olmalı; göreli adresler yok sayılabilir.

Çözüm: Adresleri https:// ile başlayan tam biçimde yaz.

sd.relative_url · Düşük

Schema'da zorunlu alan eksik Oto

Google'ın zengin sonuç için istediği alanlar eksik.

Çözüm: Eksik alanları JSON-LD'ye ekle.

sd.required_missing · Orta

Kendi işletmesi için puan işaretlemesi

Organization/LocalBusiness'ın kendi sitesinde kendisi için verdiği puanlar 2019'dan beri yıldız olarak gösterilmiyor.

Çözüm: aggregateRating'i ürün ya da hizmet (Product/Service) işaretlemesine taşı; işletme puanları için Google Business Profile kullan.

sd.review_self_serving · Düşük

Uluslararası 9

hreflang olan sayfa başka adrese canonical

Canonical başka bir adresi gösterdiğinde Google bu sayfadaki hreflang'leri yok sayar.

Çözüm: hreflang'leri yalnız kendini canonical gösteren sayfalara koy ya da canonical'ı düzelt.

intl.hreflang_canonical_conflict · Orta

Geçersiz hreflang kodu Oto

hreflang ISO 639-1 dil (+ isteğe bağlı ISO 3166-1 bölge) kodu ya da x-default olmalı.

Çözüm: Kodları 'tr', 'en-gb', 'x-default' biçiminde düzelt.

intl.hreflang_invalid · Orta

hreflang karşılıklı değil Oto

A sayfası B'yi gösteriyorsa B de A'yı göstermelidir; yoksa Google hreflang'i yok sayar.

Çözüm: Tüm dil sürümlerine aynı hreflang kümesini ekle.

intl.hreflang_no_return · Orta

hreflang'de sayfanın kendisi yok Oto

hreflang kümesi sayfanın kendi URL'sini de içermelidir.

Çözüm: Sayfanın kendi dili için bir hreflang satırı ekle.

intl.hreflang_no_self · Orta

x-default hreflang yok Oto

x-default, dil eşleşmesi olmayan kullanıcılar için varsayılan sürümü belirtir.

Çözüm: x-default satırı ekle.

intl.hreflang_no_xdefault · Bilgi

hreflang hedefi 200 dönmüyor Oto

hreflang ile gösterilen dil sürümü hata ya da yönlendirme döndürüyor; Google tüm kümeyi yok sayabilir.

Çözüm: hreflang'de yalnız 200 dönen, son (yönlenmeyen) adresleri kullan.

intl.hreflang_target_error · Yüksek

hreflang hedefi noindex ya da başka sayfaya canonical Oto

Dil sürümü indekslenemiyor (noindex ya da farklı canonical); hreflang kümesi geçersiz olur.

Çözüm: hreflang'de yalnız indekslenebilir ve kendine canonical veren sürümleri kullan.

intl.hreflang_target_noindex · Orta

Geçersiz html lang değeri

html lang özniteliği geçerli bir dil kodu değil (ör. 'turkish' yerine 'tr' olmalı).

Çözüm: ISO 639-1 kodu kullan: tr, en, en-GB…

intl.lang_invalid · Düşük

html lang ile hreflang uyuşmuyor

Sayfa kendi hreflang satırında başka bir dili beyan ediyor; dil sinyalleri çelişiyor.

Çözüm: html lang ve sayfanın kendi hreflang kodunu aynı dile getir.

intl.lang_mismatch · Düşük

Performans 19

Kırık CSS / JavaScript dosyası

Sayfanın yüklediği CSS ya da JS dosyası hata dönüyor; sayfa bozuk görünebilir, Google onu eksik çizer.

Çözüm: Dosya yolunu düzelt ya da şablondan kaldır.

perf.broken_asset · Yüksek

DOM çok büyük

1500'ü aşan HTML öğesi bellek kullanımını, stil hesaplamasını ve etkileşim gecikmesini (INP) artırır.

Çözüm: Gereksiz sarmalayıcı div'leri, gizli menü kopyalarını ve uzun listeleri azalt (sayfalama / tembel yükleme).

perf.dom_size · Orta

Sayfa çok ağır

HTML ve görsellerin toplamı 3 MB'ı aşıyor; mobil bağlantıda sayfa yavaş açılır.

Çözüm: Görselleri sıkıştır/WebP'ye çevir, ekran dışındakileri lazy-load yap, kullanılmayan kaynakları kaldır.

perf.heavy_page · Orta

HTML çok büyük

HTML 500 KB'tan büyük. Ayrıştırma ve ilk boyama gecikir.

Çözüm: Inline veri/stil/script'i azalt, sayfalama kullan.

perf.large_html · Düşük

Büyük inline CSS

50 KB'tan büyük inline <style> blokları HTML'i şişirir ve önbelleğe alınamaz.

Çözüm: Kritik olmayan CSS'i harici dosyaya taşı.

perf.large_inline_css · Bilgi

Çok büyük satır içi JavaScript

HTML'e gömülü 100 KB'ı aşan script, sayfa her açıldığında yeniden indirilir ve ayrıştırılır.

Çözüm: Satır içi scripti ayrı, önbelleklenen bir dosyaya taşı.

perf.large_inline_js · Düşük

Ana görsele öncelik verilmemiş

İlk büyük görselde fetchpriority="high" yok; tarayıcı LCP görselini diğer kaynaklarla aynı önceliğe koyar.

Çözüm: Sayfanın ilk/ana görseline fetchpriority="high" ekle.

perf.lcp_priority · Bilgi

Çok fazla web yazı tipi

Dörtten fazla yazı tipi dosyası/ailesi ilk açılışı yavaşlatır ve metin geç görünür.

Çözüm: Aile ve ağırlık sayısını azalt, değişken yazı tipi kullan, font-display: swap ekle.

perf.many_fonts · Düşük

Önbellek başlığı yok

Cache-Control tanımlı değil; CDN ve tarayıcı önbelleği verimsiz çalışır.

Çözüm: Uygun Cache-Control başlığı ekle.

perf.no_cache_header · Bilgi

Sıkıştırma kapalı

HTML gzip/brotli ile sıkıştırılmadan gönderiliyor; transfer boyutu 3-5 kat büyük.

Çözüm: Sunucu veya CDN'de gzip/brotli sıkıştırmayı aç.

perf.no_compression · Orta

Sunucu 304 Not Modified dönmüyor

ETag/Last-Modified var ama sunucu koşullu isteğe 304 yerine tüm sayfayı gönderiyor; Google tarama bütçesini boşa harcar.

Çözüm: If-None-Match / If-Modified-Since isteklerine 304 dönülmesini sağla (çoğu sunucu ve CDN'de bir ayardır).

perf.no_conditional_get · Düşük

Kritik üçüncü taraf kaynaklara preconnect yok

Yazı tipi ya da CDN gibi başka alan adlarından kritik kaynak yükleniyor ama bağlantı önceden açılmıyor.

Çözüm: <link rel="preconnect" href="https://alanadi" crossorigin> ekle (en fazla 2-3 alan adı).

perf.no_preconnect · Bilgi

Sayfalarda ETag / Last-Modified yok

Doğrulayıcı başlıklar olmadan tarayıcılar ve Googlebot değişmemiş sayfayı her seferinde baştan indirir.

Çözüm: Sunucu ya da CDN'de ETag veya Last-Modified başlığını aç.

perf.no_validators · Düşük

Render'ı engelleyen script

<head> içindeki async/defer'siz script'ler sayfanın görünmesini geciktirir.

Çözüm: Script'lere defer ya da async ekle.

perf.render_blocking_js · Düşük

Sunucu yanıtı yavaş

Sunucu yanıt süresi 800 ms'nin üstünde. TTFB yüksekse LCP de kötüleşir.

Çözüm: Sayfa önbellekleme, CDN, veritabanı sorgu optimizasyonu ya da daha güçlü sunucu kullan.

perf.slow_response · Orta

Statik dosyaların önbellek süresi kısa

CSS, JS, font ve görseller 7 günden kısa önbellekleniyor; tekrar gelen ziyaretçi her şeyi yeniden indirir.

Çözüm: Sürümlenen statik dosyalara Cache-Control: public, max-age=31536000, immutable ver.

perf.static_cache_short · Orta

Çok fazla üçüncü taraf script

Ondan fazla farklı alan adından script yükleniyor; her biri DNS, bağlantı ve ana iş parçacığı maliyeti getirir.

Çözüm: Kullanılmayan etiketleri kaldır; etiket yöneticisi ve gecikmeli yükleme kullan.

perf.third_party_scripts · Orta

Çok fazla CSS dosyası

Altıdan fazla stil dosyası her biri ayrı istek ve render engelleme demek.

Çözüm: CSS dosyalarını birleştir; kritik CSS'i satır içine al, kalanını geciktir.

perf.too_many_css · Düşük

Çok fazla kaynak

Sayfa 60'tan fazla script/stil/görsel yüklüyor.

Çözüm: Kaynakları birleştir, gereksiz üçüncü parti scriptleri kaldır.

perf.too_many_requests · Düşük

Mobil & Erişilebilirlik 11

Sesli otomatik oynatma

Sessize alınmamış otomatik oynatılan video/ses kullanıcıyı rahatsız eder; tarayıcılar çoğunlukla engeller.

Çözüm: autoplay kullanıyorsan muted ekle ya da oynatmayı kullanıcıya bırak.

a11y.autoplay_media · Düşük

Adı olmayan buton

Metni ya da aria-label'ı olmayan butonlar ekran okuyucuda 'buton' diye okunur; ne yaptığı anlaşılmaz.

Çözüm: Butona görünür metin ya da aria-label ekle (ikon butonlarında özellikle).

a11y.button_no_name · Orta

Eskimiş HTML etiketleri

<font>, <center>, <marquee> gibi etiketler HTML5'te kaldırıldı; eski ve bakımsız şablon sinyali verir.

Çözüm: Bu etiketleri CSS ile değiştir.

a11y.deprecated_tags · Bilgi

Aynı id birden çok kez kullanılmış

Tekrarlanan id'ler form etiketlerini, aria bağlantılarını ve sayfa içi çapaları bozar.

Çözüm: Her id'yi sayfada benzersiz yap.

a11y.duplicate_ids · Düşük

iframe'de başlık yok

title özniteliği olmayan iframe'lerin (video, harita) ne olduğu ekran okuyuculara anlatılamaz.

Çözüm: Her iframe'e kısa bir title ekle (ör. title="Tanıtım videosu").

a11y.iframe_no_title · Düşük

Etiketsiz form alanı

Etiketi olmayan form alanlarını ekran okuyucular anlamlandıramaz.

Çözüm: Her input'a <label for> ya da aria-label ekle.

a11y.input_no_label · Düşük

<main> bölgesi yok

<main> ekran okuyucuların içeriğe doğrudan atlamasını sağlar; AI ve arama motorları da ana içeriği daha kolay ayırır.

Çözüm: Sayfanın ana içeriğini tek bir <main> etiketiyle sar.

a11y.no_main · Bilgi

Pozitif tabindex kullanımı

tabindex 0'dan büyükse klavye sırası sayfanın görsel sırasından kopar.

Çözüm: tabindex="0" ya da -1 kullan; sırayı HTML düzeniyle ver.

a11y.positive_tabindex · Düşük

Viewport sabit genişlikte Oto

width=1024 gibi sabit viewport mobilde sayfanın küçültülmüş masaüstü görünümüyle açılmasına yol açar.

Çözüm: width=device-width, initial-scale=1 kullan.

mobile.fixed_viewport · Orta

Viewport meta etiketi yok Oto

Viewport tanımı olmadan sayfa mobilde masaüstü genişliğinde görünür. Google mobil öncelikli indeksler.

Çözüm: <meta name="viewport" content="width=device-width, initial-scale=1"> ekle.

mobile.viewport_missing · Yüksek

Yakınlaştırma engellenmiş Oto

user-scalable=no ya da maximum-scale=1 erişilebilirliği bozar.

Çözüm: Viewport'tan bu kısıtlamaları kaldır.

mobile.zoom_disabled · Orta

Güvenlik 14

Çerez Secure bayrağı olmadan

HTTPS sitesinde Secure bayraksız çerezler şifresiz bağlantıda da gönderilebilir.

Çözüm: Tüm çerezlere Secure; oturum çerezlerine ayrıca HttpOnly ve SameSite ekle.

sec.cookie_insecure · Düşük

Hassas dosyalar herkese açık

.git, .env gibi dosyalar herkese açık: kaynak kod, veritabanı şifreleri ya da API anahtarları sızabilir.

Çözüm: Bu yollara erişimi sunucuda hemen engelle (403/404), açıkta kalmış anahtar ve şifreleri değiştir.

sec.exposed_files · Kritik

Form HTTP adrese gönderiyor

HTTPS sayfadaki form verisi şifresiz HTTP adrese gidiyor; tarayıcılar uyarı gösterir, veriler okunabilir.

Çözüm: Form action adresini https:// yap.

sec.form_insecure_action · Yüksek

HSTS süresi çok kısa Oto

Strict-Transport-Security max-age 6 aydan kısa; tarayıcılar HTTPS zorunluluğunu kısa sürede unutur.

Çözüm: max-age=31536000 (1 yıl) kullan; tüm alt alan adları HTTPS ise includeSubDomains ekle.

sec.hsts_weak · Düşük

Güvenlik başlıkları eksik Oto

X-Content-Type-Options, X-Frame-Options/CSP frame-ancestors ve Referrer-Policy temel korumalar sağlar.

Çözüm: Eksik başlıkları sunucu veya CDN'de ekle.

sec.missing_headers · Bilgi

Karışık içerik (HTTPS sayfada HTTP kaynak) Oto

HTTPS sayfa HTTP üzerinden script/görsel yüklüyor; tarayıcı bunları engelleyebilir.

Çözüm: Kaynak URL'lerini https:// ile değiştir.

sec.mixed_content · Yüksek

Content-Security-Policy yok

CSP, sitede bir XSS açığı olsa bile zararlı script çalışmasını sınırlar; ayrıca güven sinyalidir.

Çözüm: Önce Content-Security-Policy-Report-Only ile başla, ardından kısıtlayıcı bir politika yayınla.

sec.no_csp · Düşük

HSTS başlığı yok Oto

Strict-Transport-Security, tarayıcıların siteye her zaman HTTPS ile bağlanmasını sağlar.

Çözüm: Strict-Transport-Security: max-age=31536000; includeSubDomains ekle.

sec.no_hsts · Düşük

Ortak CDN'den yüklenen scriptte bütünlük (SRI) yok

Ortak CDN'deki dosya değiştirilirse siteye zararlı kod girer; integrity özelliği bunu engeller.

Çözüm: Script etiketine integrity="sha384-…" ve crossorigin="anonymous" ekle.

sec.no_sri · Bilgi

Sayfa HTTPS değil

HTTPS bir sıralama sinyalidir; tarayıcılar HTTP sayfaları 'güvenli değil' olarak işaretler.

Çözüm: SSL sertifikası kur ve tüm trafiği HTTPS'e yönlendir.

sec.not_https · Yüksek

Şifre alanı GET ile gönderiliyor

method=GET olan formdaki şifre adres çubuğuna, sunucu loglarına ve tarayıcı geçmişine yazılır.

Çözüm: Şifre içeren formlarda method="post" kullan.

sec.password_get · Orta

Sunucu sürümü ifşa ediliyor

Server başlığı yazılım sürümünü gösteriyor; saldırganların işini kolaylaştırır.

Çözüm: Server başlığından sürüm bilgisini kaldır.

sec.server_version · Bilgi

Bilinen açığı olan JavaScript kütüphanesi

Sitede güvenlik açığı bilinen eski bir kütüphane sürümü yükleniyor; tarayıcı tarafı saldırılara açık olabilir.

Çözüm: Kütüphaneyi güncel sürüme yükselt; WordPress'te tema ve eklentileri güncelle.

sec.vulnerable_js_lib · Orta

X-Powered-By başlığı altyapıyı ifşa ediyor

X-Powered-By, kullanılan dil ve sürümü (ör. PHP/7.4) gösterir; saldırganların hedef seçmesini kolaylaştırır.

Çözüm: Başlığı kapat: PHP'de expose_php=Off, Express'te app.disable('x-powered-by'), IIS'te customHeaders'tan kaldır.

sec.x_powered_by · Bilgi

Sosyal Paylaşım 7

og:image açılmıyor Oto

Paylaşım görseli hata dönüyor; sosyal medyada kart görselsiz görünür.

Çözüm: og:image adresini çalışan, en az 1200×630 bir görselle değiştir.

social.og_image_broken · Orta

og:image yok Oto

Open Graph var ama görsel yok; paylaşımlar küçük, görselsiz bir kart olarak görünür.

Çözüm: En az 1200×630 px bir og:image ekle.

social.og_image_missing · Orta

og:image göreli adres

Facebook, LinkedIn ve X göreli görsel adreslerini çözmez; görsel paylaşımda görünmez.

Çözüm: og:image'da https:// ile başlayan tam adres kullan.

social.og_image_relative · Düşük

Open Graph etiketleri eksik Oto

og:title, og:description ve og:image; WhatsApp, LinkedIn, Facebook paylaşım önizlemesini belirler.

Çözüm: Eksik og: etiketlerini ekle (görsel 1200x630 önerilir).

social.og_missing · Düşük

og:type yok Oto

og:type olmadan paylaşım kartı varsayılan 'website' türüyle gösterilir; makale ve ürünler doğru tanınmaz.

Çözüm: og:type ekle (ana sayfada website, yazılarda article, ürünlerde product).

social.og_type_missing · Bilgi

og:url canonical ile farklı

Paylaşımlarda og:url esas alınır; canonical'dan farklıysa beğeni/paylaşım sayıları iki adrese bölünür.

Çözüm: og:url'yi canonical adresle aynı yap.

social.og_url_mismatch · Düşük

Twitter/X Card yok Oto

twitter:card tanımlı değil; X'te paylaşım önizlemesi küçük ya da boş görünür.

Çözüm: twitter:card="summary_large_image" ekle.

social.twitter_card_missing · Bilgi

AI Arama (GEO) 14

AI botları robots.txt'de engelli Oto

GPTBot, ClaudeBot, PerplexityBot gibi botlar engelliyse site AI yanıtlarında kaynak gösterilemez.

Çözüm: AI aramada görünmek istiyorsan arama botlarına (OAI-SearchBot, Claude-SearchBot, PerplexityBot) izin ver.

geo.ai_bots_blocked · Orta

İçerik JavaScript'e bağımlı görünüyor

Ham HTML'de neredeyse hiç metin yok. AI botlarının çoğu JS çalıştırmaz; içeriği göremezler.

Çözüm: Sunucu tarafı render (SSR) ya da statik ön render kullan.

geo.client_rendered · Orta

llms.txt biçimi hatalı Oto

llms.txt bir '# Site adı' başlığıyla başlamalı ve '- [Başlık](url)' biçiminde linkler içermeli; aksi hâlde AI araçları dosyayı ayrıştıramaz.

Çözüm: Dosyayı llmstxt.org biçimine göre düzenle.

geo.llms_txt_invalid · Düşük

llms.txt yok Oto

llms.txt, dil modellerine sitenin en önemli sayfalarını ve kısa özetini sunan yeni bir standart.

Çözüm: Kök dizine site özeti ve ana sayfa linklerini içeren /llms.txt ekle.

geo.llms_txt_missing · Düşük

Hakkımızda / iletişim sayfası bulunamadı

Kim olduğunu ve sana nasıl ulaşılacağını gösteren sayfalar güvenilirlik (E-E-A-T) ve AI alıntıları için temel sinyaldir.

Çözüm: Hakkımızda ve iletişim sayfaları oluştur, ana menüden ya da alt bilgiden link ver.

geo.no_about_contact · Orta

Yazar / E-E-A-T sinyali yok Oto

Makale sayfalarında yazar ve yayın tarihi; hem Google'ın E-E-A-T değerlendirmesi hem AI alıntıları için önemli.

Çözüm: Article şemasına author ve datePublished ekle, sayfada yazar kutusu göster.

geo.no_author · Düşük

İçerikte tarih yok

Uzun içerikte yayın/güncelleme tarihi yok; AI yanıt motorları ve Google güncelliği değerlendiremez.

Çözüm: Görünür bir tarih (<time datetime>) ve şemada datePublished/dateModified ekle.

geo.no_date · Düşük

Soru-cevap yapısı yok Oto

AI motorları soru biçimindeki başlıkları ve kısa, net cevapları alıntılamayı sever.

Çözüm: Uzun içeriklere soru biçiminde H2/H3'ler ve FAQPage şeması ekle.

geo.no_faq_structure · Bilgi

Soru biçiminde alt başlık yok

Kullanıcıların sorduğu biçimde başlıklar ("... nasıl yapılır?") AI ve sesli aramada eşleşme şansını artırır.

Çözüm: Uygun alt başlıkları kullanıcı sorusu biçiminde yaz, hemen altında kısa yanıt ver.

geo.no_question_headings · Bilgi

Alıntılanabilir giriş paragrafı yok

Uzun içeriğin girişinde soruyu doğrudan yanıtlayan kısa (40-60 kelime) bir paragraf yok; AI yanıtları genelde bu paragrafı alıntılar.

Çözüm: İlk paragrafta konuyu 2-3 cümlede doğrudan özetle.

geo.no_quotable_lead · Bilgi

Uzun içerikte liste ya da tablo yok

1200 kelimeyi aşan içerikte madde listesi ve tablo yok; AI özetleri ve öne çıkan snippet'ler yapılandırılmış bilgiyi tercih eder.

Çözüm: Adımları numaralı listeye, karşılaştırmaları tabloya dönüştür.

geo.no_structure · Düşük

Sayfa snippet'i engellenmiş

nosnippet ya da max-snippet:0, Google'ın metin göstermesini ve AI Overviews'ta sayfadan alıntı yapmasını engeller.

Çözüm: Bu yönergeyi yalnız gerçekten gizli kalması gereken bölümlere (data-nosnippet) uygula.

geo.nosnippet · Orta

Organization'da Wikidata/Wikipedia bağlantısı yok

sameAs içindeki Wikidata/Wikipedia adresi, AI modellerinin markayı doğru varlıkla eşleştirmesine yardım eder.

Çözüm: Markanın Wikidata kaydı varsa adresini Organization sameAs listesine ekle.

geo.org_no_wikidata · Bilgi

İçerik 2 yıldan uzun süredir güncellenmemiş

AI yanıt motorları ve Google güncel kaynakları tercih eder; eski tarihli içerik daha az alıntılanır.

Çözüm: İçeriği gözden geçir, güncel bilgileri ekle ve dateModified'ı güncelle.

geo.stale_content · Bilgi