SEO & Search
Internationalization
Hreflang Is Probably Broken on Your Site: Notes from International SEO Audits
The thesis of this post: fully valid hreflang is rare enough in the wild that finding it is an event, on any category of site, on any platform.
The annotation Google introduced in late 2011 tells search engines which language and regional version of a page to serve to which searchers. Most international sites now attempt it. Almost none complete it correctly.
The gap matters in the most literal way international marketing can. Done right, your French Canadian prospect lands on Canadian French content with Canadian details. Done wrong, the engine guesses, and your German-market buyer reads U.S. pricing while your carefully localized German pages sit unindexed for German searchers.
Small tag, real revenue and trust consequences, and error patterns consistent enough in the wild to write up as a checklist. Here they are, with the platform notes and the honest recommendation. This is a day of specialist work, and it is worth commissioning.
How the annotation works, and where it breaks
The mechanics in one paragraph. Each page in a multilingual set carries annotations, in the page head or, often better at scale, in the XML sitemap. They list every language and regional alternate of the page, including itself, using standard language and country codes. The engine reads the set and serves each searcher the right version.
The design’s crucial property, and the source of most failures, is reciprocity: the annotations must agree in both directions. If the English page claims the French page as its alternate, the French page must claim the English page back. Absent the return annotation, the engine treats the claim as unverified and ignores the set. Silently.
Silently is the operative word throughout this topic. Broken hreflang produces no error message, no warning, no visible symptom on the site itself. It simply fails to work. The failure surfaces only in the analytics patterns nobody connects, French organic traffic landing on English pages, or in an audit that checks the annotations directly. ‘Installed the plugin’ and ‘working correctly’ are usually different states.
The error patterns, ranked by frequency
Missing return links. The reciprocity failure above, and the champion by a wide margin. The main-language template annotates its alternates. The alternate templates never got the matching treatment. Different build phase, different vendor, different year. The whole set is invisible. The fix is mechanical once found. The finding requires actually checking both directions, which is the audit’s core loop.
Language-region codes inverted or invented. The syntax expects language first, region second, from the standard code lists. The wild reads like a bloopers reel. Region-language reversals. Invented codes: ‘en-UK’ for the correct ‘en-GB’ is this year’s most popular. Language codes doing region work. Each malformed code voids its annotation.
x-default absent. The annotation Google added in 2013 for the version searchers get when no alternate matches. Typically your language-selector or primary page. Its absence is not fatal, but its presence resolves the unmatched-visitor case deliberately rather than by engine guesswork. Global sites should treat it as required.
Parallel implementations disagreeing. The plugin writes head annotations. Someone also generates sitemap annotations. The two drift after a restructure, and the engine reads conflicting instructions. One implementation path, chosen deliberately, documented, is the rule. At content-site scale, our lean is the sitemap. Centralized, auditable, and free of per-template weight.
Canonical fighting hreflang. The alternates should each canonicalize to themselves. Sets where every language canonicalizes to the English page, a migration leftover we keep meeting, instruct the engine to consolidate away the very alternates hreflang is advertising. The two annotations must agree about what exists.
The scoping questions before any annotation exists
A step upstream of the audit deserves its own section, because a fair share of broken hreflang starts as confused scoping. The annotation answers a precise question, which URL serves which language-region audience, and inherits every ambiguity in your site’s actual international architecture.
The scoping questions to settle first, ideally in the planning documents our multilingual-architecture rules prescribes. Are you targeting languages? Spanish, wherever spoken. Regions? Canada, in both its languages. Or the combination? And does your URL structure actually express the choice you made?
Does the same-language, different-region case apply to you? The en-US and en-GB split matters where pricing, spelling, or offerings genuinely differ, and wastes effort where they do not.
And which pages participate at all? Hreflang belongs on the translated sets, not sprayed sitewide across pages with no alternates. Our audits meet that spraying regularly, and engines politely ignore it.
Institutions whose honest answer is ‘we have English plus a partial Spanish core’ need a small, correct setup on the core, not an elaborate matrix. The deliberate-scope advice from the architecture series applies at the annotation layer too. Small-and-valid beats big-and-broken in every case the files contain. Settle the scope. Annotate the scope. Audit both directions. In that order, the tag behaves.
Platform notes, and the audit worth a day
For the common stacks. Drupal’s multilingual architecture, core-strong since 7, pairs with contributed handling for hreflang that works well once configured. It misconfigures if language negotiation and URL schemes were set up in unusual ways. Audit after any restructure.
WordPress multilingual sites run on plugin assemblies whose hreflang output quality varies by plugin and by settings. The parallel-implementation error above is disproportionately a WordPress finding. Check what is actually rendering before adding anything.
In both cases the checking loop is the same and tool-assisted. Crawl the set. Extract the annotations. Check codes against the standard lists. Verify both directions agree. Reconcile against canonicals and sitemaps. A practiced auditor completes an institutional site in a day. Google’s Webmaster Tools now surfaces international-targeting errors that make the monitoring ongoing rather than annual.
Against the alternative, localized content silently unserved to the audiences it was built for, the day prices itself. We have argued since 2009 that international work fails on operations rather than translation quality. Hreflang is that argument at the annotation layer. The content exists. The translation was paid for. One missing return link decides whether the right audience ever sees it. Check both directions.