Cách Audit Hreflang tại Quy mô

MỘT repeatable, tool-driven xử lý cho auditing hreflang trên một lớn site — pulling mỗi chú thích từ all three implementation các phương thức, reading cluster graphs và reciprocal matrices, và prioritizing các cách sửa by damage, không frequency.

Xuất bản lần đầu: 2 thg 7, 2026 · Cập nhật lần cuối: 8 thg 8, 2026 · Advanced
Ngôn ngữ
1 tín hiệu bằng chứng trên trang này

Auditing hreflang tại quy mô là một graph-validation vấn đề, không một tag-validation vấn đề: bạn kiểm tra xem mỗi trang trong một cluster points lại để mỗi other trang, không liệu một trang có một tag. Pull mỗi chú thích từ all three implementation locations (HTML head, HTTP các header, XML sitemap) với một crawler — Google cho bạn không validator và GSC International Targeting báo cáo đã là đã xóa Sept 22, 2022 — thì xây dựng đó reciprocal-tag matrix. Spot-kiểm tra một cluster visually với my free returntag graph và matrix, hoặc dùng Ahrefs Site Audit và Screaming Frog cho đầy đủ-site coverage. Triage by damage: bị thiếu trả về tags đầu tiên (they break đó toàn bộ pair), thì sai language/region codes và non-canonical targets, thì bị thiếu x-default cuối cùng (hầu hết phổ biến tại 56,3%, least harmful). Trong my Brighton SEO 2023 nghiên cứu of 374 756 domains, over 67% dùng hreflang đã có ít nhất một lỗi.

Tóm tắt — scaled hreflang audit là graph validation, không tag validation. Step 1: pull mỗi chú thích từ all three legal locations (HTML head, HTTP Link các header, XML sitemap) với crawler configured cho của bạn ccTLD/subdomain setup — GSC có thể’t làm điều này (International Targeting đã xóa Sept 22, 2022, và ngay cả trước khi đó nó chỉ reported canonical member của cluster). Step 2: xây dựng reciprocal-tag matrix — mỗi URL trong cluster × mỗi khác, làm →B exist, làm B→. đọc nó trong my returntag cluster graph/matrix cho focused kiểm tra, hoặc sử dụng Ahrefs và Screaming Frog cho trang web-wide crawling. Step 3: classify vào four patterns — bị thiếu trả về tags, sai codes, non-canonical targets, mixed absolute/relative các URL. Step 4: prioritize by damage, không frequency — trả về tags đầu tiên (họ break toàn bộ pair), sau đó codes, sau đó x-default cuối cùng (phần lớn phổ biến tại 56,3%, least harmful). Step 5: re-verify so với được lập chỉ mục URL, không declared canonical.

điều này bài viết là hreflang-cụ thể companion để my rộng hơn SEO quốc tế Audit, mà xử lý hreflang as một của six audit areas. Ở đây I’m going một cấp độ deeper on hreflang-chỉ methodology tại quy mô. cho fundamentals — Điều gì hreflang là, three ways để implement nó, reciprocal rule — see Hreflang hub và, cho 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

cốt lõi reframe: Đây là graph vấn đề

Ở đây đó mental shift đó làm scaled auditing tractable. Bạn là không kiểm tra “does this page have a hreflang tag.” (bản dịch) «làm này trang có một hreflang tag.» bạn là kiểm tra “does every page in this page’s cluster point back to it, and does every URL in the cluster resolve to a 200, canonical, indexable page.” (bản dịch) «làm mỗi trang trong này trang cluster point lại để điều này, và làm mỗi URL trong đó cluster resolve để một 200, canonical, indexable trang.»

Google own tài liệu là reason:

“If page X links to page Y, page Y must link back to page X. If this is not the case for all pages that use hreflang annotations, those annotations may be ignored or not interpreted correctly.” (bản dịch) «Nếu trang X liên kết đến trang Y, trang Y phải liên kết lại đến trang X. Nếu điều này không đúng với mọi trang sử dụng hreflang các chú thích, các chú thích đó có thể bị bỏ qua hoặc được diễn giải không chính xác.»

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

đọc đó cẩn thận. Một bị thiếu trả về link có thể nguyên nhân affected các chú thích để là đã bỏ qua hoặc interpreted incorrectly. Đó là lý làm single-trang view là structurally incapable của auditing hreflang: thất bại lives trong mối quan hệ giữa các trang, không on bất kỳ một trang. bạn cần crawl đó records mỗi cluster member và cross-references them.

Phạm vi matters ở đây cũng: đã bỏ qua các chú thích là ones trong hỏng pair, không tự động mỗi mối quan hệ trong lớn hơn cluster. five-trang cluster với một bị thiếu trả về typically giữ processing của nó khác hoàn tất pairs thông thường — đó chính xác Điều gì my returntag screenshot dưới hiển thị: nine reciprocal pairs intact, một bị thiếu trả về flagged. không assume một hỏng edge nukes toàn bộ cluster; go kiểm tra mỗi pair, vì tool có để kiểm tra mỗi pair để tell bạn đó.

và nó nhận harder as trang web grows — mà là chính xác Google own lời giải thích cho Vì sao big các trang là ones với các lỗi. On Tìm kiếm Off Record, Gary Illyes described các lỗi as emerging Khi trang web có nhiều properties, mỗi với của nó own URL structure — as soon as bạn có để vary pattern trên properties, đó nơi các lỗi come trong, với Lizzi Sassman thêm đó nó harder để sync them lên Khi bạn’re localizing các URL và sau đó đang làm typos. đó signature của enterprise setup: multiple ccTLDs, mỗi on slightly khác xuất bản convention. So good audit segments findings by thuộc tính/domain group, vì đó nơi các lỗi thực ra cluster operationally.

Step 1 — Pull mỗi hreflang chú thích trang web-wide

three places hreflang lives

Google accepts hreflang trong three tương đương locations, và bạn phải kiểm tra all 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 trong <head> — phổ biến case.
  2. HTTP Link: phản hồi các header — được sử dụng cho non-HTML files như PDFs.
  3. xhtml:link entries trong XML sitemap — phổ biến tại quy mô vì nó centralizes các chú thích trong một file thay vì templating them onto mỗi trang.

crawler đó chỉ đọc HTML head sẽ silently miss header- hoặc sitemap-declared alternates. nó sẽ không flag them as hỏng — nó chỉ sẽ không see them, mà là tệ hơn, vì bạn’ll think trang có không hreflang Khi nó thực ra có đầy đủ đặt delivered qua sitemap. Configure crawl để đọc all three trước khi bạn trust single number.

Configuring crawler cho của bạn structure

  • Screaming Frog: enable Configuration > Spider > Crawl Hreflang (điều này cũng picks lên sitemap và header hreflang Khi bạn point nó tại them). cho ccTLDs/subdomains đó reference mỗi khác, thêm sibling domains dưới Config > CDNs — nếu không cross-domain hreflang links là đơn giản không validated, không flagged as hỏng. Đây là single phần lớn phổ biến blind spot tại quy mô, vì enterprise các trang là ones phần lớn có khả năng để sử dụng ccTLDs, và ccTLDs là chính xác Điều gì cần điều này extra step.
  • Ahrefs trang web Audit: hãy đảm bảo sibling domains là bên trong project phạm vi cho giống nhau reason. sau đó sử dụng trang Explorer để filter các trang by hreflang vấn đề loại tại quy mô trước khi bạn drill vào riêng lẻ cluster graphs.

Vì sao GSC có thể’t làm điều này cho bạn

Hai reasons, và thứ hai là một phần lớn mọi người miss:

  1. Đó báo cáo là đã biến mất. Đó GSC International Targeting báo cáo — mà được dùng để flag some hreflang các vấn đề — đã là deprecated và đã xóa (announced August 2022; đã xóa sau September 22, 2022). Không có gì replaced điều này trực tiếp.
  2. Ngay cả khi điều này existed, điều này chỉ bao giờ showed đó canonical. On Tìm kiếm Off đó Record, Illyes explained đó Search Console chỉ các báo cáo on canonicals — cho hầu hết similar-language hreflang clusters, đó alternates không canonical, so bạn đã là effectively blind để điều gì đã là happening on đó non-canonical members of một cluster, vì Google stores them trong đó duplicate cluster không có giữ đó alternate details. đó là một structural reason GSC đã là không bao giờ một hoàn tất hreflang audit tool, không chỉ “the report got removed.” (bản dịch) «đó báo cáo đã nhận đã xóa.» đây là đó trực tiếp justification cho going crawler-đầu tiên.

Google cũng chỉ không ship validator. On giống nhau podcast, Illyes đã nói Google có không bao giờ provided hreflang validator — họ có some underused reporting và sau đó đã xóa nó — và hiện tại points mọi người để external tools như Aleyda Solis’ tool, Bill Hunt hreflang checker, và Merkle tool. Take đó as permission để lean on thứ ba-party các crawler cho job GSC có thể’t làm — nhưng không as endorsement. Google own tài liệu là rõ ràng đó nó không maintain hoặc kiểm tra thứ ba-party hreflang gỡ lỗi tools, so treat bất kỳ tool output, mine được bao gồm, as diagnostic evidence bạn vẫn có để reason về, không chính thức verdict. Khi finding thực ra matters, xác nhận nó so với thô artifact — HTTP phản hồi, sitemap XML, hoặc được kết xuất HTML — thay vì stopping tại tool parsed summary.

Step 2 — Xây dựng reciprocal-tag matrix

Normalize Điều gì bạn pulled

trước khi bạn xây dựng matrix, nhận mọi thứ vào một consistent shape. cho mỗi declared hreflang mối quan hệ, record nguồn URL, đích URL, locale giá trị, nguồn phương thức (HTML head, HTTP header, hoặc sitemap), và — critically — đích mã trạng thái, chuyển hướng chain, indexability, canonical đích, và liệu crawl saw nó trong thô HTML hoặc được kết xuất DOM. khác các crawler export điều này differently; normalizing nó vào directed URL-để-URL edges với đó context attached là Điều gì làm matrix, và mỗi classification trong Step 3, reliable thay vì pile của disconnected các hàng.

Điều gì matrix represents

Conceptually, cho mỗi cluster bạn xây dựng bảng nơi các hàng và các cột là mỗi URL trong đó cluster, và mỗi cell các câu trả lời có/không câu hỏi: làm hreflang link exist từ hàng URL để cột URL? đúng cluster là symmetric — nếu →B là present, B→ là present. mỗi asymmetric cell ( link đó tồn tại trong một direction chỉ) là bị thiếu trả về tag.

Bạn không theo nghĩa đen hand-xây dựng này spreadsheet tại quy mô — đó tools xây dựng điều này cho bạn. Nhưng holding đó matrix trong của bạn head là điều gì cho phép bạn đọc đó tool output correctly. My returntag tool draws đó matrix as một graph và cũng exposes đó underlying cells; Screaming Frog’s “Missing Return Links” (bản dịch) «Bị thiếu Trả về Links» filter pulls đó asymmetric cells vào một list, và Ahrefs Site Audit cung cấp một sản phẩm khác tại-quy mô cluster view. Giống nhau mối quan hệ kiểm tra, khác nhau presentations và crawl scopes.

Reading nó as graph: my returntag cluster validator

cho focused cluster kiểm tra, my free returntag tool renders declared locale relationships as graph và reciprocal matrix. mỗi locale là node, mỗi declared hreflang chú thích là edge, và vấn đề list identifies chính xác URL đó fails để link lại. screenshot dưới là sitemap-chỉ chạy: nó đọc Điều gì sitemap declares và có chủ ý không fetch trang head tags hoặc HTTP Link các header. sử dụng trang URL chế độ Khi bạn cần đầy đủ three-nguồn picture Đối với một trang cluster.

Cách đọc nó:

  • ** sạch cluster** là fully-connected mesh — mỗi node linked để mỗi khác node, cả hai directions.
  • ** một-way edge** là của bạn asymmetric cell: trang X points để Y nhưng Y không point lại. đó trả về-tag lỗi, seen thay vì đọc.
  • ** orphaned node** — URL đó xuất hiện trong cluster nhưng không link lại vào nó — là unlinked hreflang URL.

practical win là triage speed và stakeholder communication: thay vì handing nhà phát triển abstract spreadsheet hàng, bạn hiển thị một-way mối quan hệ và chính xác bị thiếu trả về-tag lỗi together. cho hundreds hoặc thousands của clusters, giữ Ahrefs trang web Audit hoặc Screaming Frog trong workflow cho hoàn tất crawl coverage; returntag là fast way để inspect và giải thích cụ thể cluster.

Reading nó as spreadsheet: Screaming Frog filters

nếu bạn’re trong Screaming Frog, matrix surfaces as đặt của filters (sau khi bạn chạy Crawl Analysis post-crawl để populate trả về-link dữ liệu). Hoạt động them trong khoảng điều này order, vì nó maps để priority order trong Step 4:

  • Bị thiếu trả về Links — asymmetric cells; của bạn highest-priority findings.
  • Inconsistent Language & Region trả về Links — trả về link tồn tại nhưng với khác code hơn outbound một ( nói B là fr-FR, B nói là en-GB Khi là thực sự en-US) — subtler pair-breaker.
  • Non-Canonical trả về Links — trả về link points tại URL đó canonicalized elsewhere, so tín hiệu chain breaks mặc dù tag tồn tại.
  • Noindex trả về Links — trả về đích là noindexed, so nó có thể’t carry chú thích.
  • Non-200 Hreflang các URL — đích là chuyển hướng hoặc trang lỗi.
  • Unlinked Hreflang các URLkhông đúng Language & Region Codes — orphaned nodes và code-validation các lỗi.

Export toàn bộ đặt qua Các báo cáo > Hreflang. (cho đầy đủ filter-by-filter walkthrough tại summary cấp độ, Screaming Frog hreflang tutorial là excellent — I’m không going để re-loại của họ config steps ở đây.)

Step 3 — Classify Điều gì bạn tìm vào four lỗi patterns

của bạn crawl output sẽ là noisy. Loại mỗi finding vào một của four buckets — những điều này là patterns đó repeat trên 374 756-domain nghiên cứu. (I’m pulling chỉ hai figures đó anchor priority argument; đầy đủ nine-loại lỗi bảng là đã trong SEO quốc tế Audit bài viết — không point re-pasting nó.)

1. Bị thiếu trả về tags — pair-breaker

Đó asymmetric cells từ của bạn matrix. 15,3% of hreflang-dùng domains có những. As I put điều này trong đó nghiên cứu writeup: “As I mentioned, hreflang tags work in pairs. If both pages don’t reference each other, they can’t establish the connection and swap properly in the search results.” (bản dịch) «Như tôi đã đề cập, các thẻ hreflang hoạt động theo cặp. Nếu hai trang không tham chiếu lẫn nhau, chúng không thể thiết lập mối liên hệ và chuyển đổi đúng cách trong kết quả tìm kiếm.» Này là đó category đó invalidates đó toàn bộ pair tín hiệu theo Google tài liệu, mà là vì sao đây là đầu tiên trong đó priority order — ngay cả though đây là không đó hầu hết phổ biến lỗi.

2. sai language/region codes — âm thầm-forgiving một

Dùng ISO 639-1 cho language và ISO 3166-1 alpha-2 cho region. Đó classic breakers: jp thay vì ja cho Japanese, đó typo js cho ja, three-letter codes như gbr thay vì gb, la (Laos) misused cho “Latin America.” (bản dịch) «Mỹ Latinh.»

Một nhiều hơn phân biệt worth building vào của bạn audit: BCP 47 ( underlying language-tag spec) permits nhiều rộng hơn đặt của các giá trị hơn Google hreflang implementation thực ra acts on — script subtags và khác BCP 47-legal constructs đó Google own hreflang tài liệu không xác nhận as recognized các giá trị. code có thể là perfectly well-formed BCP 47 và vẫn không là điều gì đó Google hreflang hướng dẫn documents as supported. Validate so với Google được ghi lại language/region/x-default rules cụ thể, không generic BCP 47 well-formedness — syntactically hợp lệ tag có thể vẫn là functionally invisible để Google.

Nhưng ở đây đó nuance đó cuts so với naive prioritization: Google silently corrects some of những và không others. Của nó tài liệu trạng thái đó nếu bạn dùng codes reserved cho điều gì đó khác, “Google Search ignores that part of the annotation (for example, using EU, UN, or UK in hreflang annotations doesn’t have an effect on Google Search).” (bản dịch) «Google Search bỏ qua đó part of đó chú thích (ví dụ, dùng EU, UN, hoặc UK trong hreflang các chú thích không có an effect on Google Search).» So UK là effectively dropped (bạn muốn GB), nhưng điều này không nuke đó rest of đó chú thích — whereas một code đó là đơn giản sai (jp cho ja) làm break đó pair. An audit cần để distinguish “technically wrong but Google handles it” (bản dịch) «technically sai nhưng Google xử lý điều này» từ “wrong and actually breaks the pair,” (bản dịch) «sai và thực ra breaks đó pair,» vì they không nhận đó giống nhau urgency.

3. Non-canonical các URL trong hreflang — invisible một

Đây là pattern đó looks fine trong tag export và breaks anyway. mấu chốt phân biệt I drew tại Pubcon 2019: hreflang là về được lập chỉ mục version, không canonical. nếu của bạn hreflang points để URL đó canonicalized away từ Điều gì thực ra được lập chỉ mục, tín hiệu chain breaks mặc dù tag itself là “hợp lệ.” điều này chỉ surfaces Khi bạn cross-reference crawl export so với lập chỉ mục status — phần lớn hreflang tutorials skip nó vì họ treat hreflang as isolated tag kiểm tra thay vì part của lập chỉ mục pipeline. (nhiều hơn on verifying điều này trong Step 5.)

có giống nhau-language alignment kiểm tra worth thêm ở đây cũng. Khi several near-duplicate các URL có thể plausibly phục vụ as canonical cho locale, Google own canonicalization hướng dẫn favors giống nhau-language (hoặc best-substitute) URL, và cho some preference để trang đó part của hoàn tất reciprocal hreflang cluster over một đó không phải. đó reason để giữ hreflang targets pointed tại giống nhau-language canonical candidates thay vì letting them drift onto khác-language duplicate. None của Đây là điều gì đó crawler hoặc checker có thể prove outright, though — nó có thể hiển thị bạn configured các tín hiệu (canonical tags, hreflang edges, cluster membership), không Google thực tế cuối selection. Treat crawl output as diagnostic evidence, không xác nhận.

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 các URL — templating bug

Google là rõ ràng: “Alternate URLs must be fully-qualified, including the transport method (http/https), so: https://example.com/foo, not //example.com/foo or /foo.” (bản dịch) «Alternate URLs phải được fully-qualified, including đó transport phương thức (http/https), so: https://example.com/foo, không //example.com/foo hoặc /foo. » Tại quy mô này là gần như không bao giờ một một-off typo — đây là một templating bug đó hits thousands of URLs tại khi vì đó hreflang block là generated từ một phần URL pattern. đó là vì sao các crawler flag điều này as một systemic vấn đề: tìm một, và bạn đã thường được tìm thấy một toàn bộ template worth.

Step 4 — Prioritize: trả về tags đầu tiên, codes tiếp theo, x-default cuối cùng

single phần lớn quan trọng ý tưởng trong điều này toàn bộ bài viết: lỗi severity không phải proportional để lỗi frequency. Loại của bạn findings by damage, không by Cách nhiều các hàng tool được trả về.

Tierlỗi patternVì sao ở đây
1 — khắc phục đầu tiênBị thiếu trả về tags; inconsistent trả về-link codesBreaks đểàn bộ pair tín hiệu theo tài liệu củ Google. Highest damage.
2 — khắc phục tiếp theosai codes đó Google không silently khắc phục (jpja); non-canonical / hỏng targetsBreaks riêng lẻ relationships; some là silently handled, some không phải — triage accordingly.
3 — batchMixed absolute/relative các URL, bị thiếu self-referencethực hygiene các vấn đề, thường template-wide, nhưng không luôn cluster-breaking.
4 — cuối cùngBị thiếu x-defaultphần lớn phổ biến, least damaging.

Vì sao x-default goes cuối cùng despite đang mọi nơi: đây là đó single hầu hết phổ biến finding trong mỗi nghiên cứu — 56,3% trong my 374 756-domain nghiên cứu, và 47,95% trong Dan Taylor independent 18 786-domain SALT.agency nghiên cứu (hai studies, very khác nhau scales, giống nhau headline: hầu hết các trang là bị thiếu điều này). Nhưng as I wrote trong đó nghiên cứu: “Setting an x-default is not required. But it is recommended if you need a fallback page for users whose language settings don’t match any of your localized versions.” (bản dịch) «Thiết lập x-default không bắt buộc. Tuy nhiên, bạn nên thiết lập nếu cần một trang dự phòng cho người dùng có cài đặt ngôn ngữ không khớp với bất kỳ phiên bản địa hóa nào của bạn.» Google own team xử lý điều này as một UX fallback, không an lập chỉ mục-cốt yếu tín hiệu — on Tìm kiếm Off đó Record, Illyes described x-default as annotating một fallback trang cho khi có không matching language cho một người dùng, và noted điều này có thể ngay cả là một sản phẩm khác language trang thay vì một dedicated selector. Cách sửa điều này, nhưng cách sửa điều này sau đó điều đó thực ra break clusters.

Self-reference sits trong tier 3 cho giống nhau reason: ngay cả Illyes, ai worked on Google hreflang implementation, đã nói on record he không fully remember Vì sao self-reference là bắt buộc và là fairly sure clusters sẽ hoạt động không có nó — he được diễn đạt nó mainly as đang làm clusters easier để thiết lập vì Bạn có thể copy/paste giống nhau block mọi nơi. nó implementation hygiene, không functional requirement.

cho rộng hơn impact × effort matrix đó spans all six international audit areas (không chỉ hreflang), sử dụng Các framework lens trong SEO quốc tế Audit thay vì rebuilding nó ở đây.

Step 5 — Re-verify so với được lập chỉ mục URL, không crawl

của bạn crawl validates tags. nó không validate đó URL tag points để là một Google thực ra được lập chỉ mục. vì hreflang follows được lập chỉ mục version (Step 3, pattern 3), tag đó points tại URL đó là canonicalized away — hoặc đó các chuyển hướng, hoặc là noindexed downstream — vẫn breaks tín hiệu ngay cả sau khi của bạn bulk khắc phục truyền các báo cáo “sạch.”

So sau khi các cách sửa ship, spot-kiểm tra highest-giá trị clusters với URL Inspection trong Search Console: xác nhận URL Google các báo cáo as được lập chỉ mục là giống nhau URL của bạn hreflang references. Đây là step đó catches canonical-chain drift, mà là invisible trong đơn giản hreflang-tag export. bạn không làm nó cho mỗi URL — bạn làm nó cho của bạn money các trang trong mỗi market, sau khi crawl nói bạn’re đã xong.

một-line note on Bing

không expect Bing Quản trị viên web Tools để validate bất kỳ của điều này. Bing xử lý hreflang as nhiều weaker tín hiệu hơn Google làm và đã xóa của nó Geo Targeting feature lại trong 2020 — nó leans on nội dung-Language header thay vì. hreflang-tại-quy mô audit là fundamentally Google-facing exercise; kiểm tra nội dung-Language cho Bing riêng (covered trong SEO quốc tế Audit).

Add an expert note

Pin an expert quote

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