hreflang for Vietnamese Sites: Setup That Avoids Duplicate Content
← Blog
🌏 Localization5 min read

hreflang for Vietnamese Sites: Setup That Avoids Duplicate Content

💡 hreflang for Vietnamese uses the code vi (ISO 639-1). Narrow to vi-VN only if you target Vietnam separately from the diaspora. Every page must carry a self-referential tag plus links to all other language versions. Google silently drops the whole cluster if one page is missing from the set. Implement via HTML head tags, XML sitemap, or HTTP headers.

Key takeaways

  • Use hreflang="vi" for Vietnamese (ISO 639-1). Use vi-VN only for Vietnam-specific variants distinct from the diaspora.
  • Every page in the hreflang set must self-reference and link to all other language versions.
  • Missing one page breaks the whole hreflang cluster silently, with no Search Console warning.
  • Add hreflang="x-default" pointing to your language selector or English fallback.
  • hreflang routes traffic correctly; genuine Vietnamese content is what makes that traffic convert.

What does hreflang actually do for your Vietnamese pages?

When your site publishes the same content in English, Vietnamese, French, and Chinese, Google sees four URLs with overlapping content. Without hreflang, it may choose one URL as canonical and demote the others in search results. hreflang tells Google which URL serves which audience: a Vietnamese speaker in Ho Chi Minh City gets /vi/, an English speaker in Sydney gets /en/.

The critical point: hreflang is a routing signal, not a ranking boost. Your Vietnamese pages still need genuine localized value to rank in Vietnam. hreflang without real content is like a correctly labeled door to an empty room.

Which language code should Vietnamese use in hreflang?

The correct code is vi, following ISO 639-1. For Vietnam-specific targeting, use vi-VN. For most international products, plain vi is better: it covers Vietnamese speakers in Vietnam, the US, Australia, and France. If you also need Simplified Chinese for mainland China, use zh-Hans.

Minimal HTML head block for a four-locale site:

<link rel="alternate" hreflang="en" href="https://example.com/en/page/" />
<link rel="alternate" hreflang="vi" href="https://example.com/vi/page/" />
<link rel="alternate" hreflang="zh-Hans" href="https://example.com/zh/page/" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/page/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/page/" />

In Next.js App Router, use the alternates.languages field in generateMetadata(). Next.js renders these as the correct <link> tags automatically. See the Next.js internationalization guide for the full routing setup.

Three implementation methods: HTML head, sitemap, or HTTP header

Google accepts hreflang in three formats:

  • HTML head tags: place <link rel="alternate" hreflang="..."> in each page's <head>. Best for Next.js, React, and most CMS platforms. Works at the individual page level.
  • XML sitemap: add <xhtml:link> entries inside each <url> block. Declare xmlns:xhtml on the sitemap root. Best for large sites where injecting head tags per page is impractical.
  • HTTP headers: only practical for non-HTML files such as PDFs. Your server sends a Link: response header with alternate URLs. Not needed for standard web pages.

Choose one method and apply it consistently across the site. Mixing methods on the same page can create conflicting signals.

The bidirectional rule and what breaks silently

According to Google's official hreflang documentation, every page in a hreflang set must link back to every other page in the set, including itself. If your English page lists the Vietnamese page as alternate but the Vietnamese page does not reciprocate, Google ignores the annotations on both pages, with no warning in Search Console.

Common silent failures worth auditing:

  • Adding hreflang only to the English template and forgetting the Vietnamese template.
  • Mixing trailing-slash and no-trailing-slash URLs across hreflang tags. URLs must match exactly.
  • Listing fewer language variants on some pages than on others in the same cluster.

Does hreflang fix thin or machine-translated Vietnamese pages?

Partially. hreflang tells Google the overlap is intentional, so no duplicate-content penalty applies. But it does not make thin content rank. If your Vietnamese version is an unreviewed machine translation, Google may still serve the English page to Vietnamese users in global results, and the Vietnamese users who land on that page will bounce quickly, reinforcing low-quality signals.

hreflang earns its setup cost only when genuine Vietnamese content sits underneath it. Key pages such as product descriptions, pricing, and landing pages benefit from native review before the SEO investment pays off.

In-house vs native Vietnamese translator: where to draw the line

Setting up hreflang is a developer task. Any frontend engineer can wire it in a day using the examples above. HTML tags, sitemap entries, and Next.js metadata are all fully in-house work.

A native Vietnamese translator adds concrete value at these points:

  • Reviewing machine-translated strings for register and tone. Vietnamese formal and informal registers affect B2B trust differently.
  • Adapting Sino-Vietnamese terminology for finance, medical, and legal content. Terms of Chinese origin carry different connotations than pure Vietnamese equivalents.
  • Selecting Vietnamese keyword targets. Direct translations of English keywords often miss how Vietnamese users actually search.

For a full-service approach covering translation, SEO, and technical review together, see the Vietnamese website localization service on this site.

FAQ

Does hreflang affect my rankings in Google Vietnam?

No directly. hreflang is a routing signal, not a ranking factor. It tells Google which URL to serve to which user. Rankings depend on the content quality, relevance, and authority of the Vietnamese page itself.

Should I use vi or vi-VN in my hreflang tags?

Use vi for most sites. It covers Vietnamese speakers worldwide. Use vi-VN only if you have a separate version specifically for Vietnam, such as different pricing or product availability for the domestic market versus the diaspora.

What happens if I forget to add hreflang to my Vietnamese pages?

Google ignores the entire hreflang cluster for those pages. The bidirectional requirement means every page in the set must link to all others. Missing even one page makes the annotations ineffective site-wide for that cluster.

Can I implement hreflang via sitemap instead of HTML head tags?

Yes. The XML sitemap method is equally valid and often easier for CMS-generated sites with many pages. Add the xmlns:xhtml namespace to your sitemap root and include <xhtml:link> entries for every alternate URL inside each <url> block.

How do I check that my hreflang implementation is working?

Use Google Search Console's International Targeting report under Search Traffic. The URL Inspection tool shows which hreflang tags were found on individual pages. Screaming Frog can crawl your site and flag any missing reciprocal links across the cluster.

Sources

Official sources consulted for this guide:

Written by Dao Huy (Lucas), Vietnamese translator & localization specialist (EN · ZH · FR → Vietnamese). See translation services →

Get QuoteWhatsApp