← Back to insights
Guide · #758

Meta Tags for Multi-Language Sites

Master meta tags for multilingual sites. Learn hreflang, lang attributes, and locale codes to avoid duplicate content and rank globally.

Filed
May 13, 2026
Read
19 min
Author
The Seoable Team

Prerequisites

Before you implement meta tags for a multi-language site, you need:

  • A live website with at least two language versions (or planned versions)
  • Access to your site's HTML head section or content management system (CMS)
  • Language codes — ISO 639-1 codes (en, es, fr, de, zh, ja) and optional region codes (US, MX, GB)
  • URL structure decided — whether you'll use subfolders (/en/, /es/), subdomains (en.example.com), or URL parameters (?lang=en)
  • Google Search Console access to monitor indexing and errors
  • A list of all language versions of each page (example: English version at /en/about, Spanish at /es/about)

If you haven't set up Google Search Console yet, follow this 10-minute setup guide first. You'll need it to validate your meta tag implementation.

If you're running WordPress, configure your SEO plugin to handle language and locale tags automatically — most plugins include hreflang support out of the box.

Understanding the Core Meta Tags for Multi-Language Sites

When you launch a site in multiple languages, search engines face a problem: which version should they show to users? Meta tags solve this by telling Google, Bing, and other crawlers exactly which language each page targets.

There are three critical meta tags and attributes for multi-language SEO:

1. The lang attribute — Tells browsers and search engines the natural language of the page content. This goes in the opening <html> tag.

2. The hreflang link element — Signals relationships between language versions of the same page. This prevents duplicate content penalties and tells Google which version to show to users in different regions.

3. The Content-Language meta tag — An older tag that specifies the intended audience's language. It's less critical now but still useful as a backup signal.

According to official Google documentation on managing multi-regional and multilingual sites, the lang attribute and hreflang tags are the primary signals Google uses to understand your site's language structure. Implementing them correctly prevents duplicate content issues, improves crawl efficiency, and ensures the right version appears in the right search results.

The brutal truth: most founders skip this step entirely. They launch in three languages and wonder why Google indexes all versions as duplicates, tanks their rankings, and wastes crawl budget. The fix takes 30 minutes and compounds your visibility across every language market.

Step 1: Implement the Lang Attribute on Every Page

The lang attribute is the foundation. It goes in your HTML's opening tag and tells search engines the primary language of that page.

Setting the Lang Attribute

Add the lang attribute to your opening <html> tag with the ISO 639-1 language code:

<html lang="en">
  <head>
    <!-- rest of your head -->
  </head>
  <body>
    <!-- content -->
  </body>
</html>

For pages targeting a specific region, use the format language-region. Use ISO 3166-1 alpha-2 region codes:

<html lang="en-US">
  <!-- English for United States -->
</html>

<html lang="en-GB">
  <!-- English for United Kingdom -->
</html>

<html lang="es-MX">
  <!-- Spanish for Mexico -->
</html>

<html lang="zh-CN">
  <!-- Simplified Chinese for China -->
</html>

Every page on your site must have a lang attribute. No exceptions. This is the signal that tells Google what language the content is written in, and it's the first thing crawlers check.

Common Language Codes

Here are the codes you'll use most often:

  • en — English (generic)
  • en-US — English (United States)
  • en-GB — English (United Kingdom)
  • es — Spanish (generic)
  • es-ES — Spanish (Spain)
  • es-MX — Spanish (Mexico)
  • fr — French (generic)
  • fr-CA — French (Canada)
  • de — German
  • it — Italian
  • pt-BR — Portuguese (Brazil)
  • pt-PT — Portuguese (Portugal)
  • ja — Japanese
  • zh-CN — Simplified Chinese
  • zh-TW — Traditional Chinese
  • ru — Russian
  • ar — Arabic
  • hi — Hindi

If you're unsure which code to use, check ISO 639-1 language codes and ISO 3166-1 alpha-2 region codes.

Pro Tip: Validate Your Lang Attributes

Once you've added the lang attribute, validate it. Open any page in your browser, right-click, select "View Page Source," and search for <html lang=. Confirm the code matches the page's content language. If you have 50+ pages, use a crawler tool like Screaming Frog to check all pages at once.

Step 2: Implement Hreflang Tags to Link Language Versions

The hreflang tag is where the real magic happens. It tells Google which pages are translations of each other and which version to show to users in different regions.

Without hreflang, Google treats each language version as a separate page. You get duplicate content issues, diluted link equity, and wasted crawl budget.

How Hreflang Works

Each page needs a set of hreflang links that point to all language versions of that page, including itself. The tag goes in the <head> section:

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

Break this down:

  • rel="alternate" — Tells search engines this is an alternate version
  • hreflang="en" — The language code for this version
  • href="https://example.com/about" — The full, absolute URL of that language version
  • hreflang="x-default" — The fallback version for users whose language isn't specified

Critical Rules for Hreflang Implementation

Rule 1: Every language version must link to every other version. If you have English, Spanish, and French versions of a page, the English page must list all three hreflang tags (including itself). The Spanish page must also list all three. This is bidirectional.

Rule 2: Use absolute URLs, not relative URLs. Always include the full domain: https://example.com/about, not /about.

Rule 3: Include a self-referential hreflang tag. The English version must include <link rel="alternate" hreflang="en" href="https://example.com/about" />. This tells Google the page is also available in English.

Rule 4: Use hreflang="x-default" for your fallback version. This is typically your English version or the version shown to users in regions you don't specifically target. Only use one x-default tag per page.

Example: Complete Hreflang Implementation

Let's say you have an "About Us" page in English (US), Spanish (Mexico), and French (Canada). Your URL structure uses subfolders:

  • English: https://example.com/about
  • Spanish: https://example.com/es/about
  • French: https://example.com/fr/about

On the English version (https://example.com/about), add these tags to the <head>:

<link rel="alternate" hreflang="en-US" href="https://example.com/about" />
<link rel="alternate" hreflang="es-MX" href="https://example.com/es/about" />
<link rel="alternate" hreflang="fr-CA" href="https://example.com/fr/about" />
<link rel="alternate" hreflang="x-default" href="https://example.com/about" />

On the Spanish version (https://example.com/es/about), add:

<link rel="alternate" hreflang="en-US" href="https://example.com/about" />
<link rel="alternate" hreflang="es-MX" href="https://example.com/es/about" />
<link rel="alternate" hreflang="fr-CA" href="https://example.com/fr/about" />
<link rel="alternate" hreflang="x-default" href="https://example.com/about" />

On the French version (https://example.com/fr/about), add:

<link rel="alternate" hreflang="en-US" href="https://example.com/about" />
<link rel="alternate" hreflang="es-MX" href="https://example.com/es/about" />
<link rel="alternate" hreflang="fr-CA" href="https://example.com/fr/about" />
<link rel="alternate" hreflang="x-default" href="https://example.com/about" />

Notice: all three pages have identical hreflang sets. This is correct. Each page tells Google about all versions of itself.

Alternative: Hreflang in Your Sitemap

If you have hundreds of pages, adding hreflang to every HTML file is tedious. You can specify hreflang in your XML sitemap instead.

Create a sitemap that includes all language versions with hreflang attributes:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://example.com/about</loc>
    <xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/about" />
    <xhtml:link rel="alternate" hreflang="es-MX" href="https://example.com/es/about" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://example.com/fr/about" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/about" />
  </url>
  <url>
    <loc>https://example.com/es/about</loc>
    <xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/about" />
    <xhtml:link rel="alternate" hreflang="es-MX" href="https://example.com/es/about" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://example.com/fr/about" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/about" />
  </url>
  <url>
    <loc>https://example.com/fr/about</loc>
    <xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/about" />
    <xhtml:link rel="alternate" hreflang="es-MX" href="https://example.com/es/about" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://example.com/fr/about" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/about" />
  </url>
</urlset>

Submit this sitemap to Google Search Console. Google will read the hreflang attributes from the sitemap instead of requiring them in every page's HTML.

For a step-by-step guide on generating sitemaps for any stack, read our sitemap generation guide.

Pro Tip: Validate Hreflang Implementation

After implementing hreflang, validate it using Google Search Console:

  1. Go to Settings > International Targeting in Google Search Console
  2. Check the "Hreflang" section
  3. Google will report any errors, such as missing reciprocal links or incorrect language codes

If you see errors, fix them immediately. Broken hreflang tags are worse than no hreflang tags — they confuse Google and hurt your rankings.

Step 3: Add the Content-Language Meta Tag (Recommended)

The Content-Language meta tag is older and less critical than lang and hreflang, but it still serves as a backup signal. It goes in the <head> section:

<meta http-equiv="Content-Language" content="en-US" />

For pages targeting a specific language and region, use the format language-region:

<meta http-equiv="Content-Language" content="es-MX" />

According to practical guidance on writing language metatags for websites, the Content-Language meta tag tells browsers and search engines the natural language of the page. While lang is now the primary signal, Content-Language provides redundancy.

When to Use Content-Language

  • Always add it if you're targeting a specific region (e.g., en-US for US English, es-MX for Mexican Spanish)
  • Use generic language codes only if you're serving the same content to multiple regions (e.g., en for all English-speaking regions)
  • Don't mix — if you use lang="en-US", use Content-Language: en-US as well

Common Pitfall: Multiple Content-Language Tags

Don't add multiple Content-Language meta tags to a single page. Search engines will ignore the tag if there are duplicates. One tag per page, always.

Step 4: Optimize Meta Titles and Descriptions for Each Language

Meta titles and descriptions are the text users see in search results. For multi-language sites, you must translate them — not machine-translate, but human-translated by native speakers.

Meta Title Best Practices

Your meta title should:

  • Be unique for each language version — not a direct translation, but optimized for that language's search behavior
  • Include the target keyword in that language
  • Be 50-60 characters to avoid truncation in search results
  • Lead with the brand name or the most important keyword

Example:

English (en-US):

<title>Best Project Management Software for Teams | Acme</title>

Spanish (es-MX):

<title>Software de Gestión de Proyectos para Equipos | Acme</title>

French (fr-CA):

<title>Logiciel de Gestion de Projets pour Équipes | Acme</title>

Notice: each title is translated and optimized for that language's search behavior. Spanish speakers search differently than English speakers; French speakers have different intent patterns than both.

Meta Description Best Practices

Meta descriptions:

  • Should be 150-160 characters for optimal display
  • Must be unique for each language — again, optimized, not machine-translated
  • Should include a call-to-action ("Learn more," "Get started," "Try free")
  • Should match the page's content — don't mislead

Example:

English:

<meta name="description" content="Manage projects, tasks, and teams in one place. Free trial, no credit card. Start organizing today." />

Spanish:

<meta name="description" content="Gestiona proyectos, tareas y equipos en un solo lugar. Prueba gratis, sin tarjeta de crédito. Comienza hoy." />

French:

<meta name="description" content="Gérez les projets, les tâches et les équipes en un seul endroit. Essai gratuit, sans carte de crédit. Commencez maintenant." />

If you're scaling a multi-language site and need to generate meta descriptions in bulk, read this guide on scaling SEO for multi-language websites with AI meta descriptions. It covers how to use AI tools to generate descriptions at scale while maintaining quality.

Step 5: Handle Canonical Tags for Language Versions

Canonical tags tell search engines which version of a page is the "primary" version. For multi-language sites, you must use self-referential canonical tags on each version.

Self-Referential Canonical Tags

On your English page, point to itself:

<link rel="canonical" href="https://example.com/about" />

On your Spanish page, point to itself:

<link rel="canonical" href="https://example.com/es/about" />

On your French page, point to itself:

<link rel="canonical" href="https://example.com/fr/about" />

This tells Google: "Each of these pages is the canonical version of itself." Combined with hreflang, this prevents duplicate content issues.

When NOT to Use Canonical Tags

Do not point all language versions to a single canonical URL. This is a common mistake:

<!-- DON'T DO THIS -->
<link rel="canonical" href="https://example.com/about" />
<!-- on the Spanish page -->

If you point the Spanish page's canonical to the English version, Google will ignore the Spanish page entirely. You lose rankings in Spanish search results.

For more on canonical tags and how they interact with other SEO signals, read our guide on WWW vs. non-WWW and enforcing canonical domains. The principles apply to language versions as well.

Step 6: Structure URLs for Language Versions

Your URL structure signals language to Google. There are three main approaches:

Approach 1: Subfolders (Recommended)

https://example.com/about (English)
https://example.com/es/about (Spanish)
https://example.com/fr/about (French)

Pros: Easy to implement, keeps all content under one domain, simplest for analytics.

Cons: Slightly more complex URL structure.

SEO impact: Neutral to positive. All language versions benefit from the main domain's authority.

Approach 2: Subdomains

https://en.example.com/about (English)
https://es.example.com/about (Spanish)
https://fr.example.com/about (French)

Pros: Clean URLs, clear separation of languages.

Cons: Subdomains are treated as separate sites by Google. Link equity doesn't flow between them as easily.

SEO impact: Negative. Subdomains dilute domain authority. Avoid this unless you have a specific reason.

Approach 3: Country Code Top-Level Domains (ccTLDs)

https://example.com/about (English, US)
https://example.es/about (Spanish, Spain)
https://example.fr/about (French, France)

Pros: Strong regional signal. Each domain can rank independently in its region.

Cons: Expensive (multiple domains), complex to manage, no shared authority.

SEO impact: Positive for regional rankings, but requires significant investment.

Recommendation: Use subfolders. They're the easiest to implement and maintain, and they keep all your link equity in one domain.

Once you've chosen your URL structure, set up a sitemap for your entire site and submit it to Google Search Console.

Step 7: Avoid Common Multi-Language SEO Mistakes

According to best practices for multi-language SEO, most founders make the same mistakes. Here's how to avoid them:

Mistake 1: Automatic Redirects Based on Browser Language

Don't automatically redirect users to their language version. If a user in Mexico visits your English site, don't force them to the Spanish version. Let them choose.

Why? Because:

  • Users might prefer English
  • Bots (including Google's crawlers) get redirected inconsistently
  • It confuses analytics

Instead, show a banner: "Available in Spanish" with a link.

Mistake 2: Machine Translation Without Review

Never publish machine-translated content without human review. Google can detect low-quality translations, and they hurt your rankings.

Hire native speakers to review translations. It costs more upfront but pays off in rankings and user trust.

Mistake 3: Forgetting to Translate Meta Tags

Meta titles and descriptions must be translated too, not left in English. Search engines read these, and users see them in results. Untranslated meta tags signal low effort and hurt click-through rates.

Mistake 4: Inconsistent Hreflang Implementation

If you implement hreflang on 50 pages but forget 10, Google gets confused. Implement it everywhere or nowhere. Half-measures don't work.

Mistake 5: Using Generic Language Codes When You Target Regions

If you serve Spanish to Mexico, use es-MX, not es. If you serve English to the US, use en-US, not en. Generic codes tell Google you don't have a specific regional preference, which can hurt local rankings.

Mistake 6: Not Testing Indexing Across Languages

After implementing meta tags, check Google Search Console to confirm all language versions are indexed. Go to Coverage and filter by language. You should see all versions listed.

If any version is missing, fix it immediately. Common causes:

  • Broken hreflang links (pointing to non-existent URLs)
  • Noindex tags on language versions (remove them)
  • Robots.txt blocking language folders (check and fix)

For guidance on noindex vs. robots.txt and when to use each, read our decision tree.

Step 8: Monitor and Maintain Multi-Language Meta Tags

Implementing meta tags is not a one-time task. You must monitor them continuously.

Weekly Checks

  • Search Console: Check for hreflang errors in International Targeting
  • Crawl reports: Use Screaming Frog to verify all pages have correct lang attributes
  • Indexing: Confirm all language versions appear in Google's index

Monthly Checks

  • Search rankings: Track keyword rankings across languages
  • Click-through rates: Check if CTR is consistent across language versions (if not, meta descriptions may need tweaking)
  • Crawl budget: Ensure Google isn't wasting crawl budget on duplicate or low-value pages

Quarterly Reviews

  • Content updates: When you update a page, ensure all language versions are updated and meta tags are refreshed
  • New pages: Every new page must have correct lang, hreflang, and Content-Language tags before publishing
  • Competitive analysis: Check how competitors structure their multi-language sites

For a comprehensive view of your site's health, link Google Analytics 4 with Google Search Console. This gives you search query data, impressions, and click-through rates by language, all in one dashboard.

Step 9: Implement Open Graph Tags for Language Versions

When your pages are shared on social media or previewed by AI search engines, Open Graph tags control what appears. For multi-language sites, you must translate these as well.

Open Graph tags include:

  • og:title — The title shown in social previews
  • og:description — The description shown in previews
  • og:image — The image shown in previews
  • og:locale — The locale (language and region) of the page
  • og:locale:alternate — Alternate locales (for language versions)

Example:

English page:

<meta property="og:title" content="Best Project Management Software for Teams" />
<meta property="og:description" content="Manage projects, tasks, and teams in one place." />
<meta property="og:image" content="https://example.com/og-image-en.jpg" />
<meta property="og:locale" content="en_US" />
<meta property="og:locale:alternate" content="es_MX" />
<meta property="og:locale:alternate" content="fr_CA" />

Spanish page:

<meta property="og:title" content="Software de Gestión de Proyectos para Equipos" />
<meta property="og:description" content="Gestiona proyectos, tareas y equipos en un solo lugar." />
<meta property="og:image" content="https://example.com/og-image-es.jpg" />
<meta property="og:locale" content="es_MX" />
<meta property="og:locale:alternate" content="en_US" />
<meta property="og:locale:alternate" content="fr_CA" />

Notice the og:locale format: language_REGION with an underscore, not a hyphen. This is different from lang attributes.

For a detailed walkthrough on setting up Open Graph tags, read our guide on Open Graph tags for AI search. It covers how to optimize these tags for both social sharing and AI search engines like ChatGPT and Perplexity.

Step 10: Validate Everything with Google Tools

Before you call your multi-language implementation complete, validate it using Google's tools.

Google Search Console: International Targeting

  1. Go to Settings > International Targeting in Google Search Console
  2. Check the Hreflang section
  3. Google will report:
    • Any pages with hreflang errors
    • Missing reciprocal links
    • Incorrect language codes
  4. Fix any errors immediately

Google Search Console: Coverage

  1. Go to Coverage in Google Search Console
  2. Filter by language using the "Language" filter
  3. Confirm all language versions are indexed
  4. If any are missing, check for noindex tags, robots.txt blocks, or broken hreflang links

Google Rich Results Test

  1. Go to Google's Rich Results Test
  2. Enter the URL of each language version
  3. Check for any structured data errors
  4. If you've added schema markup (like Organization schema), verify it's valid

For a step-by-step guide on setting up schema markup and validating it, read our guide on schema markup with Google's Rich Results Test.

Troubleshooting Common Issues

Issue 1: Hreflang Errors in Google Search Console

Symptom: Google Search Console reports hreflang errors like "Hreflang link points to page without reciprocal link."

Cause: You've added hreflang to some pages but not all, or the links are broken.

Fix:

  1. Identify the page with the error
  2. Check all its hreflang tags
  3. Verify each URL exists and is accessible
  4. Ensure every language version links back to the original page
  5. Re-submit the sitemap to Google Search Console

Issue 2: Language Versions Not Indexed

Symptom: Only your English version appears in Google's index. Spanish and French versions are missing.

Cause: Likely noindex tags, robots.txt blocks, or broken hreflang links.

Fix:

  1. Check the page source of the missing version for <meta name="robots" content="noindex" />
  2. If present, remove it
  3. Check robots.txt for blocks on /es/ or /fr/ folders
  4. If present, remove them
  5. Verify hreflang links point to valid, accessible URLs
  6. Request indexing in Google Search Console

Issue 3: Duplicate Content Warnings

Symptom: Google treats all language versions as duplicates of the English version.

Cause: Missing or broken hreflang tags, or canonical tags pointing all versions to one URL.

Fix:

  1. Verify hreflang tags are present on all pages
  2. Verify each language version has a self-referential canonical tag
  3. Verify no canonical tags point to a different language version
  4. Wait 2-4 weeks for Google to re-crawl and update its index

Issue 4: Wrong Language Version Appearing in Search Results

Symptom: Users in Mexico search in Spanish but see your English results.

Cause: Incorrect language codes or missing regional targeting.

Fix:

  1. Verify you're using regional language codes (e.g., es-MX, not es)
  2. Verify hreflang tags use the same regional codes
  3. Check that the Spanish version's content is actually in Spanish (not English)
  4. Wait for Google to re-crawl (1-2 weeks)

Key Takeaways and Action Plan

Multi-language SEO is not complicated, but it requires precision. Here's what you need to do:

Immediate Actions (This Week)

  1. Add lang attributes to every page's opening <html> tag
  2. Add hreflang tags to all language versions (or add them to your sitemap)
  3. Add Content-Language meta tags to specify regional targeting
  4. Translate meta titles and descriptions — not machine-translated, but optimized for each language
  5. Use self-referential canonical tags on each language version

Short-Term Actions (This Month)

  1. Validate in Google Search Console — check for hreflang errors and missing indexed pages
  2. Test crawling with Screaming Frog to verify all pages have correct lang attributes
  3. Translate Open Graph tags for social sharing and AI search engines
  4. Monitor indexing — confirm all language versions appear in Google's index

Ongoing Actions (Ongoing)

  1. Check Google Search Console monthly for hreflang errors and coverage issues
  2. Update all language versions when you publish new content
  3. Monitor rankings across languages to spot issues early
  4. Test user experience — ensure language switchers work and users can navigate between versions

Why This Matters for Founders

You shipped your product. Now you need visibility. If you're launching in multiple markets, meta tags for multi-language sites are non-negotiable.

Without them, you waste crawl budget, dilute link equity, and confuse search engines. With them, you rank in every language market, you avoid duplicate content penalties, and you get users who actually speak your language.

The implementation takes 2-4 hours for a small site, maybe a day for a larger one. The ROI compounds. Every month you delay costs you visibility in languages you could already be dominating.

If you're running a bootstrapped operation and need a comprehensive SEO audit, keyword roadmap, and 100 AI-generated blog posts in one shot, check out Seoable. It's built for founders who ship and need results fast. One-time $99 fee, no monthly recurring costs.

But whether you use Seoable or handle SEO yourself, implement these meta tags today. Your future international rankings depend on it.

Free weekly newsletter

Get the next one on Sunday.

One short email a week. What is working in SEO right now. Unsubscribe in one click.

Subscribe on Substack →
Keep reading