SitPlay.media Get a Plan
// BILINGUAL · 2025-12-10 · 11 min read

Bilingual content strategy (TH/EN) — hreflang done right.

Of the last 40 TH/EN bilingual sites we've audited, 36 had hreflang configuration that actively hurt rankings. Most weren't missing hreflang — they were implementing it wrong, in ways that confused Google's locale-routing logic. Here are the common failure modes, the correct setup, and a validation checklist.

By Yunmin Shin · Published 2025-12-10 · Updated 2026-03-22

Why hreflang matters more in TH/EN than in most language pairs

Thai and English share almost no lexical overlap, no script, and no syntax. That's actually a blessing from a search engine's perspective: detecting which version is which is trivial. So Google should "just figure it out," right?

It doesn't, for two reasons. First, Google indexes URLs, not pages — if your TH and EN versions live on the same URL with content swapped via cookies, Google sees one version. Second, even with separate URLs, Google needs an explicit signal that two URLs are translations of each other; without it, the two versions can cannibalize each other's rankings, or worse, the EN version can rank for Thai queries because it has more backlinks.

We see the second pattern far more often than the first. Bangkok-based SaaS sites whose Thai page exists, is well-written, but never ranks for the obvious Thai query — because their EN page has the global authority and Google can't tell they're translations.

The 5 most common hreflang failure modes we see

Failure #1: One-way hreflang (no return tag)

Hreflang must be bidirectional. If page A says "B is my Thai version," page B must say "A is my English version." Without the return tag, Google ignores the entire annotation.

This shows up most often when teams use a CMS where hreflang is managed at the page level by content writers. The English-language editor adds the TH tag; the Thai-language editor forgets the EN tag. Boom — invalid annotation, both versions float independently.

Failure #2: Wrong language codes

The valid codes are:

What we frequently see: th-th (lowercase, technically valid but inconsistent with everything else), thai (invalid), en-thai (invalid — must be ISO codes), or worst, en on the EN page and th-TH on the TH page (the asymmetry confuses crawlers).

Pick one convention and stick to it. For most TH/EN sites, plain th and en are sufficient unless you specifically target en-TH (English content for Thailand-based readers, e.g., Bangkok Post-style).

Failure #3: Missing x-default

The x-default tag tells Google which version to show when no locale matches. Without it, a Singapore-based user searching in English may get redirected to your TH page if your EN page is region-targeted at en-US.

Best practice: set x-default to your most-trafficked or canonical version, usually English for B2B sites and Thai for B2C/local sites.

Failure #4: Hreflang in robots-blocked pages

If a page is blocked by robots.txt or has a noindex meta tag, its hreflang annotations are ignored — but they can also break the bidirectional pair. We've seen staging URLs accidentally referenced in production hreflang and the entire annotation set get invalidated.

Failure #5: Self-referential URL inconsistency

Each hreflang annotation must include a self-reference. The Thai page must list itself as th in its own hreflang group. Trailing-slash inconsistency (/th/about vs /th/about/) is the single most common cause of "self-reference missing" errors in Search Console.

The correct setup, in three forms

Form 1: HTML <head> tags (simplest)

On https://example.com/about/ (English):

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

On https://example.com/th/about/ (Thai):

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

Note both pages list both URLs and the x-default. The annotation set is identical on every page in the locale group.

Form 2: HTTP headers (for non-HTML files)

For PDFs, images, or other non-HTML content, use the Link response header:

Link: <https://example.com/file.pdf>; rel="alternate"; hreflang="en",
      <https://example.com/th/file.pdf>; rel="alternate"; hreflang="th"

Form 3: XML sitemap (best for large sites)

For sites with hundreds of bilingual page pairs, manage hreflang in the sitemap. This avoids editor error and centralizes the configuration:

<url>
  <loc>https://example.com/about/</loc>
  <xhtml:link rel="alternate" hreflang="en" href="https://example.com/about/"/>
  <xhtml:link rel="alternate" hreflang="th" href="https://example.com/th/about/"/>
  <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/about/"/>
</url>

The XML sitemap approach is what we recommend for any site with more than ~50 page pairs. Implementation work usually goes through Bluewich on our engagements — they wire it into the CMS so editors never touch raw hreflang.

What to do besides hreflang

Hreflang fixes the locale-routing problem, but it doesn't make a translated page rank if the underlying content is weak. Three things that matter at least as much:

  1. Author natively in Thai, don't translate. Our AEO field report showed Thai-authored pages get 78% of citations on Thai queries; translated pages lose to small-domain Thai-native competitors.
  2. Localize the URL slug, the meta description, and the heading. If your TH page slug is /th/about/ instead of /th/เกี่ยวกับเรา/, you're throwing away a small but real ranking signal.
  3. Build separate internal-link clusters per language. Don't link from English supporting articles to Thai pillars. The cluster engineering we documented in our topic-cluster piece applies per-language.

The 7-point validation checklist

Run this against any TH/EN site:

  1. Every page has a self-reference in its hreflang group
  2. Every annotation is bidirectional (return tag exists on the other side)
  3. Language codes are valid ISO and consistent across the site
  4. x-default is set
  5. No hreflang URL is blocked by robots.txt or noindex
  6. Trailing-slash convention is consistent across all hreflang URLs
  7. Sitemap hreflang and on-page hreflang agree (no contradictions)

Search Console's "International Targeting" report flags most of these, but it lags by 1-2 weeks. For real-time validation we use screamingfrog with custom extraction or roll a small Python checker that diffs the hreflang sets across page pairs. The SEO Agency Bangkok team runs the same checker monthly on client sites.

What success looks like

One client — a B2B SaaS with TH and EN versions — had been running for 18 months with broken hreflang (failure mode #1, asymmetric tags). Their EN homepage was ranking #4 for the obvious Thai brand query; their TH homepage was nowhere. Three weeks after fixing the hreflang and adding x-default, the TH page took position #1 for the Thai query and the EN page kept position #4 for the English query. Combined branded traffic up 180% in 60 days.

Hreflang is one of the rare technical-SEO interventions where the fix is cheap, the impact is fast, and the diagnosis is unambiguous. Most of the work is convincing stakeholders it's worth doing.

Where this fits in our broader content stack

Hreflang is the foundation. On top of it sit the cluster engineering patterns, the long-tail Thai content tactics, and the AEO discipline that determines whether either language version gets cited in AI surfaces. Get the foundation wrong and everything above it underperforms.

Our standard content engagement includes a hreflang audit in week one. If you'd rather have Bangkok Digital Marketing handle it as part of a CRO+technical bundle, they share our toolchain. Or email us and we'll send the validator script.

Tags: hreflang bilingual technical-seo international-seo
// RELATED INSIGHTS
// AEO RESEARCH · 2026-03-15

AEO Optimization for Thai Market: 2026 Field Report

4,200 prompts. 4 AI engines. What gets cited.

// THAI SEO · 2026-02-22

Why Pantip Out-Ranks Your Brand on Long-Tail TH

2,800 SERPs analyzed. 6 forum patterns brands can replicate.

// SEO STRATEGY · 2026-01-30

Topic Cluster Engineering: A Quantitative Approach

Graph-theoretic model trained on 74 client clusters.

// SCRAPER REPORT · 2026-04-05

Top 50 Rising TH Queries Q1 2026

Open data drop. 50 queries growing 200%+ YoY.

Get a Plan for your bilingual setup.

Send us your sitemap and 5 sample page pairs. We'll run the 7-point validator and tell you exactly what's broken. Free, no pitch.

Email gg@xx.gg Call +66 61 093 4014
💬 LINE