nasıl -e denetim Hreflang ölçekte

bir repeatable, araç-driven süreç bençin auditing hreflang genelinde bir büyük site — pulling her annotation -den tümü three implementation methods, okuma küme graphs ve reciprocal matrices, ve prioritizing düzeltmeler tarafından damage, değil frequency.

İlk yayın tarihi: 2 Tem 2026 · Son güncelleme: 8 Ağu 2026 · Advanced
Diller
Bu sayfada 1 kanıt sinyali

Auditing hreflang ölçekte dır bir graph-validation sorun, değil bir tag-validation sorun: siz kontrol et whether her sayfa in bir küme benşaret eder back -e her diğer sayfa, değil whether bir sayfa sahiptir bir tag. Pull her annotation -den tümü three implementation locations (HTML head, HTTP headers, XML sitemap) ile bir crawler — Google verir siz no validator ve GSC's International Targeting rapor idi removed Sept 22, 2022 — o hâlde oluştur reciprocal-tag matrix. Spot-kontrol et bir küme visually ile benim free returntag graph ve matrix, veya kullan Ahrefs site denetimi ve Screaming Frog bençin full-site coverage. Triage tarafından damage: missing döndür tags ilk (onlar break whole pair), o hâlde yanlış language/region codes ve non-canonical targets, o hâlde missing x-default son (en çok yaygın at 56,3%, least harmful). In benim Brighton SEO 2023 study of 374 756 domains, üzerinde 67% kullanarak hreflang sahipti at least bir error.

TL;DR — bir ölçekli hreflang denetim dır graph validation, değil tag validation. adım 1: pull her annotation -den tümü three legal locations (HTML head, HTTP Link headers, XML sitemap) ile bir crawler configured bençin sizin ccTLD/subdomain setup — GSC -ebilir’t yap bu (International Targeting removed Sept 22, 2022, ve hatta önce şu o yalnızca reported canonical member of bir küme). adım 2: oluştur reciprocal-tag matrix — her URL in bir küme × her diğer, yapar bir→B var ol, yapar B→bir. okuyun o in benim returntag küme graph/matrix bençin bir focused kontrol et, veya kullan Ahrefs ve Screaming Frog bençin site-wide tarama. adım 3: classify -e four patterns — missing döndür tags, yanlış codes, non-canonical targets, mixed absolute/relative URLs. adım 4: prioritize tarafından damage, değil frequency — döndür tags ilk (onlar break whole pair), o hâlde codes, o hâlde x-default son (en çok yaygın at 56,3%, least harmful). adım 5: re-verify karşı dizine eklenmiş URL, değil declared canonical.

bu article dır hreflang-specific companion -e benim broader International SEO denetim, hangi treats hreflang olarak bir of six denetim areas. burada ben’m going bir level deeper on hreflang-yalnızca methodology ölçekte. bençin fundamentals — ne hreflang dır, three ways -e implement o, reciprocal kural — see Hreflang hub ve, bençin fallback tag, x-default.

Evidence for this claim A complete audit needs to inspect HTML, HTTP Link headers, and XML sitemaps because Google supports hreflang in all three locations. Scope: Google Search-supported hreflang delivery methods. Confidence: high · Verified: Google: Localized versions

temel reframe: bu bir graph sorun

burada’s mental shift şu yapar ölçekli auditing tractable. siz dır değil checking “does this page have a hreflang tag.” siz’re checking “yapar her sayfa in bu sayfa’s küme benşaret et back -e o, ve yapar her URL in küme resolve -e bir 200, canonical, indexable sayfa.”

Google’ın kendi dokümantasyon dır neden:

“eğer sayfa X bağlantılar -e sayfa Y, sayfa Y -meli bağlantı back -e sayfa X. eğer bu değil durum bençin tümü sayfalar şu kullan hreflang annotations, şunlar annotations -ebilir olmak ignored veya değil interpreted yapğru biçimde.”

Evidence for this claim A hreflang audit must verify return links because Google says non-reciprocal annotations may be ignored or interpreted incorrectly. Scope: Google Search hreflang reciprocity guidance; impact is stated as possible, not guaranteed cluster-wide invalidation. Confidence: high · Verified: Google: Hreflang guidelines

okuyun şu carefully. bir missing döndür bağlantı -ebilir neden ol affected annotations -e olmak ignored veya interpreted incorrectly. şu’s neden bir tek-sayfa view dır structurally incapable of auditing hreflang: başarısızlık lives in relationship arasında sayfalar, değil on herhangi bir bir sayfa. siz ihtiyaç duy bir tarama şu records her küme member ve cross-references them.

Scope önem taşır burada de: ignored annotations dır ones in broken pair, otomatik olarak değil her relationship in bir larger küme. bir five-sayfa küme ile bir missing döndür typically keeps processing onun diğer complete pairs normally — şu’s tam olarak ne benim returntag screenshot below shows: nine reciprocal pairs intact, bir missing döndür flagged. yapmayın assume bir broken edge nukes whole küme; go kontrol et her pair, çünkü araç sahiptir -e kontrol et her pair -e söyle siz şu.

ve o alır harder olarak site grows — bu da tam olarak Google’ın kendi explanation bençin neden big siteler dır ones ile errors. On arama Off Record, Gary Illyes described errors olarak emerging ne zaman bir site sahiptir çok söyleıda properties, her ile onun kendi URL structure — olarak soon olarak siz sahip -e vary pattern genelinde properties, şu’s nerede errors come in, ile Lizzi Sassman adding şu o’s harder -e sync them up -dığınızda’re localizing URLs ve o hâlde making typos. şu’s signature of bir enterprise setup: birden çok ccTLDs, her on bir slightly farklı publishing convention. bu nedenle bir good denetim segments findings tarafından property/domain grup, çünkü şu’s nerede errors aslında küme operationally.

adım 1 — Pull her hreflang annotation site-wide

three places hreflang lives

Google accepts hreflang in three eşdeğeri locations, ve siz -meli kontrol et tümü three:

Evidence for this claim A complete audit needs to inspect HTML, HTTP Link headers, and XML sitemaps because Google supports hreflang in all three locations. Scope: Google Search-supported hreflang delivery methods. Confidence: high · Verified: Google: Localized versions
  1. HTML <link> tags in <head> — yaygın durum.
  2. HTTP Link: response headers — kullanılan bençin non-HTML files like PDFs.
  3. xhtml:link entries in bir XML sitemap — yaygın ölçekte çünkü o centralizes annotations in bir file yerine templating them üzerine her sayfa.

bir crawler şu yalnızca reads HTML head -ecek silently miss header- veya sitemap-declared alternates. o won’t flag them olarak broken — o sadece won’t see them, bu da worse, çünkü siz’ll think bir sayfa sahiptir no hreflang ne zaman o aslında sahiptir bir full ayarla delivered via sitemap. Configure tarama -e okuyun tümü three önce siz trust bir tek number.

Configuring crawler bençin sizin structure

  • Screaming Frog: enable Configuration > Spider > tarama Hreflang (bu ayrıca picks up sitemap ve header hreflang -dığınızda benşaret et o at them). bençin ccTLDs/subdomains şu reference her diğer, ekle sibling domains altında Config > CDNs — otherwise cross-domain hreflang bağlantılar dır basitçe değil validated, değil flagged olarak broken. bu tek en çok yaygın blind spot at scale, çünkü enterprise siteler dır ones en çok muhtemel -e kullan ccTLDs, ve ccTLDs dır tam olarak ne gerektirir bu extra adım.
  • Ahrefs site denetimi: emin olun sibling domains dır bençinde project scope bençin aynı neden. o hâlde kullan sayfa Explorer -e filter sayfalar tarafından hreflang sorun type ölçekte önce siz drill -e individual küme graphs.

neden GSC -ebilir’t yap bu bençin siz

Two nedenler, ve ikinci dır bir en çok kişiler miss:

  1. ** rapor dır gone.** GSC International Targeting rapor — hangi kullanılan -e flag bazı hreflang sorunlar — idi deprecated ve removed (announced August 2022; removed sonra September 22, 2022). Nothing replaced o yapğrudan.
  2. hatta ne zaman o existed, o yalnızca ever showed canonical. On arama Off Record, Illyes explained şu arama Console yalnızca raporlar on canonicals — bençin en çok benzer-language hreflang kümeler, alternates değildir canonical, bu nedenle siz idi effectively blind -e ne idi happening on non-canonical members of bir küme, çünkü Google stores them in yinelenen küme olmadan tutma alternate details. şu’s bir structural neden GSC idi never bir complete hreflang denetim araç, değil sadece “the report got removed.” o’s direct justification bençin going crawler-ilk.

Google ayrıca sadece yapmaz ship bir validator. On aynı podcast, Illyes said Google sahiptir never provided bir hreflang validator — onlar sahipti bazı underused reporting ve o hâlde removed o — ve now benşaret eder kişiler -e external araçlar like Aleyda Solis’ araç, Bill Hunt’s hreflang checker, ve Merkle’s araç. Take şu olarak permission -e lean on üçüncü-party crawlers bençin job GSC -ebilir’t yap — ama değil olarak bir endorsement. Google’s kendi dokümantasyon dır explicit şu o yapmaz maintain veya kontrol et üçüncü-party hreflang debugging araçlar, bu nedenle ele al herhangi bir araç’s output, mine included, olarak diagnostic evidence siz hâlâ sahip -e neden hakkında, değil bir resmî verdict. ne zaman bir bulma aslında önem taşır, yapğrula o karşı raw artifact — HTTP response, sitemap XML, veya rendered HTML — yerine stopping at araç’s parsed özet.

adım 2 — oluştur reciprocal-tag matrix

Normalize ne siz pulled

önce siz oluştur matrix, al everything -e bir consistent shape. bençin her declared hreflang relationship, record kaynak URL, target URL, locale değer, kaynak yöntem (HTML head, HTTP header, veya sitemap), ve — critically — target’s status code, yönlendirme chain, indexability, canonical target, ve whether tarama saw o in raw HTML veya rendered DOM. farklı crawlers export bu differently; normalizing o -e directed URL—e-URL edges ile şu context attached dır ne yapar matrix, ve her classification in adım 3, reliable yerine bir pile of disconnected rows.

ne matrix represents

Conceptually, her biri bençin küme siz oluştur bir table nerede rows ve columns dır her URL in şu küme, ve her cell yanıtlar bir yes/no soru: yapar bir hreflang bağlantı var ol -den row URL -e column URL? bir correct küme dır symmetric — eğer bir→B dır present, B→bir dır present. her asymmetric cell (bir bağlantı şu vardır in bir direction yalnızca) dır bir missing döndür tag.

siz yapmayın literally hand-oluştur bu spreadsheet ölçekte — araçlar oluştur o bençin siz. ama holding matrix in sizin head dır ne lets siz okuyun araç output yapğru biçimde. benim returntag araç draws matrix olarak bir graph ve ayrıca exposes underlying cells; Screaming Frog’s “Missing Return Links” filter pulls asymmetric cells -e bir liste, ve Ahrefs site denetimi provides başka bir at-scale küme view. aynı relationship kontrol et, farklı presentations ve tarama scopes.

okuma o olarak bir graph: benim returntag küme validator

bençin bir focused küme kontrol et, benim free returntag araç renders declared locale relationships olarak bir graph ve bir reciprocal matrix. her locale dır bir node, her declared hreflang annotation dır bir edge, ve sorun liste identifies exact URL şu fails -e bağlantı back. screenshot below dır bir sitemap-yalnızca çalıştır: o reads ne sitemap declares ve deliberately yapmaz fetch sayfa head tags veya HTTP Link headers. kullan sayfa URL’si mode -dığınızda ihtiyaç duy full three-kaynak picture bençin bir sayfa’s küme.

nasıl -e okuyun o:

  • bir temiz küme dır bir fully-connected mesh — her node linked -e her diğer node, her ikisi directions.
  • bir bir-way edge dır sizin asymmetric cell: sayfa X benşaret eder -e Y ama Y yapmaz benşaret et back. şu’s döndür-tag error, seen yerine okuyun.
  • bir orphaned node — bir URL şu görünür in küme ama yapmaz bağlantı back -e o — dır bir unlinked hreflang URL.

practical win dır triage speed ve stakeholder communication: yerine handing bir developer bir abstract spreadsheet row, siz göster bir-way relationship ve exact missing döndür-tag error together. bençin hundreds veya thousands of kümeler, koru Ahrefs site denetimi veya Screaming Frog in workflow bençin complete tarama coverage; returntag dır fast way -e inspect ve explain bir specific küme.

okuma o olarak bir spreadsheet: Screaming Frog filters

-erseniz’re in Screaming Frog, matrix surfaces olarak bir ayarla of filters (sonra siz çalıştır tarama Analysis post-tarama -e populate döndür-bağlantı data). çalışır them in kabaca bu sıra, çünkü o maps -e priority sıra in adım 4:

  • Missing döndür bağlantılar — asymmetric cells; sizin highest-priority findings.
  • Inconsistent Language & Region döndür bağlantılar — bir döndür bağlantı vardır ama ile bir farklı code -den outbound bir (bir söyler B dır fr-FR, B söyler bir dır en-GB ne zaman bir dır gerçekten en-US) — bir subtler pair-breaker.
  • Non-Canonical döndür bağlantılar — döndür bağlantı benşaret eder at bir URL şu’s canonicalized elsewhere, bu nedenle sinyal chain breaks hatta gerçben bir tag vardır.
  • Noindex döndür bağlantılar — döndür target dır noindexed, bu nedenle o -ebilir’t carry annotation.
  • Non-200 Hreflang URLs — target dır bir yönlendirme veya bir error sayfa.
  • Unlinked Hreflang URLs ve Incorrect Language & Region Codes — orphaned nodes ve code-validation errors.

Export whole ayarla via raporlar > Hreflang. (bençin full filter-tarafından-filter walkthrough at özet level, Screaming Frog hreflang tutorial dır excellent — ben’m değil going -e re-type onların config adımlar burada.)

adım 3 — Classify ne siz bul -e four error patterns

sizin tarama output -ecek olmak noisy. Sort her bulma -e bir of four buckets — bunlar dır patterns şu repeat genelinde 374 756-domain study. (ben’m pulling yalnızca two figures şu anchor priority argument; full nine-type error table dır zaten in International SEO denetim article — no benşaret et re-pasting o.)

1. Missing döndür tags — pair-breaker

asymmetric cells -den sizin matrix. 15,3% of hreflang-kullanarak domains sahip bunlar. olarak ben put o in study writeup: “olarak ben mentioned, hreflang tags çalışır in pairs. eğer her ikisi sayfalar yapmayın reference her diğer, onlar -ebilir’t establish connection ve swap uygun biçimde in arama sonuçları.” bu category şu invalidates whole pair’s sinyal per Google’s docs, bu da neden o’s ilk in priority sıra — hatta gerçben o’s değil en çok yaygın error.

2. yanlış language/region codes — quietly-forgiving bir

kullan ISO 639-1 bençin language ve ISO 3166-1 alpha-2 bençin region. classic breakers: jp yerine ja bençin Japanese, typo js bençin ja, three-letter codes like gbr yerine gb, la (Laos) misused bençin “Latin America.”

bir daha distinction worth building -e sizin denetim: BCP 47 ( underlying language-tag spec) permits bir much broader ayarla of values -den Google’s hreflang implementation aslında acts on — script subtags ve diğer BCP 47-legal constructs şu Google’ın kendi hreflang dokümantasyon yapmaz yapğrula olarak recognized values. bir code -ebilir olmak perfectly well-formed BCP 47 ve hâlâ değil olmak something Google’s hreflang rehberlik belgeler olarak supported. Validate karşı Google’s documented language/region/x-default kurallar specifically, değil generic BCP 47 well-formedness — bir syntactically valid tag -ebilir hâlâ olmak functionally invisible -e Google.

ama burada’s nuance şu cuts karşı naive prioritization: Google silently corrects bazı of bunlar ve değil others. onun dokümantasyon states şu -erseniz kullan codes reserved bençin something else, “Google arama ignores şu part of annotation (örneğin, kullanarak EU, UN, veya UK in hreflang annotations yapmaz sahip bir effect on Google arama).” bu nedenle UK dır effectively dropped (siz iste GB), ama o yapmaz nuke rest of annotation — whereas bir code şu’s basitçe yanlış (jp bençin ja) yapar break şu pair. bir denetim gerektirir -e distinguish “technically wrong but Google handles it” -den “wrong and actually breaks the pair,” çünkü onlar yapmayın al aynı urgency.

3. Non-canonical URLs in hreflang — invisible bir

bu pattern şu görünür fine in bir tag export ve breaks anyway. bir key distinction ben drew at Pubcon 2019: hreflang dır hakkında dizine eklenmiş sürüm, değil canonical. eğer sizin hreflang benşaret eder -e bir URL şu’s canonicalized away -den ne’s aslında dizine eklenmiş, sinyal chain breaks hatta gerçben tag itself dır “valid.” bu yalnızca surfaces -dığınızda cross-reference tarama export karşı dizine ekleme status — en çok hreflang tutorials skip o çünkü onlar ele al hreflang olarak bir isolated tag kontrol et yerine part of dizine ekleme pipeline. (daha on verifying bu in adım 5.)

orada’s bir aynı-language alignment kontrol et worth adding burada de. ne zaman several yakın kopya URLs -ebilirdi plausibly sun olarak canonical bençin bir locale, Google’ın kendi canonical’laştırma rehberlik favors bir aynı-language (veya en iyi-substitute) URL, ve verir bazı preference -e bir sayfa şu’s part of bir complete reciprocal hreflang küme üzerinde bir şu değildir. şu’s bir neden -e koru hreflang targets pointed at aynı-language canonical candidates yerine letting them drift üzerine bir farklı-language yinelenen. None of bu something bir crawler veya checker -ebilir prove outright, gerçben — o -ebilir göster siz configured sinyaller (canonical tags, hreflang edges, küme membership), değil Google’s gerçek final selection. ele al tarama output olarak diagnostic evidence, değil confirmation.

Evidence for this claim Audit canonical targets for same-language or best-substitute alignment and compare reciprocal hreflang-cluster membership, because Google documents a cluster preference among otherwise similar URLs. Scope: localized HTML pages, HTTP headers, XML sitemaps and search systems as applicable Confidence: high · Verified: How to specify a canonical URL with rel=canonical and other methods

4. Mixed absolute/relative URLs — templating bug

Google dır explicit: “Alternate URLs -meli olmak fully-qualified, dahil transport yöntem (http/https), bu nedenle: https://example.com/foo, değil //example.com/foo veya /foo.” ölçekte bu almost never bir bir-off typo — o’s bir templating bug şu hits thousands of URLs at once çünkü hreflang block dır generated -den bir partial URL pattern. şu’s neden crawlers flag o olarak bir systemic sorun: bul bir, ve siz’ve genellikle found bir whole template’s worth.

adım 4 — Prioritize: döndür tags ilk, codes sonraki, x-default son

tek en çok önemli idea in bu whole article: error severity değildir proportional -e error frequency. Sort sizin findings tarafından damage, değil tarafından nasıl çok söyleıda rows araç returned.

TierError patternneden burada
1 — düzelt ilkMissing döndür tags; inconsistent döndür-bağlantı codesBreaks entire pair’s sinyal per Google’s docs. Highest damage.
2 — düzelt sonrakiyanlış codes şu Google yapmaz silently düzelt (jpja); non-canonical / broken targetsBreaks individual relationships; bazı dır silently ele alınır, bazı değildir — triage accordingly.
3 — batchMixed absolute/relative URLs, missing self-referencegerçek hygiene sorunlar, genellikle template-wide, ama değil her zaman küme-breaking.
4 — sonMissing x-defaulten çok yaygın, least damaging.

neden x-default goes son despite olma everywhere: o’s tek en çok yaygın bulma in her study — 56,3% in benim 374 756-domain study, ve 47,95% in Dan Taylor’s independent 18 786-domain SALT.agency study (two studies, çok farklı scales, aynı headline: en çok siteler dır missing o). ama olarak ben wrote in study: “ayarlama bir x-default değildir required. ama o dır recommended -erseniz ihtiyaç duy bir fallback sayfa bençin kullanıcılar whose language settings yapmayın match herhangi bir of sizin localized sürümler.” Google’ın kendi ekip treats o olarak bir UX fallback, değil bir dizine ekleme-critical sinyal — on arama Off Record, Illyes described x-default olarak annotating bir fallback sayfa bençin ne zaman orada’s no matching language bençin bir kullanıcı, ve noted o -ebilir hatta olmak başka bir language sayfa yerine bir dedicated selector. düzelt o, ama düzelt o sonra things şu aslında break kümeler.

Self-reference sits in tier 3 bençin aynı neden: hatta Illyes, kim worked on Google’s hreflang implementation, said on record he yapmaz fully remember neden self-reference dır required ve dır fairly sure kümeler -irdi çalışır olmadan o — he framed o mainly olarak making kümeler easier -e ayarla up çünkü -ebilirsiniz kopya/paste aynı block everywhere. o’s implementation hygiene, değil bir functional requirement.

bençin broader impact × effort matrix şu spans tümü six international denetim areas (değil sadece hreflang), kullan Frameworks lens in International SEO denetim yerine rebuilding o burada.

adım 5 — Re-verify karşı dizine eklenmiş URL, değil tarama

sizin tarama validates tags. o yapmaz validate şu URL tag benşaret eder -e dır bir Google aslında dizine eklenmiş. çünkü hreflang follows dizine eklenmiş sürüm (adım 3, pattern 3), bir tag şu benşaret eder at bir URL şu’s olmuş canonicalized away — veya şu yönlendirmeler, veya dır noindexed downstream — hâlâ breaks sinyal hatta sonra sizin bulk düzelt geç raporlar “clean.”

bu nedenle sonra düzeltmeler ship, spot-kontrol et highest-değer kümeler ile URL Inspection in arama Console: yapğrula URL Google raporlar olarak dizine eklenmiş dır aynı URL sizin hreflang references. bu adım şu catches canonical-chain drift, bu da invisible in bir plain hreflang-tag export. siz yapmayın yap o bençin her URL — siz yap o bençin sizin money sayfalar in her market, sonra tarama söyler siz’re done.

bir bir-line note on Bing

yapmayın expect Bing Webmaster araçlar -e validate herhangi bir of bu. Bing treats hreflang olarak bir much weaker sinyal -den Google yapar ve removed onun Geo Targeting feature back in 2020 — o leans on bençerik-Language header instead. bir hreflang-at-scale denetim dır fundamentally bir Google-facing exercise; kontrol et bençerik-Language bençin Bing separately (covered in International SEO denetim).

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.