İçeriğe geç
Approvalens

Okuma odası · 8 dk okuma

H1 ve Başlık Yapısı: Neyin Önemli Olduğu, Nasıl Düzeltileceği

Google'ın H1 ve başlık sırası hakkında gerçekte ne dediği, temaların başlık yapısını nasıl bozduğu ve WordPress, Blogger, Next.js'te düzeltme adımları.

Approvalens ekibi

Şu rapor bulgularını düzeltir

  • Eksik H1 başlıkları
  • Başlık yapısı
  • H1 başlıkla uyumlu
  • Boş ana başlık
  • Uzun ana başlıklar
  • Birden fazla yazıda aynı ana başlık
  • Ara başlıksız uzun yazılar
  • Ara başlıklar

Google iki H1'li ya da başlıkları sırasız bir sayfayı cezalandırmıyor. Kendi başlangıç rehberi, başlık sırasının Google Arama açısından önemli olmadığını açıkça yazıyor. Başlıkları düzeltmenin sebebi okur. Başlık iskeleti, insanların göz gezdirdiği ve ekran okuyucuların atlaya atlaya ilerlediği içindekiler tablosu. Site adından, kenar çubuğu bileşenlerinden ve boş etiketlerden oluşunca sayfa elden geçmemiş gibi görünüyor. Sorunların çoğu senin yazdığından değil, temadan geliyor. Şablonu bir kez düzeltirsen bütün yazılar düzelir.

Google gerçekte ne diyor?

H1 hakkında çok efsane dolaşıyor. Resmi belgelerin söylediği şu kadar:

Duyduğun iddia Google belgesi ne diyor
"Başlıklar sırasızsa sıralama kaybedersin" "from Google Search perspective, it doesn't matter if you're using them out of order" (SEO başlangıç rehberi)
"Tam olarak şu kadar başlık kullan" "There's also no magical, ideal amount of headings a given page should have." (aynı sayfa)
"Başlıkların hiç önemi yok" Aynı rehber uzun içeriği bölümlere ayırmanı ve okurun gezinmesi için başlık koymanı öneriyor
"Google H1'e bakmaz" <h1> gibi başlık öğeleri, Google'ın başlık bağlantısı oluştururken kullandığı kaynaklardan (başlık bağlantıları)

Başlık bağlantıları belgesinde pratik bir ayrıntı daha var. Google sayfada birden fazla büyük, öne çıkan başlık görürse başlık bağlantısı için ilkini kullanabiliyor. Belge, ana başlığın öne çıkmasını, örneğin sayfadaki ilk görünür <h1> içinde olmasını öneriyor. İlk H1'de site adının durması tam tersini yapıyor.

"Sayfada tek H1" önerisi bir Google cezasından değil, erişilebilirlik ve HTML rehberlerinden geliyor. MDN birden fazla H1'in HTML standardında serbest olduğunu ama iyi uygulama sayılmadığını yazıyor (MDN). W3C'nin rehberi de başlık seviyesi atlamanın kafa karıştırdığını ve mümkünse kaçınılması gerektiğini söylüyor (W3C WAI). Taramanın seni tuttuğu ölçü bu: insanlar için temiz bir iskelet.

Aynı yazının iki başlık iskeleti: birinde site adı H1, yazı başlığı H3 ve boş bir H2 var; diğerinde tek H1 ve altında H2, H3 bölümleri
Soldaki iskeleti yazar değil tema üretiyor. Site adını H1'den çıkarıp yazı başlığını yükseltmek sorunun çoğunu çözüyor.

Sayfanın gerçek iskeletini oku

Önce tek bir yazıya bak. Sebep şablonsa bütün yazılar aynı sorunu paylaşır.

Sayfa kaynağı (Ctrl+U), sunucunun gönderdiği HTML'i gösterir. Tarama da bunu okuyor. <h1 ara ve say, sonra <h2 ve <h3.

Terminalde tek satırla liste:

$ curl -s https://ornekblog.com/orkide-saksi-degistirme/ | grep -oE '<h[1-6][^>]*>'
<h1 class="site-title">
<h3 class="post-title entry-title">
<h2 class="widget-title">
<h4>
<h2 class="widget-title">

DevTools konsolu (F12, Console sekmesi) her başlığı metniyle yazar. Şunu yapıştırıp Enter'a bas:

document.querySelectorAll('h1,h2,h3,h4,h5,h6').forEach(h =>
  console.log(h.tagName, JSON.stringify(h.textContent.trim().slice(0, 70))))
H1 "Örnek Blog"
H3 "Orkide saksısı 5 adımda nasıl değiştirilir"
H2 ""
H4 "1. adım: bir gün önce sula"
H2 "Popüler yazılar"

Konsol sayfanın JavaScript çalıştıktan sonraki halini gösterir. Sayfa kaynağıyla uyuşmuyorsa bir script başlık ekliyor ya da değiştiriyor demektir. Ham HTML okuyan tarayıcılar kaynağı görür.

WordPress blok düzenleyicide Document Overview'daki Outline sekmesi yazının içindeki başlıkları ve yapısını gösteriyor (WordPress belgesi). Ama yalnızca senin yazdığını kapsıyor. Temanın üst bölümü, kenar çubuğu ve başlığı orada yok. İçerik için Outline'a, şablon için kaynağa bak.

Karar ağacı: hiç H1 yok, tek H1 boş, ilk H1 site adı ya da iki ve daha fazla H1; her biri olası sebebi ve tetiklediği bulguyla
H1 etiketlerini say ve ilkini oku. Bu sana hem sebebi hem de çıkacak bulguyu gösteriyor.

İskeleti bozan beş kalıp

1. Her yazıda H1 site adı. Bazı klasik temalar site başlığını her sayfada <h1> içine koyuyor. Yazı başlığı ya ikinci H1 oluyor ya da H2'ye düşüyor. Bütün yazıların ilk H1'i aynı oluyor, seo.h1_duplicate bulgusu da tam bunu raporluyor.

2. Metinsiz H1 içinde logo. <h1><a href="/"><img src="/logo.svg"></a></h1> ne metin ne alt içeriyor. Okur da ekran okuyucu da boş bir başlık görüyor. alt="Örnek Blog" eklemek ona bir ad verir. Yazı sayfalarında <div> yapmak daha temiz.

3. Yazı başlığı hiç başlık değil ya da H3. Bazı Blogger şablonları, özellikle eskiler, yazı başlığını <h3 class='post-title entry-title'> olarak basıyor. Bazı sayfa oluşturucular başlığı biçimlendirilmiş bir <div> içinde gösteriyor.

4. Yazı boyutu için kullanılan başlıklar. H2 içinde "Hemen arayın" bandı, H4 içinde alıntı, H3 içinde bülten kutusu. MDN bu konuda net: metni büyütmek için başlık öğesi kullanma, CSS font-size kullan. Sayfa oluşturucundaki başlık bileşeni HTML etiketini boyuttan ayrı seçtiriyorsa süs için p ya da div seç.

5. Bileşenlerden gelen boş başlıklar. Bazı temalarda başlığı olmayan bir kenar çubuğu bileşeni yine de <h2 class="widget-title"></h2> basıyor. Bileşene bir başlık ver ya da boş etiketi bileşen ayarından veya şablondan kaldır.

Uzun yazılarda tersi oluyor: hiç ara başlık yok. 1.500 kelimelik tek blok metinde göz gezdirmek zor. Birkaç paragrafta bir, o bölümün cevapladığı soruyu söyleyen bir H2 eklemek hem okunurluğu hem de quality.subheadings bulgusunu düzeltir.

Platforma göre düzeltme

WordPress, blok düzenleyicide içerik

Heading block belgesine göre çoğu durumda sayfa başlığı <h1> olarak kullanılıyor, sonraki başlık blokları H2, H3 diye ilerliyor. Yani yazının içinde H2'den başla. H2 için ## ve boşluk, H3 için ### yaz. Seviyeyi blok araç çubuğundaki Transform düğmesinden ya da blok ayarlarındaki H1–H6 düğmelerinden değiştir. Yazı gövdesine ikinci bir H1 ekleme.

WordPress, klasik tema şablonu

Ana temayı değil, alt temayı düzenle. header.php içinde site adını yalnızca blog ana sayfasında H1 yap, diğer sayfalarda paragraf kullan:

<?php if ( is_front_page() && is_home() ) : ?>
  <h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php bloginfo( 'name' ); ?></a></h1>
<?php else : ?>
  <p class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php bloginfo( 'name' ); ?></a></p>
<?php endif; ?>

single.php içinde ya da onun yüklediği şablon parçasında başlığı sayfanın H1'i olarak bas:

<?php the_title( '<h1 class="entry-title">', '</h1>' ); ?>

Temanın CSS'i h1.site-title seçicisini kullanıyorsa aynı kuralları p.site-title için de ekle, görünüm değişmesin.

WordPress, blok tema

Site Editor'ı aç, Single Posts şablonunu düzenle, Title bloğunu seçip başlık seviyesine bak. Sonra Header şablon parçasına geç. Oradaki Site Title bloğu bir başlık seviyesine ayarlıysa yazı sayfaları için düşür ya da düz metin yap.

Blogger

Önce temanın yedeğini indir. Sonra Theme menüsüne gir, "My theme" altındaki menüden Edit HTML'i seç (Blogger yardım) ve post-title ara. Blogger'da data:blog.pageType değeri 'item', 'archive' ya da 'index' oluyor (veri etiketleri). Bu sayede yazı sayfalarına H1 verip liste sayfalarını olduğu gibi bırakabilirsin:

<b:if cond='data:blog.pageType == "item"'>
  <h1 class='post-title entry-title'><data:post.title/></h1>
<b:else/>
  <!-- şablonun orijinal post-title kodunu burada bırak -->
</b:if>

Ardından Header bileşenindeki blog başlığının <h1> etiketini bul. Aynı koşulla yazı sayfalarında <p> ya da <div> bastır. Kaydetmeden önce bir yazıyı ve bir liste sayfasını önizle.

Next.js

Layout'taki site adını başlık etiketlerinin dışında tut, her sayfaya tam olarak bir <h1> ver:

// app/layout.tsx
<header><a href="/" className="site-name">Örnek Blog</a></header>

// app/blog/[slug]/page.tsx
export default async function Page({ params }: { params: Promise<{ slug: string }> }) {
  const { slug } = await params
  const post = await getPost(slug)
  return (
    <article>
      <h1>{post.title}</h1>
      <PostBody source={post.body} />
    </article>
  )
}

Markdown ve MDX gövdelerine dikkat et. Yazı dosyası # Orkide saksısı nasıl değiştirilir diye başlıyorsa ve bileşen de post.title değerini <h1> içinde basıyorsa iki H1 olur. Gövdeleri ## ile başlat ya da Markdown bileşenlerinde h1'i h2'ye eşle.

H1 ile title arasındaki fark

Kelimesi kelimesine aynı olmaları gerekmiyor. H1 sayfadaki manşet, <title> ise tarayıcı sekmesinde ve çoğu zaman arama sonucunda görünen ad. İkisi aynı şeyi vaat etmeli. Title "Orkide saksısı 5 adımda nasıl değiştirilir | Örnek Blog", H1 "Bahar balkon işleri" olursa aramadan gelen kişi doğru sayfada olup olmadığını sorgular. Title tarafı kopya başlık ve meta açıklama rehberinde.

quality.h1_title kontrolü bir kelime karşılaştırması ve tam olarak nasıl çalıştığını bilmek işine yarar. İlk H1'i ve title'ı alıyor, yaygın kelimeleri ve iki harf ya da daha kısa kelimeleri atıyor. Title'larının en az yarısında geçen kelimeleri de atıyor, bu genelde site adın oluyor. Sonra ortak kelimeleri sayıyor. Ortaklar kısa listenin %34'ünden azsa sayfayı işaretliyor. Kelime biçimi birebir eşleşmeli. Türkçede bu önemli, çünkü "orkide" ile "orkidenin", "saksısı" ile "saksısını" farklı kelime sayılıyor. H1'deki ana isimleri title'dakiyle aynı ekle yaz.

Title'dan kalan kelimeler üç H1 seçeneğiyle karşılaştırılıyor: biri üç kelimenin üçünü paylaşıp geçiyor, ekleri farklı olan hiçbirini paylaşmıyor, site adı olan üst bölüm H1'i de işaretleniyor
B seçeneği aynı konuyu anlatıyor ama ekler farklı olduğu için eşleşmiyor. C ise klasik tema sorunu: ilk H1 site adı.

Approvalens taraması neye bakıyor?

Tarama, yazı olarak sınıfladığı her sayfa için sunucunun gönderdiği HTML'i JavaScript çalışmadan okuyor. Sayfaların nasıl sınıflandığı ve puanlandığı metodoloji sayfasında.

Bulgu Ne zaman çıkar
tech.h1 Yazıların %30'undan fazlasında <h1> yok
quality.headings Yazıların %30'unda ya da fazlasında H1 yok, sayfada hiç H2 yokken H3 var ya da boş bir H1 veya H2 var
seo.h1_empty Herhangi bir yazıda metni ve alt özniteliği olan görseli olmayan bir <h1> var
seo.h1_too_long Yazıların %20'sinde ya da fazlasında ilk H1 70 karakterden uzun
seo.h1_duplicate İki ya da daha fazla yazının ilk H1'i büyük-küçük harf farkı gözetmeden aynı
quality.h1_title Yazıların %30'u ya da fazlası yukarıdaki kelime karşılaştırmasından geçemiyor
content.no_subheadings En az iki yazı, ve yazıların %30'u ya da fazlası, 600+ kelime olup hiç H2 içermiyor
quality.subheadings Yazıların %30'unda ya da fazlasında 600+ kelimede hiç H2 yok ya da 1.200+ kelimede üçten az H2 var

Bunlar sezgisel kontroller. İkinci bir H1 tek başına quality.headings bulgusunu tetiklemiyor. Sayfanın kalite puanından bir puan düşüyor ve sayfa tablosunda listeleniyor. "Seviye atlama" testi de dar: yalnızca hiç H2 olmayan bir sayfadaki H3'ü yakalıyor, H2'den doğrudan H4'e geçişi değil.

Eşikler önemli. Taradığımız bir sitede 835 yazının 32'sinde H1 yoktu. Bu %30'un altında kaldığı için site düzeyindeki başlık kontrolü geçti, ama sayfa tablosu 32 sayfanın hepsini listeledi.

Başlık düzeltmesi bir ev temizliği. Temiz başlıkların altında okunacak pek bir şey yoksa asıl iş zayıf içerik ve düşük değerli içerik tarafında. Değerlendiricilerin ana içeriği nasıl yargıladığı Google sayfa kalitesi rehberinde.

Başlık sorunlarını sayfa sayfa gör

Ücretsiz Approvalens taraması yazılarının hangi başlık kontrollerinden kaldığını ve etkilenen adresleri gösteriyor. Böylece temadan gelen genel bir sorunu birkaç başıboş yazıdan ayırabilirsin.

Sık sorulan sorular

İki H1 etiketi olması kötü mü?

Google Arama için hayır. Belgeleri bir ceza tanımlamıyor ve başlık sırasının Arama için önemli olmadığını söylüyor. Okur ve ekran okuyucu için sayfayı adlandıran tek bir H1 daha anlaşılır. Yazı başlığını ilk H1 yap.

Logom H1 olmalı mı?

Ana sayfada olabilir, yeter ki metin ya da alt metinli bir görsel içersin. Yazı sayfalarında H1 yazı başlığı olmalı. Logoyu <p> ya da <div> içinde bir bağlantı yap.

Her 300 kelimede bir H2 gerekir mi?

Hayır. Google ideal bir başlık sayısı olmadığını söylüyor. Tarama da yalnızca uzun yazılara bakıyor: 600+ kelimede hiç H2 yoksa ya da 1.200+ kelimede üçten az H2 varsa.

H1 ile title birebir aynı mı olmalı?

Hayır, aynı konuyu anlatmaları yeter. Ana isimleri aynı ekle yaz ki hem okur hem de taramanın kelime eşleştirmesi onları aynı sayfa olarak görsün.

Google neden title yerine H1'imi gösteriyor?

Google başlık bağlantısını başlıklar dahil birkaç kaynaktan otomatik oluşturuyor. Title kalıp, yarı boş ya da sayfayla uyumsuzsa bu daha olası.

Eskimiş ya da yanlış bir şey mi gördün? Bize yaz, düzeltelim.

Bu rehberi İngilizce oku →

Ücretsiz tarama

Kendi siteni kontrol et

Ücretsiz tarama: uygunluk puanı ve tüm sorunlar, genelde birkaç dakikada.

Ücretsiz tarama · puan ve bulunan tüm sorunlar · üyelik yok

Tüm rehberler →