Multilingual WordPress sites lose organic traffic to one wrong hreflang tag more often than to any other technical SEO bug. A single incorrect language code in your site header and Google starts serving your French page to German searchers, your English page to Spanish users, and nobody to anybody consistently.
Hreflang in WordPress isn’t complicated on paper. The tag tells Google which language and regional variant each page targets. In practice, the complexity comes from WordPress’s lack of native hreflang support, inconsistent plugin implementations, and the interaction with canonical tags that bites most site owners after migration. Here’s the setup that survives plugin updates and scales past 3-4 languages.
What Hreflang Tags Actually Do
Hreflang is an HTML attribute that tells search engines which language and optionally which region a page targets. The tag looks like this in a page head:
<link rel="alternate" hreflang="en-us" href="https://example.com/en/page" />
Each language variant of a page declares hreflang tags for every other variant, plus one for itself. A page with English (US), French (France), and German (Germany) versions needs four tags per page: en-us, fr-fr, de-de, and an x-default pointing to the language fallback.
Google uses hreflang signals to pick which version appears for each user based on browser language, IP location, and Google account region settings. Bing uses them the same way. Yandex uses them. Baidu ignores hreflang entirely and relies on separate subdomains.
Hreflang is a directive, not a ranking factor. It doesn’t boost rankings. It routes the correct version of a ranking page to the correct user. Skip hreflang on a multilingual site and all versions compete against each other for the same queries, fragmenting your authority and often showing the wrong language to users.
The tag supports two formats: language-only (en, fr, de) or language-region (en-us, fr-ca, de-ch). Use language-only when content targets speakers anywhere in the world. Use language-region when content differs meaningfully by country (pricing, shipping, legal disclaimers).
The WordPress Hreflang Plugin Landscape in 2026
WordPress doesn’t output hreflang tags natively. Five plugin paths cover 95% of multilingual WordPress sites:
- WPML (paid, $99-199/yr). The market leader. Handles translation workflow plus hreflang output. Adds 80-150ms to page load. Best for full translation projects with professional translators.
- Polylang (free + premium add-ons). Lighter than WPML. Good hreflang output. Free version covers most small multilingual sites. Premium adds WooCommerce and SEO plugin integrations.
- TranslatePress (paid, $99+/yr). Visual translation interface. Solid hreflang implementation. Growing rapidly because of its user experience, though performance is slightly slower than Polylang.
- Weglot (SaaS, $15-699/mo). Hosted translation service. Handles hreflang automatically. Adds DNS-level complexity but zero plugin bloat on the WordPress side. Best for teams that don’t want in-house translation.
- Rank Math Multilingual + manual hreflang (free). Works if you use separate WordPress installs per language. You manage hreflang via the Rank Math multilingual module and confirm output via custom headers.
Plugin choice matters less than consistent implementation. The most common failure is running two plugins that both output hreflang tags. Double tags confuse Google and the site usually deindexes some language versions silently. Pick one plugin, turn off hreflang output in every other plugin, and validate with a crawl.
For sites with fewer than 3 languages and fewer than 50 pages, Polylang’s free tier handles everything. For enterprise multilingual operations with 10+ languages or WooCommerce product catalogs, WPML’s paid tier is still the standard.
How to Set Up Hreflang Correctly the First Time
The setup that survives plugin updates, WordPress upgrades, and hosting migrations follows five steps in order:
- Decide your URL structure before installing any plugin. Options: subdirectories (example.com/fr/), subdomains (fr.example.com), or separate domains (example.fr). Subdirectories are easiest for SEO authority consolidation. Subdomains complicate cookie handling but isolate language sites cleanly. Separate domains are best only if content varies heavily by country.
- Install one translation plugin. Match it to your site size and translation workflow. Verify the plugin outputs hreflang automatically and confirm in page source (
view-source:and search for “hreflang”). - Configure the x-default tag. Point x-default to your language fallback page (usually English or your main market version). Without x-default, Google guesses the fallback and often chooses wrong for users outside your language coverage.
- Align canonical tags with hreflang. Each language version should have a self-referencing canonical pointing to itself, and hreflang tags pointing to every alternate version including itself. Pointing canonicals from all language variants to a single “master” English URL is the fastest way to deindex your non-English pages.
- Validate with a crawler. Run Screaming Frog or Sitebulb in crawl mode with hreflang validation enabled. Both tools flag missing return tags, hreflang-to-404 links, and hreflang-to-canonical-mismatch errors. Fix all errors before declaring setup complete.
The return-tag rule is where most setups fail silently. If page A declares hreflang to page B, page B must declare hreflang back to page A. Missing return tags on even one page can cause Google to ignore hreflang signals across the entire cluster of linked pages. Validate return tags quarterly.
Hreflang Mistakes That Break WordPress Multilingual SEO
Four mistakes show up on nearly every WordPress multilingual site in trouble:
Wrong region codes. “en-uk” is wrong. The correct code is “en-gb” (Great Britain per ISO 3166-1). “zh-cn” and “zh-tw” are correct for Simplified and Traditional Chinese. Wrong codes are silently ignored by Google and Bing, leaving pages uncategorized by language.
Hreflang pointing to noindex pages. If your French page is tagged noindex for any reason (staging leak, plugin bug, deliberate exclusion), but your English page’s hreflang points to the French URL, Google drops the hreflang signal entirely. Check noindex status on every language variant before launching.
Mixing language-only and language-region tags inconsistently. Either use language-only everywhere (en, fr) or language-region everywhere (en-us, fr-fr). Mixing them breaks Google’s ability to resolve which version to serve.
Plugin conflicts generating duplicate tags. An SEO plugin (Yoast, Rank Math) outputting hreflang plus a translation plugin (WPML, Polylang) outputting hreflang creates duplicate tags. Google treats the page as having no valid hreflang and falls back to its own language detection.
Audit for these four mistakes first when hreflang isn’t working. Fixing them usually restores 60-80% of cross-language ranking within 4-6 weeks as Google re-processes the corrected signals. Before trusting a hreflang setup, run the Screaming Frog audit at 14 days post-launch, again at 30 days, and every 90 days after that. Plugin updates sometimes regenerate the tags in ways that subtly break previously working configurations, and the audit catches drift before it costs rankings.

