# Hreflang Denetleyicisi

hreflang'in en sık görülen hatası tek sayfaya bakarak görünmüyor: A, B'yi gösteriyor ama B, A'yı göstermiyor. Google tek yönlü etiketi yok sayıyor.

Ücretsiz SEO Araçları · Kaynak: https://kobiseo.com/araclar/hreflang-denetleyici/

Son güncelleme: 2026-08-26

> Aracın etkileşimli bölümü bu düz metin sürümünde yer almaz; kullanmak için yukarıdaki adrese bakın. Aşağıdaki bölüm aracın ne yaptığını ve arkasındaki kuralları anlatan kalıcı içeriktir.

hreflang'in en pahalı hatası tek sayfaya bakarak görünmüyor. Türkçe sayfanız İngilizce sayfayı gösteriyor, kaynak koda bakıyorsunuz, etiket yerinde. Sorun öteki tarafta: İngilizce sayfa geri dönüp Türkçe sayfayı göstermiyor.

Google bu durumda eşleştirmeyi kabul etmiyor. Etiketi görmezden geliyor, iki sayfayı ilişkisiz sayıyor ve çoğu zaman ikisinden birini dizinden düşürüyor.

Bu araç sayfanın hreflang kümesini okuyup kodları doğruluyor, sonra alternatifleri **tek tek açıp** her birinin geri dönüp bu sayfayı gösterip göstermediğine bakıyor.

## Hreflang nedir, neden denetlenmesi gerekiyor?

**Hreflang**, bir sayfanın başka dillerdeki karşılıklarını arama motoruna bildiren etiket. Türkçede "dil ve bölge etiketi" deniyor, yaygın adı İngilizcesiyle aynı kalıyor. İçinde dil kodu bulunuyor, isteğe bağlı olarak da ülke kodu: `tr` Türkçeyi, `tr-TR` Türkiye’deki Türkçeyi, `de-AT` Avusturya’daki Almancayı gösteriyor.

Bu aracın var olma sebebi etiketin ne olduğu değil, **nasıl bozulduğu**. Hreflang yanlış kurulduğunda hiçbir yerde hata çıkmıyor: etiket sayfada duruyor, tarayıcıda görünüyor, kaynak kodunda kusursuz okunuyor. Arka planda olan tek şey, arama motorunun onu sessizce yok sayması.

Bozulmanın en sık sebebi tek bir sayfaya bakarak görülemiyor. Etiketler **çift yönlü** çalışmak zorunda: Türkçe sayfa İngilizcesini gösteriyorsa, İngilizce sayfanın da Türkçesini göstermesi gerekiyor. İngilizce sayfada ne yazdığını görmeden Türkçe sayfanın doğru olup olmadığı bilinemiyor.

Araç bu yüzden tek sayfayla yetinmiyor: etiketleri toplayıp her alternatifi ayrıca açıyor ve karşılığın kurulup kurulmadığına bakıyor. Dil ve ülke kodlarını, kendine göndermeyi, `x-default` sayısını ve `<html lang>` ile tutarlılığı da aynı turda sınıyor. İngilizce kaynaklarda aynı işi yapan araçlara **hreflang checker** ya da **hreflang validator** deniyor.

## Karşılıklılık neden ölçülmek zorunda?

hreflang tek yönlü çalışmıyor. A sayfası B'yi gösteriyorsa B de A'yı göstermek zorunda; aksi hâlde küme geçersiz.

Bunu sayfanın kendisine bakarak anlamak mümkün değil. Etiketiniz doğru yazılmış olabilir, adres doğru olabilir, kod geçerli olabilir; ötekinin ne yazdığını görmeden karşılıklılık bilinmiyor.

Araç bu yüzden ikinci bir tur atıyor: her alternatifi açıp onun hreflang kümesinde bu sayfanın olup olmadığına bakıyor. Sonuçta her satırın yanında "karşılıklı" ya da "tek yönlü" yazıyor.

Sınır **8 alternatif**. Seksen dilli bir sitede seksen istek atmak hem yavaş hem gereksiz: kurulum bozuksa ilk birkaç sayfada zaten görünüyor. Kümenin tamamı daha büyükse araç bunu ayrıca söylüyor.

## Kod doğrulaması nasıl yapılıyor?

Dil ve ülke kodlarının listesi araca elle yazılmadı. Doğrulama tarayıcının kendi `Intl` verisinden geliyor: etiketin yapısı `Intl.Locale` ile, kodun gerçekten var olup olmadığı `Intl.DisplayNames` ile denetleniyor.

Bunun iki faydası var: elle yazılan bir liste zamanla bayatlıyor, ve kodun Türkçe adı ("İspanyolca (Arjantin)") kendiliğinden geliyor.

Bir yerde yetmiyor. `en-UK` yazıldığında tarayıcı bunu sessizce `en-GB`'ye çeviriyor ve `UK` hatası hiç görünmüyor. Oysa hreflang'de ülke kodu ISO 3166-1 alpha-2 olmak zorunda ve `UK` o listede yok. Araç bu yüzden ham girdiye ayrıca bakıyor.

Aynı mantıkla `EU` (bir ülke değil) ve `CS` (ISO'dan çıkarılmış eski kod) da yakalanıyor. Buna karşılık `es-AR` ya da `sv-SE` gibi doğru kodlar uyarı almıyor; bir dönem bunlar da yanlış işaretleniyordu ve düzeltildi.

## Kendine gönderme ve x-default

Her sayfa **kendisini de** listelemeli. Türkçe sayfanın bloğunda hem İngilizce karşılık hem kendi adresi bulunmalı. Kendine gönderme yoksa Google kümenin tamamını yok sayabiliyor.

Bu, aynı bloğun bütün sayfalara konmasıyla kendiliğinden sağlanıyor. Araç kendine gönderme eksikse ayrıca uyarıyor; genelde sebebi sayfa başına ayrı blok hazırlanması oluyor.

`x-default` zorunlu değil. Olmadığında listedeki dillerin hiçbirine uymayan ziyaretçi için Google kendi tahminini yapıyor; araç bunu "hata" değil "bilinçli mi" diye soruyor.

Bir de `<html lang>` ile tutarlılık denetleniyor: sayfa `lang="tr"` derken kendine gönderen hreflang `en` diyorsa ikisinden biri yanlış.

## Etiket HTML'de değil, başlıkta da olabilir

hreflang üç yerde verilebiliyor: HTML `<link>` etiketi, XML site haritası ve `Link:` HTTP başlığı. Araç HTML etiketlerine ve HTTP başlığına birlikte bakıyor.

Site haritasındaki hreflang bu araçla görünmüyor; onu sayfadan okumak mümkün değil. Site haritası kullanıyorsanız denetimi dosyanın kendisinden yapmanız gerekiyor.

Aynı anda birden fazla yöntem kullanmak sorun: iki yerde farklı bilgi olduğunda hangisinin geçerli olduğu belirsizleşiyor. Araç HTTP başlığından gelen satırları ayrıca işaretliyor, böylece çift kurulumu fark edebiliyorsunuz.

Etiketleri üretmek için [hreflang üreticisi](https://kobiseo.com/araclar/hreflang-uretici/) üç biçimi de veriyor.

## x-default ne zaman gerekiyor?

`x-default`, hiçbir dil sürümü kullanıcının diline uymadığında gösterilecek sayfayı bildiriyor. Zorunlu değil ama bir dil seçme sayfanız ya da genel bir giriş sayfanız varsa oraya işaret etmesi doğru oluyor.

Tek kuralı var ve sık ihlal ediliyor: bir sayfada **yalnız bir tane** `x-default` bulunabilir. Birden fazla olduğunda arama motoru hepsini birden yok sayıyor.

Araç bu sayıyı denetliyor: birden fazla `x-default` gördüğünde ayrıca uyarıyor.

## Hata ne kadar yaygın?

Çok yaygın. Sektörde yapılan incelemelerde çok dilli sitelerin **üçte ikisinden fazlasında** hreflang hatası bulunuyor; bazı ölçümler oranı dörtte üçe kadar çıkarıyor.

Bunun sebebi hreflang'in zor olması değil, **sessiz** olmasını. Yanlış kurulmuş bir etiket hata vermiyor; sayfada duruyor, tarayıcıda görünüyor, kimse şikâyet etmiyor. Yalnız bir dil sürümü arama sonuçlarından yavaşça düşüyor ve bunun sebebi genelde aylar sonra aranmaya başlanıyor.

En sık üç hata sırayla şunlar: karşılıklılığın kurulmamış olması, dil ya da ülke kodunun yanlış yazılması, ve etiketin canonical ile çelişmesi. Üçü de tek sayfaya bakarak fark edilmiyor; adreslerin karşılıklı olarak açılıp okunması gerekiyor.

---

## Sık sorulanlar

hreflang bir kez kurulup unutulan bir şey değil; her yeni dil ve her adres değişikliği kümeyi yeniden bozabiliyor. Aşağıdaki dört soru en sık gelenler.

### Neden alternatiflerimin hepsi denetlenmedi?

Karşılıklılık için en çok 8 alternatif açılıyor. Kümeniz daha büyükse araç bunu ayrıca söylüyor ve kalanları kendiniz denetleyebiliyorsunuz.

Sınırın sebebi hız: her alternatif ayrı bir sayfa açma isteği demek. Seksen dilli bir sitede seksen istek atmak dakikalar sürüyor ve kurulum bozuksa hata zaten ilk birkaç sayfada görünüyor.

Kod doğrulaması ve kendine gönderme denetimi ise **bütün** alternatifler için yapılıyor; sınır yalnız karşılıklılık turunda.

### “Tek yönlü” çıktı ama etiketi ben koydum

Koyduğunuz etiketin karşı tarafta da olması gerekiyor. En sık sebep şu: blok her sayfaya konmuş ama bir dil sürümü ayrı bir sistemde çalışıyor ve o güncellenmemiş.

İkinci sık sebep adres farkı: bir tarafta `https://siteniz.com/en/` yazıyor, öteki tarafta `https://www.siteniz.com/en` gösteriliyor. Araç `www` ve son eğik çizgi farkını yok sayıyor ama sorgu dizesi farkını saymıyor; adresler tam olarak aynı olmalı.

Üçüncüsü önbellek: değişikliği yeni yaptıysanız sunucunuz eski sayfayı sunuyor olabilir.

### Site haritasındaki hreflang neden görünmüyor?

Site haritasındaki hreflang sayfanın kendisinde durmuyor; ayrı bir XML dosyasında. Bir sayfayı açıp okuyarak görülmesi mümkün değil.

Site haritası yöntemini kullanıyorsanız denetimi dosyanın kendisinden yapın: her `<url>` düğümünün kendi alternatiflerini eksiksiz taşıdığını kontrol edin.

Araç HTML etiketlerini ve `Link:` HTTP başlığını okuyor; ikisi de sayfayla birlikte geliyor.

### Adresim bir yere kaydediliyor mu?

Hayır. Sunucumuz sayfayı ve alternatiflerini açıp yalnız bağlantı etiketlerini döndürüyor; adres kayda geçmiyor, sayfa saklanmıyor.

Doğrulama ve karar tamamen sizin tarayıcınızda veriliyor; kod adları da tarayıcının kendi dil verisinden geliyor.

## Kaynaklar

- [Google Search Central: Sayfanın yerelleştirilmiş sürümlerini bildirme](https://developers.google.com/search/docs/specialty/international/localized-versions), Google — resmî kaynak
- [RFC 5646: Diller için etiketler](https://www.rfc-editor.org/rfc/rfc5646), IETF — resmî kaynak
- [RFC 8288: Web Linking](https://www.rfc-editor.org/rfc/rfc8288.html), IETF — resmî kaynak
