Hreflang Tags SEO Audit Guide: Fix International Targeting Without Chaos
Hreflang tags are supposed to solve a simple problem: show the right language or regional version of a page to the right searcher. In practice, they become one of the messiest parts of technical SEO because every page must agree with every other page. One broken return tag, one wrong canonical, one missing locale, or one stale sitemap can make a clean international setup look unreliable.
The good news is that hreflang audits do not need to be mysterious. You are checking whether each localized URL is indexable, whether equivalent pages reference each other correctly, whether canonicals support the localized version, and whether the implementation stays consistent across HTML, XML sitemaps, and HTTP headers. If those signals line up, search engines have a much easier time choosing the right result for each user.
This guide walks through a practical hreflang audit process for multilingual and multi-region sites. It is written for real sites with messy CMS rules, migrations, staging leftovers, country selectors, and pages that do not exist in every language.
Start with the market and language map
Before crawling tags, document the versions that should exist. List every market, language, country target, domain or subfolder, default language, and expected URL pattern. For example, a site may use example.com/en-us/, example.com/en-gb/, example.com/fr-fr/, and example.com/fr-ca/. Another site may use separate country domains or subdomains.
This map matters because hreflang is not just a tag validation exercise. A crawler can tell you that a page references fr-ca, but it cannot tell you whether the business actually serves Canada in French. The audit needs a source of truth so you can identify missing alternates, accidental targets, and old regions that should no longer be advertised to search engines.
Use the right syntax for each target. Language codes use ISO 639-1, such as en, fr, de, or es. Region codes use ISO 3166-1 alpha-2, such as US, GB, CA, or AU. The format is language first, then optional region, like en-us or fr-ca. Do not use country by itself, and do not invent codes for markets that do not match the standard.
Crawl the site and export every hreflang signal
Run a crawl that captures hreflang annotations, canonical tags, status codes, indexability, internal links, and sitemap membership. If the site uses XML sitemap hreflang, crawl the sitemaps too. If PDFs or non-HTML assets use HTTP header hreflang, capture headers for a sample of those files.
For each URL, export the declared alternates, the x-default URL if present, the canonical target, HTTP status, robots directives, final resolved URL after redirects, and whether each alternate URL is also found as a live page. This creates the working table for the audit.
Do not rely only on view source for a few pages. Hreflang mistakes often hide in templates. Product pages may be correct while category pages are broken. Blog posts may reference every locale even when translations do not exist. Paginated pages may point to page one in every language. The crawl should include each important template.
Check reciprocal return tags
Hreflang is reciprocal. If the English US page points to the French Canada page as an alternate, the French Canada page should point back to the English US page and include itself in the same cluster. Missing return tags are one of the most common reasons search engines ignore hreflang annotations.
Group pages into alternate clusters. Each cluster should contain the equivalent page in each language or region, not just a similar page. A US product page should not point to the French homepage just because the French product translation is missing. If no true equivalent exists, it is usually better to omit that alternate than to send users to an irrelevant page.
Self references are expected. Each page in the cluster should list itself and its alternates. This makes the set explicit and reduces ambiguity. If you see one page with five alternates and another page in the same cluster with three, investigate why the cluster is inconsistent.
Make canonical tags and hreflang support each other
Canonical conflicts can break international targeting. A localized page should usually self canonicalize if it is meant to appear in search. If the French page canonicalizes to the English page, search engines may treat the French page as a duplicate rather than a valid alternate.
Review every hreflang URL and confirm that it returns a 200 status, is indexable, and has a canonical that points to itself or to the exact final version of that localized URL. Avoid hreflang references to redirected URLs, noindex pages, blocked URLs, soft 404s, or pages that canonicalize to another language.
This is where many migrations go wrong. The hreflang generator may still print old paths, old domains, mixed protocols, or URLs with trailing slash patterns that redirect. Search engines can sometimes resolve those signals, but the clean audit recommendation is simple: point hreflang directly at final canonical URLs.
Use x-default only when it has a clear job
The x-default hreflang value is for a default or selector page that does not target one specific language or region. Common examples include a global homepage, a country selector, or a fallback English page for users outside supported markets.
Do not add x-default automatically to every cluster without deciding what page should serve as the fallback. If your x-default points to the US page, users outside targeted markets may be sent to the US experience. That might be acceptable, but it should be intentional. If you have a true global page or market selector, that may be a better x-default target.
Also check whether x-default appears consistently in each cluster. If some alternates list it and others do not, the cluster becomes harder to interpret.
Choose one implementation method per page type
Hreflang can be implemented in HTML head tags, XML sitemaps, or HTTP headers. All three can work. The risk comes from using multiple methods that disagree. If HTML says the German page is /de/produkt/ and the sitemap says it is /de/product/, search engines receive conflicting instructions.
For most HTML pages, head tags or XML sitemap annotations are the practical choices. Sitemaps can be easier for very large sites because they keep international relationships in one generated file. HTML tags can be easier to debug page by page. HTTP headers are mainly useful for non-HTML files such as PDFs.
If you use more than one method, audit them against each other. The same cluster should contain the same final URLs, same language codes, and same x-default. If the site cannot keep both methods synchronized, simplify to one reliable source.
Validate sitemaps and internal links
International XML sitemaps should contain only canonical, indexable, final URLs. They should not include staging URLs, noindex translations, redirected alternates, or pages that were removed from a market. If last modified dates are used, they should reflect real content changes, not a daily build timestamp.
Internal links should also support the preferred localized URLs. Language switchers, navigation, breadcrumbs, and body links should point directly to final localized pages. A language selector that sends users through redirect chains or JavaScript-only routing may create a poor experience and weaker crawl signals.
Pay attention to untranslated pages. Some CMS setups create placeholder translations that return 200 with thin or duplicated content. If a page is not actually translated or localized, decide whether it should exist, noindex, redirect to a parent, or be omitted from hreflang clusters until it is ready.
Monitor the right Search Console signals
Google Search Console no longer reports hreflang errors the way older international targeting reports did, so audits need to combine crawl data with performance and indexing checks. Review pages by country, language, query, and landing page. Look for cases where the wrong regional URL ranks for a market, where translated pages are indexed poorly, or where Google chooses a different canonical than expected.
Use URL Inspection on representative pages from each template. Confirm that Google can fetch the page, sees the expected canonical, and indexes the localized URL when appropriate. For large sites, sample by template and locale rather than checking random URLs.
The practical next step
Build a spreadsheet with one row per canonical localized URL and columns for language-region code, canonical target, status code, indexability, hreflang alternates, reciprocal status, x-default, sitemap inclusion, and template type. Sort by errors that affect final URL quality first: redirects, noindex pages, canonical conflicts, missing return tags, and invalid codes.
Hreflang tags do not improve rankings by themselves. Their job is to help search engines serve the correct version of content that already deserves visibility. When every localized page is indexable, self canonical, reciprocally linked, and mapped to the right market, international SEO becomes much less fragile. The best hreflang setup is boring, consistent, and easy to regenerate correctly whenever new pages or markets are added.
Ready to audit your site?
Run a free SEO scan and get actionable recommendations in seconds.
Start Free Scan →