In this article
- 01 Build the equivalence table first
- 02 Inspect the annotations actually delivered
- 03 Check canonical and alternate relationships separately
- 04 Use an expected-versus-actual audit matrix
- 05 Verify language content and the full reader journey
- 06 Frequently asked questions
- 07 Make locale correctness part of every release
- 08 Sources
A hreflang audit checks that equivalent language or regional pages identify one another correctly and remain accessible at the intended URLs. Start with a page-equivalence table, inspect the delivered annotations, verify return links and canonical choices, then check the actual translated content. Valid-looking tags cannot compensate for linking unrelated pages.
This checklist is for teams auditing an already localized business website. If you are still choosing URL structure or translating the first version, begin with our website localization launch checklist. Here, the deliverable is a repeatable expected-versus-actual test for each language set.
- Group equivalent pages before checking tags.
- Test self-references, return links and final destinations.
- Keep canonicalization and language alternatives consistent.
- Verify the content and user journey, not just the markup.
Build the equivalence table first
Export the intended localized URLs from your CMS or content inventory. Assign a stable content key to each group, such as product-overview or installation-guide. The key represents the reader's task, not a translated slug that might change.
Consider this fictional product-page set:
| Content key | Language or region | Expected URL |
|---|---|---|
| product-overview | English, United States | https://example.com/en-us/product |
| product-overview | English, United Kingdom | https://example.com/en-gb/product |
| product-overview | German | https://example.com/de/produkt |
Before adding tags, open all three pages. They should serve equivalent purposes, even if pricing, terminology or examples differ by market. A German homepage is not an appropriate substitute for a missing German product page. If a translation does not exist, omit that nonexistent variant instead of inventing an alternate URL.

Inspect the annotations actually delivered
Google supports language annotations in HTML, HTTP headers or sitemaps. Its localized-version guidance describes equivalent methods, fully qualified URLs, self-references and reciprocal links. Choose a maintainable implementation; multiple methods do not create an extra search benefit.
For the fictional set, the following HTML alternate block belongs in the head of each of the three pages. All destinations are illustrative and must be replaced with real URLs.
<link rel="alternate" hreflang="en-US"
href="https://example.com/en-us/product">
<link rel="alternate" hreflang="en-GB"
href="https://example.com/en-gb/product">
<link rel="alternate" hreflang="de"
href="https://example.com/de/produkt">
Use en-GB, not en-UK, for that regional target. Use a language-only value when the page is intended for speakers of that language generally. Add x-default only when you have an intentional fallback, such as a suitable language selector; it is not mandatory decoration.
Compare the live output with the inventory rather than checking only the CMS field. A template bug can render the correct saved configuration incorrectly. If you use HTML annotations, inspect the head. If you use sitemap or HTTP annotations, inspect that actual source as well.
Test both directions
For each pair, record A points to B and B points to A. A one-way link is not a complete relationship. In a three-page set, confirm each page's own entry and the two other entries. If your implementation deliberately covers only some language pairs, record that design explicitly and verify reciprocity for the pairs you expect Google to process.
Do not reduce the test to counting three tags. Three tags can all point to the same URL, use duplicate language values, or name unrelated pages. Compare each language code and destination against the expected table.
Check canonical and alternate relationships separately
The canonical identifies a preferred representative among duplicate or very similar URLs; hreflang describes localized alternatives. They answer different questions. Google's canonicalization guidance explains that a declared canonical is a signal rather than a command.
For the distinct translated pages in this example, expect each page to identify its own intended canonical URL. A German page that unexpectedly canonicalizes to the English page is a conflict to investigate. Do not fix every real site by blindly forcing self-canonicals: same-language regional duplicates and other URL variants may need a considered consolidation strategy.

Follow redirects before recording the destination. A stale alternate that redirects to another locale, a generic homepage or a login screen may look syntactically correct while failing the user. Record the original URL, redirect chain and final page so the owner can fix the underlying mapping.
Also inspect indexing controls. A noindex translation linked as an alternate deserves investigation, and a robots block can prevent a crawler from reading page-level signals. Keep these findings separate: an accessible page, a declared alternate and an indexed page are not interchangeable states.
Use an expected-versus-actual audit matrix
Start with a small sample that includes the homepage, one product page and one article or help page. If they use different templates, test each template. Expand the crawl when the sample finds a systematic problem or before a large localized release.
| Check | Expected in the fictional set | Evidence to save |
|---|---|---|
| Final response | Each intended page responds successfully | Status and final URL |
| Locale map | Correct en-US, en-GB and de destinations | Extracted alternate entries |
| Return links | Each declared pair links both ways | Pair-by-pair comparison |
| Canonical | Matches the chosen URL strategy | Declared and, when available, Google-selected canonical |
| Content | Equivalent task, appropriate language and market | Reviewed headings, body and conversion path |

Keep an issue log with a clear correction:
| Failure | Likely place to inspect | Correction to verify |
|---|---|---|
| German product points to English homepage | Content equivalence mapping | Point to the equivalent product page |
| English page names German; German omits English | Template or stale locale collection | Restore the intended reciprocal relationship |
| All locale pages use an English canonical | Shared SEO template default | Implement the approved canonical strategy |
| Correct tags, mostly untranslated body | Translation and editorial pipeline | Complete and review the main content |
| Alternate points to a redirected old slug | Old CMS references | Use the stable intended destination |
These are diagnostic examples, not claims about defects on PolyDraft's current site. Save both the failed output and the corrected output when investigating your own implementation. A later template update can otherwise reintroduce a problem without anyone noticing.
Verify language content and the full reader journey
Read the translated page as a visitor. Check the title, headings, body, navigation, image descriptions, form labels and confirmation message. Verify that the call to action leads to a usable destination for that language or clearly explains any limitation. A polished product page followed by an untranslated broken form is an incomplete localization.
Google's multiregional and multilingual site guidance recommends separate URLs and addresses language-routing considerations. Avoid relying exclusively on an IP or browser-language redirect that prevents users or crawlers from reaching a specific version. Provide a usable language switcher.
- Save the intended locale set and previous configuration.
- Apply the mapping or template correction.
- Fetch every affected page and annotation source again.
- Repeat canonical, reciprocal-link and content checks.
- Verify language navigation and the conversion path.
- Use Search Console URL Inspection for selected important URLs and record indexing evidence separately.
The URL Inspection tool can help examine a URL's search status. It is not a complete replacement for the locale matrix, and a live test does not guarantee which regional page Google will serve for every search. Monitor relevant country and page data over time without treating a technical fix as an immediate ranking promise.
Frequently asked questions
Do I need hreflang on a single-language website?
Usually the relevant task begins when you have language or regional alternatives to identify. Do not add nonexistent versions to satisfy a tool's checklist. First decide whether the website actually offers equivalent pages for different audiences and whether those pages are maintained.
Does hreflang translate the page?
No. It describes relationships between versions. The body and user journey still need appropriate localization. Marking an English page as German does not make it German, and the annotation should not be used to conceal unfinished translations.
Should every translation point its canonical to English?
No blanket rule fits every site. For distinct translated pages, that would commonly conflict with the intended localized URL strategy. Review duplicate and regional cases separately, then verify that canonical and alternate signals express the same design.
Make locale correctness part of every release
Keep the equivalence table with your content inventory and rerun the affected checks whenever a page is added, removed or renamed. See PolyDraft's website localization overview for the broader workflow. A useful hreflang audit ends with evidence for each relationship, not simply a count of tags.
About this article: Prepared with AI assistance for PolyDraft. Technical statements are linked to primary documentation checked on October 8, 2026. Worked examples and diagrams are illustrative, not customer results or live-site audit evidence. The hero is an AI-generated editorial illustration. For corrections, contact PolyDraft with the page URL and supporting source.