Support Log in
AI Multilingual Plugin

Multilingual SEO Guide for WordPress — Hreflang, Sitemaps, and More

This is a practical guide to multilingual SEO for WordPress sites. It covers what hreflang is and why it matters, how to choose a URL structure, how to set up sitemaps correctly, how to handle translated meta, and the mistakes that most commonly break international search rankings.

It’s written for site owners, developers, and SEO consultants who need to get multilingual SEO right on a WordPress installation. No fluff. No “here’s what SEO is.” Just the decisions you need to make and the details that matter.


1. Why multilingual SEO is different

Monolingual SEO is about ranking one page for the right keywords in one country. Multilingual SEO is about ranking multiple versions of the same page for the right keywords in the right countries — and making sure Google doesn’t serve the wrong language to the wrong visitor.

The unique problems multilingual sites face:

  • Language targeting. How do you tell Google that your German page is for German speakers and your French page is for French speakers?
  • Country targeting. Spanish-speaking visitors in Spain expect different content than Spanish-speaking visitors in Mexico. How do you signal that to Google?
  • URL structure. Should each language live on its own subdomain, its own directory, or its own top-level domain?
  • Duplicate content. If you translate the same page into five languages, are those five pages “duplicate content” in Google’s eyes?
  • Meta translation. Your SEO titles and descriptions are carefully written for one language. How do you translate them without losing their SEO value?

Multilingual SEO has good answers to all of these. Most of them involve hreflang.


2. Hreflang: the most important tag you’ve probably never set up

What hreflang is

Hreflang is an HTML attribute (and an XML sitemap annotation) that tells Google which URL on your site is the correct version for a given language and optional country. It looks like this in the <head> of your page:

<link rel="alternate" hreflang="en" href="https://example.com/blog-post/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/blog-post/" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/blog-post/" />
<link rel="alternate" hreflang="es-es" href="https://example.com/es/blog-post/" />
<link rel="alternate" hreflang="es-mx" href="https://example.com/es-mx/blog-post/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/blog-post/" />

Each tag says “this URL is the version of this page for this language (and optionally country).”

Why hreflang matters

Without hreflang, Google guesses. And Google’s guesses are often wrong. A French visitor in Paris searches for something and gets your English page because Google couldn’t tell there was a French version. A Mexican visitor searches and gets your Spain-targeted Spanish page because Google couldn’t tell them apart.

Hreflang is how you tell Google: “here’s every language version of this page, and here’s which one matches which audience.” Google respects it.

The reciprocity rule

Every language version of a page must link to every other language version, including itself. If you have English, French, and German, each version needs all three hreflang tags. If a page is missing from its counterparts’ hreflang sets, Google ignores the orphan.

This is one of the most common multilingual SEO mistakes — hand-maintained hreflang sets drift out of sync, and entire language versions go unindexed for no apparent reason.

x-default

The x-default tag tells Google which version to serve when none of the other language/country combinations match. This is usually your English or source-language version, serving as the fallback for anyone who doesn’t match a specific target.

How to do it on WordPress

If you’re using Lang Forge, hreflang is generated automatically — every translated post gets a complete, reciprocal set of tags in its HTML head, plus a dedicated multilingual XML sitemap at /sitemap-hreflang.xml, plus integration with Yoast, Rank Math, AIOSEO, and other SEO plugin sitemaps. No manual maintenance.

If you’re not using a multilingual plugin, you can add hreflang by hand through theme code or via a plain sitemap. It works but it’s painful to maintain as you add languages or translate new posts.


3. URL structure: the decision that shapes your SEO

You have four options for how to structure URLs on a multilingual WordPress site. Each has tradeoffs.

Directory (recommended for most sites)

example.com/en/blog-post/
example.com/de/blog-post/
example.com/fr/blog-post/

Pros: Single domain, shared domain authority, simple setup, works with any hosting.
Cons: No strong per-country signal (but hreflang fills that role).

This is what most multilingual WordPress sites should use. Simple, SEO-clean, and maintainable.

Parameter

example.com/blog-post/?lang=de

Pros: No rewrite rules needed, works on any WordPress install.
Cons: Uglier URLs, sometimes tricky for caching, perceived as less SEO-friendly (though Google handles them fine with hreflang).

Use this only when directory URLs aren’t practical.

Subdomain

de.example.com/blog-post/
fr.example.com/blog-post/

Pros: Cleaner per-language server configuration, easier CDN splitting.
Cons: Slightly weaker domain authority sharing (subdomains inherit some but not all of the main domain’s authority), requires DNS setup.

Use this when you need per-language server or CDN behavior.

Domain mapping

example.com/blog-post/
example.de/blog-post/
example.fr/blog-post/

Pros: Strongest per-country signal (TLDs are a ranking factor for local results).
Cons: No shared domain authority across domains, expensive to maintain, complex to set up.

Use this for large international operations where brand presence per country matters and budget allows.


4. Sitemaps: your contract with Google

An XML sitemap tells Google what URLs exist on your site and when they were last updated. For a multilingual site, your sitemap also needs to carry hreflang data.

What a good multilingual sitemap looks like

Each URL entry in the sitemap should include an <xhtml:link> annotation for every language version:

<url>
  <loc>https://example.com/en/blog-post/</loc>
  <xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/blog-post/"/>
  <xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/blog-post/"/>
  <xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/blog-post/"/>
  <lastmod>2026-04-11</lastmod>
</url>

Submit this to Google Search Console → Sitemaps. Google will use it for discovery and international targeting.

Lang Forge generates this exact structure automatically at /sitemap-hreflang.xml. It also injects hreflang into the native WordPress sitemap and into any SEO plugin’s sitemap you’re using.


5. Translated SEO meta: the detail everyone forgets

Your SEO title and meta description exist for the English version of a page. When you translate the page, both need to be translated too — and specifically, they need to be SEO-optimized in the target language, not literally translated.

A literal translation of “10 Best WordPress Plugins for SEO” into German is technically correct but misses the keywords German searchers actually use. Your translator (or your AI translator) needs to understand local search intent.

What needs to be translated per page

  • SEO title (<title> tag)
  • Meta description
  • Focus keyword (Yoast / Rank Math / AIOSEO)
  • Canonical URL (automatically per language; don’t share canonical across languages)
  • Open Graph title, description, image
  • Twitter Card title, description, image
  • Structured data (schema.org name, description, inLanguage)

How to handle it on WordPress

Lang Forge copies all 15 Yoast meta keys (plus equivalents for Rank Math, AIOSEO, SEOPress, and TSF) onto the translated post automatically. You then translate them in the visual editor or with AI, with hard character limits respected.


6. Common multilingual SEO mistakes

Mistake 1: Translated pages without hreflang

You translate your site. You forget hreflang. Your translated pages don’t rank in their target countries because Google doesn’t know they exist as separate language versions.

Fix: Use a multilingual plugin that generates hreflang automatically. If you’re hand-coding, use a generator and test every page with a tool like Sitebulb or Screaming Frog.

Mistake 2: Using <html lang="en"> on every page

Your theme hardcodes <html lang="en"> in header.php. Every translated page still identifies as English to search engines and screen readers.

Fix: The lang attribute on the <html> element must match the page’s content language. WordPress provides language_attributes() for this. Make sure your theme uses it instead of hardcoding.

Mistake 3: Google Translate widgets

A Google Translate widget translates content on the fly in the visitor’s browser. No indexable URLs, no hreflang, no SEO value. It’s visitor convenience, not a multilingual site.

Fix: Use a real multilingual plugin that creates indexable pages. Every translation is a real post with its own URL.

Mistake 4: Mixing languages on one URL

You serve the same URL with different languages based on a cookie or the Accept-Language header. Visitors see the right language, but Google only indexes one.

Fix: Each language needs its own URL.

Mistake 5: Translated URLs that collide with the default language

You translate “Products” into “Products” (same word in French) and your French URL is /produits/products/ because the path wasn’t translated too. Slug collisions cause 404s or redirects in unexpected places.

Fix: Translate slugs along with titles. Most multilingual plugins handle this automatically.

Mistake 6: No translated meta description

The translated page has translated content but the meta description is still in English. Your search snippet is mixed-language and users bounce.

Fix: Translate meta titles and descriptions for every translated post. Lang Forge copies them automatically; you still need to translate them.

Mistake 7: Orphan translated pages (no internal links)

Your translated posts exist but nothing on the site links to them except the language switcher. Google treats them as orphan pages with low authority.

Fix: Add a language switcher to every relevant page, translate your internal linking (a link to “Read more” in English should point to the English version; a link in the German version should point to the German version), and make sure your navigation is localized.


7. Tooling checklist for multilingual SEO on WordPress

  • A multilingual plugin that creates real indexable pages per language
  • Automatic hreflang generation (and reciprocal linking)
  • A multilingual XML sitemap submitted to Google Search Console
  • An SEO plugin (Yoast, Rank Math, AIOSEO, SEOPress, or TSF)
  • Translated meta titles, descriptions, canonicals, and OG tags on every language version
  • Translated slugs for every language
  • A language switcher visible on every page
  • A translated navigation menu
  • Internal links localized per language
  • <html lang> set correctly on each language version
  • Structured data translated for name/description fields
  • URL structure picked and stuck to (no mid-project format changes)

8. How Lang Forge handles all of this

Lang Forge is built so that every item on that checklist is handled automatically or with one setting. Hreflang tags are generated on every translated page. The multilingual sitemap is generated at /sitemap-hreflang.xml. SEO plugin meta fields are copied onto translations and available for translation in the visual editor. The language switcher is a widget, shortcode, or menu item. WooCommerce URLs, emails, and currency formatting are translated per language. ACF and Elementor content is translatable at the field and widget level.

You still make the content decisions — you still have to translate your copy well, pick the right keywords for each market, and write meta descriptions that convert. Lang Forge handles the mechanical parts so you can focus on the editorial ones.


Ready to get multilingual SEO right?

Get Lang Forge — from $54/year →

Hreflang, sitemaps, translated meta, and real indexable URLs — all automatic.

Forge AI Assistant Online

Hi! I'm the Lang Forge AI assistant. Ask me anything about the plugin — setup, features, troubleshooting, or development.

Just now
Powered by Forge AI · Browse docs