← All notes

The best way to do multi-language SEO: /vi paths + hreflang

2026-08-10

Serving a site in two languages for SEO comes down to one rule: give each language its own crawlable URL, and tell search engines how they relate. Here is the approach we use on iSEO itself.

One URL per language

Pick a default language that lives at the bare path, and put the other under a short prefix. iSEO uses English at / and Vietnamese under /vi:

Both are real, crawlable pages. Do not swap content with a cookie or JavaScript on the same URL — Google indexes one version per URL, so a cookie swap just hides your other language from search.

Declare the relationship with hreflang

On every page, add reciprocal hreflang links so Google shows the right language to the right user:

<link rel="alternate" hreflang="en" href="https://site/standards">
<link rel="alternate" hreflang="vi" href="https://site/vi/standards">
<link rel="alternate" hreflang="x-default" href="https://site/standards">

The x-default points at your fallback for users whose language you don't target. Make the links reciprocal — each version references all the others, including itself.

Set the page language and canonical

List both in the sitemap

Use the sitemap's xhtml:link alternates so discovery is language-aware:

<url>
  <loc>https://site/</loc>
  <xhtml:link rel="alternate" hreflang="en" href="https://site/"/>
  <xhtml:link rel="alternate" hreflang="vi" href="https://site/vi"/>
</url>

The short checklist

Get those right and each language ranks on its own, in its own market — which for a Vietnamese-market tool like this one is the whole point.