Run a site that serves more than one country or language, and Google has to guess which version of a page to show each searcher. It guesses wrong more often than you would like. A shopper in Singapore lands on your Malaysian page with the wrong currency, bounces, and takes your conversion rate down with them.

Hreflang is how you stop the guessing. It tells search engines exactly which language or regional version belongs to which audience. This guide covers what hreflang does, how to implement it three different ways, the mistakes that quietly break it, and how to audit your setup, with examples aimed at Singapore and the wider region.

What is hreflang (and what it is not)

Hreflang is an HTML attribute that tells search engines which language or regional version of a page to serve to which users. You write it as rel=”alternate” hreflang=”x”, where x is the language or language-region you are targeting. Google introduced it in 2011 to solve one problem: how to show the right version of near-identical pages to the right people.

One point matters more than any other. Hreflang is a signal, not a directive. Google treats hreflang annotations as a hint, and it may ignore an implementation that is broken or contradicted by stronger signals. Get it right and you guide Google. Get it wrong and Google quietly does its own thing, with no error to warn you.

What hreflang does not do

Plenty of hreflang myths cause real damage, so here is what the attribute will not do for you.

It does not redirect users. If someone opens your Australian page from a direct link, hreflang leaves them there. It only affects which version appears in search results.

It does not translate anything. You still have to build the localised pages yourself. Hreflang just connects the ones you already have.

It does not work for Bing. Bing leans on the content-language meta tag and its own signals instead, so a site that cares about Bing traffic needs a separate plan.

It does not replace canonical tags. The two work together, and confusing them is one of the most common ways to break an implementation, which we cover below.

How to pronounce “hreflang”

The word looks worse than it sounds. Say it “H-ref-lang”, built from the HTML attributes href and lang. There is no hidden trick to it, and none of the SERP’s top guides bother to answer this, so now you know.

Why hreflang matters for SEO

Hreflang earns its place for three reasons: it serves the right version to each user, it protects near-duplicate regional pages from being suppressed, and it lets pages in a language cluster share ranking signals. Each is worth a closer look.

Serving the right language/region version (user experience)

When a searcher sees content in their own language, with local pricing and shipping, they are more likely to stay. When they land on the wrong version, they bounce back to the results and try the next listing.

That behaviour feeds back into rankings. Fewer people returning to the search results, longer time on page, and lower bounce rates all point Google towards keeping your page where it is. Hreflang is what makes sure the searcher meets the version built for them in the first place.

Preventing duplicate-content suppression across regional variants

Say you run an English page for Singapore and an English page for Australia. The words are nearly identical, and the only real difference is pricing and shipping. Without a signal that these are deliberate regional variants, Google may treat them as duplicates and index just one.

If it picks the Australian page as the version to keep, your Singapore page can drop out of sight in your home market. Hreflang tells Google these pages are intentional alternates, not duplicates, so each keeps its place. Google’s own guidance notes that localised versions count as duplicates only when the main content stays untranslated, so genuine translations are safe either way.

Consolidating ranking signals within the hreflang cluster

Pages joined by hreflang form a cluster, and Google can use that grouping when it decides which URL to treat as canonical. A page left out of the cluster is likelier to lose that selection to one inside it.

The practical upshot is worth holding on to. A correct cluster keeps every regional version eligible to rank for its own audience, instead of one version swallowing the visibility of the rest.

Anatomy of a hreflang tag

Every hreflang tag follows the same shape. Here is one for an English page aimed at Singapore:

<link rel="alternate" hreflang="en-SG" href="https://www.example.com/sg/product" />

Three parts do the work. `rel=”alternate”` tells the search engine the linked URL is an alternative version of the current page. `hreflang=”en-SG”` names the language and, optionally, the region that version targets. `href=”…”` gives the full, absolute URL of that version, protocol included.

Get any one of the three wrong and the whole tag can be ignored, so it pays to understand each piece before you scale it across a site.

Language and region codes explained

The value inside hreflang is either a language on its own or a language and a region joined by a hyphen, like en-SG. The language always comes first and uses a two-letter ISO 639-1 language code. The region is optional, comes second, and uses a two-letter ISO 3166-1 Alpha 2 country code.

So en means English for speakers everywhere, while en-SG means English for users in Singapore. Google supports only codes listed in those two standards, which is why a made-up region grouping such as es-419 for Latin America will not work.

One rule trips people up constantly. The language and region do not have to match each other. pl targets Polish speakers anywhere, pl-PL targets Polish speakers in Poland, and pl-DE targets Polish speakers in Germany. The region simply narrows the audience for the language you named first.

Language-only vs. language-plus-region: when to use each

Reach for a language-only code when one version serves every speaker of that language, wherever they are. If a single English page works for your whole audience, en is enough and keeps your setup simple.

Add a region code when the versions genuinely differ by country: different pricing, different legal disclaimers, different spelling. An en-SG page with GST-inclusive pricing and an en-MY page in ringgit are worth separating.

There is a hard limit worth remembering: you cannot specify a region without a language. hreflang=”SG” is invalid, because Google reads the first code as a language and never derives the language from a country. In fact be is read as Belarusian, not Belgium, so a lone region code either misfires or gets ignored. It has to be en-SG, zh-SG, or whatever the language actually is.

There is also a case for not being too specific. If you split German into de-DE, de-AT, and de-CH, Google has nothing obvious to show a German speaker searching in Belgium. A plain de catch-all covers everyone the region-specific versions miss, so specify the region only when the difference between versions is real.

Handling Simplified vs. Traditional Chinese and scripts

Chinese is where Singapore and the wider region need extra care. Simplified Chinese, used in mainland China and Singapore, and Traditional Chinese, used in Taiwan and Hong Kong, are different enough that readers strongly prefer the correct one.

There is no separate ISO 639-1 code for the two, since both use zh. You can differentiate by region, using zh-SG or zh-CN for Simplified and zh-TW or zh-HK for Traditional. Google derives the script from the country automatically in these cases.

For a generic Simplified or Traditional version not tied to one country, use the script subtag from the ISO 15924 standard: zh-Hans for Simplified and zh-Hant for Traditional. You can add a region on top of that too, so zh-Hans-US targets Simplified Chinese readers in the United States.

The x-default tag

The x-default value handles everyone your other tags miss. It tells Google which page to show a user whose language and region match none of your specified versions. In an HTML tag it looks like this:

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

Think of it as your fallback. A visitor in Brazil with no Portuguese version to match will be considered for the x-default page instead. Google designed x-default for language selector pages and auto-redirecting home pages, so those are where it fits best, though you can point it at your main English page just as well.

You do not add a language code to x-default, because the page is meant for users whose language you have not matched, so its own language is beside the point. Skipping x-default is not fatal, but leaving it out means Google picks the fallback for you, and it may not pick the one you would.

The three rules that make hreflang work

Whichever method you use to add hreflang, three rules hold every time. Break any one and Google may drop the annotations without telling you. Take them in turn.

Rule 1: reciprocal (bidirectional) links

Hreflang tags work in pairs. If your Singapore page points to your Malaysia page, the Malaysia page has to point back. Google states plainly that if two pages don’t both point to each other, the tags are ignored.

The reason is sensible: it stops any random site from naming itself an alternate of your page without your agreement. Both sides have to confirm the relationship, like a handshake that only counts when both hands move.

Rule 2: self-referencing tags

Every page in a cluster must include a hreflang tag pointing to itself, alongside the tags for its alternates. Google’s guidance is that each language version must list itself as well as all the others.

This feels odd the first time you do it, since you are linking a page to itself. But the full set of tags is identical on every version of the page, self-reference included, and the implementation is unreliable without it.

Rule 3: valid, absolute URLs and codes

The href in every tag has to be a fully-qualified, absolute URL, protocol and all: https://www.example.com/sg/, never /sg/ or //example.com/sg/. Google requires the transport method in every alternate URL.

The codes have to be valid too. Use real ISO 639-1 language codes and, where you add a region, officially assigned ISO 3166-1 Alpha 2 country codes. Reserved oddities like UK, EU, and UN are ignored by Google, so a region needs its proper code, which for the United Kingdom is GB.

How to implement hreflang: the three methods

Google accepts hreflang in three places: in your HTML, in your XML sitemap, or in your HTTP headers. Google treats the three methods as equivalent, so you pick the one that suits your site and stack, not the one that ranks best. There is no bonus for using more than one.

Each method carries the same information: the full set of language and region versions, every page listing itself and all its alternates. Only the delivery differs.

Method 1: HTML link tags in the head

The most common method puts <link> tags in the <head> of every page. Each page carries the full set, one tag per version including itself.

<link rel="alternate" hreflang="en-sg" href="https://example.com/sg/" />
<link rel="alternate" hreflang="en-my" href="https://example.com/my/" />
<link rel="alternate" hreflang="zh-sg" href="https://example.com/sg/zh/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/" />

This method is transparent and easy to check in your browser’s view-source. The downside is weight: on a large site with many locales, the set of tags on every page grows quickly, and keeping it correct by hand becomes hard.

Method 2: XML sitemap (xhtml:link)

The sitemap method keeps hreflang out of your pages entirely and declares the relationships in your XML sitemap instead. Each <url> entry lists its alternates with <xhtml:link> child elements.

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

This keeps your page markup clean and is easier to manage at scale, since everything lives in one file. It is the method to reach for on large or fast-growing sites. The trade-off is that sitemaps are less visible, so mistakes can sit unnoticed unless you audit them.

Method 3: HTTP headers

The third method sends hreflang in the HTTP response header. Its main use is non-HTML files like PDFs, where there is no <head> to hold a link tag.

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

Most sites never need this method for standard pages. Keep it in your back pocket for documents and other non-HTML resources.

Which method should you choose, and don’t mix them

Pick one method and stick with it. For most small and mid-sized sites, HTML tags are simplest. For large or multi-locale sites, the sitemap method scales better. HTTP headers cover non-HTML files.

Mixing methods on the same pages invites contradictions, and a conflict between two sources is a common way to send Google mixed signals. Choose the one that fits your site, apply it consistently, then audit it.

Hreflang and canonical tags: how they work together

Hreflang and canonical tags answer different questions, and confusing them breaks more implementations than almost anything else. The canonical tag names the authoritative version of a page. Hreflang names the right version for each language or region. They operate side by side, and neither replaces the other.

The golden rule is that every regional page should canonicalise to itself. Your en-SG page points its canonical at the en-SG URL, not at your US or global page. A self-referencing canonical on each version tells Google that page is the original for its own audience, leaving hreflang free to do its job.

Get this backwards and the two tags fight. If your Singapore page carries a canonical pointing to the US page, you are telling Google the US version is the real one and the Singapore page should be dropped. The hreflang signal says one thing, the canonical says another, and the canonical usually wins.

The Shopify / CMS default-canonical trap

Some platforms set canonical tags automatically, and on older or misconfigured setups that default could point every regional page back to one primary URL. That is the classic trap: your careful hreflang tags get undercut by a canonical you did not realise was there.

Modern Shopify handles this correctly on its own. Shopify adds hreflang tags automatically through Shopify Markets and keeps each localised URL referencing itself as canonical. The real risk on Shopify is different: adding your own hreflang tags on top of the automatic ones can create duplicate or conflicting annotations, and its location-based redirects can interfere with how bots reach each version.

The lesson holds across platforms. Before you write a line of hreflang, check what canonical tag your CMS is already outputting on each regional page, because a hidden default can quietly cancel all your work.

Implementing hreflang across common platforms

How you add hreflang depends heavily on your platform. Some generate it for you once configured, others need a plugin or an app, and a few need custom code. Here is how the common ones handle it.

WordPress

WordPress needs the right plugin, because hreflang is tied to how you manage translations. This catches people out: your SEO plugin alone usually will not do it.

WPML and Polylang

WPML and Polylang are the two established translation plugins, and both generate hreflang for linked translations once you connect each page to its equivalents in other languages. Polylang outputs hreflang tags in the head for translations you have linked together, and WPML does the same through its languages settings.

The catch is that you have to link translations deliberately. A page with no linked equivalents produces no hreflang, so the connection between versions is the step you cannot skip.

Yoast SEO and Rank Math

Here is the trap worth flagging. Yoast SEO, the most popular WordPress SEO plugin, does not emit hreflang between languages on its own, because it optimises each post in isolation and has no concept of “this is the French version of that page.” Your translation plugin owns that job.

Rank Math, by contrast, can handle hreflang automatically once your multilingual setup is in place. Either way, when a translation plugin and an SEO plugin both run, the SEO plugin usually manages the multilingual XML sitemap, so check that the hreflang feature is switched on rather than disabled.

Hreflang Manager Lite

If you are not running a full translation plugin, a lightweight option like Hreflang Manager lets you map alternate URLs by hand. You add each page’s language and region versions manually, and the plugin outputs the tags.

This suits smaller sites where you control a handful of URLs and do not want the overhead of WPML or Polylang. On larger sites the manual mapping becomes a chore, so weigh the trade-off before committing.

Shopify

Shopify does most of the work through Shopify Markets. Once you configure your markets and languages, it generates hreflang automatically from those settings and keeps them in sync with each page’s canonical URL. The automatic setting is on by default.

Because Shopify handles this natively, the main advice is restraint: do not add your own tags on top unless you have turned the automatic ones off, or you risk duplicates. Watch the location-based redirects too, since they can stop search engines reaching every regional version.

Wix

Wix Multilingual creates a separate, crawlable URL for every language version and generates hreflang across the versions once they are published and live, not while they sit in draft. Setup itself is quick.

The reality check is that Wix does not sync content between versions or manage currency for you, so treat it as a starting point rather than a complete solution. Confirm your hreflang tags are present on the live pages before you assume they are working.

Squarespace

Squarespace is the most limited of the major builders here, since its native support leans toward translation rather than full localisation. Robust hreflang usually comes through a third-party integration such as Weglot rather than a built-in setting.

If international SEO matters to your Squarespace site, plan for an add-on from the start. Relying on native features alone tends to leave gaps in your hreflang coverage.

Webflow

Webflow Localization, Webflow’s native multilingual feature, generates hreflang automatically once you configure your locales, including the x-default entry. Each locale gets its own URL, either a subdirectory or subdomain, with translated content and metadata.

The gap to know about is ecommerce: Webflow Localization does not localise Webflow Ecommerce product pages, so a store with translated products may need another approach. For content sites, the native feature covers the hreflang basics well.

Magento / Adobe Commerce

Magento, now Adobe Commerce, organises multilingual stores through a hierarchy of websites, stores, and store views. Each store view typically maps to a language or region. The platform does not emit hreflang cleanly out of the box, so most merchants add a dedicated hreflang extension or a Magento SEO extension to generate the tags across store views.

Set unique meta data per store view while you are at it, so your language versions do not carry identical titles and descriptions. Test each view once configured, since store-view scope is easy to misconfigure.

Custom / headless and JavaScript-rendered sites

On a custom or headless build you have full control, which means full responsibility. You generate the hreflang tags yourself, usually from your list of locales, and inject them server-side into each page’s head or into your sitemap.

Server-side rendering matters here. If your hreflang tags depend on JavaScript that runs only after the page loads, Google may not see them reliably, so render them into the initial HTML response wherever you can. A headless setup rewards the effort with clean, predictable output once the logic is right.

Common hreflang mistakes (and how to fix each)

Because hreflang fails silently, small errors can sit unnoticed for months while quietly wasting the effort. These are the ones that come up most, and how to fix each.

Missing self-referencing tags

The mistake: your pages list their alternates but forget to point at themselves. A common oversight, and it weakens the whole cluster.

The fix is to make sure every page’s tag set includes the page’s own URL, alongside all its alternates. The full set is identical on each version, self-reference included.

Non-reciprocal annotations (missing return tags)

The mistake: page A points to page B, but page B does not point back. Google ignores tags that are not reciprocated, so a one-way annotation does nothing.

The fix is to confirm both sides link to each other. If your Singapore page names the Malaysia page as an alternate, the Malaysia page must name the Singapore page in return.

Specifying a region without a language

The mistake: writing hreflang=”SG” when you mean English for Singapore. The first code is always the language, so a lone country code is invalid.

The fix is to lead with the language every time: en-SG, zh-SG, and so on. Remember be is read as Belarusian, not Belgium, so the language code is never optional.

Invalid or wrong ISO codes (en-UK vs en-GB, uk = Ukrainian)

The mistake: using codes that look right but are not. The most common is en-UK. The United Kingdom’s ISO country code is GB, not UK, and Google ignores reserved codes like UK. Separately, uk as a language code means Ukrainian.

The fix is to use en-GB for British English and check each code against the ISO 639-1 language list and ISO 3166-1 country list before you ship it.

Using relative instead of absolute URLs

The mistake: pointing hreflang at /sg/ instead of the full URL. Relative URLs are not valid in hreflang.

The fix is to use fully-qualified absolute URLs with the protocol included, as Google requires the transport method in every alternate: https://example.com/sg/, never /sg/ or //example.com/sg/.

Pointing to non-200 pages (404 / redirect / broken)

The mistake: hreflang tags that point at URLs which 404 or redirect elsewhere. Search engines waste crawl effort on those pairs and may ignore the signals.

The fix is to make sure every URL in your hreflang set returns a 200 status directly, with no redirect in between. When you move or retire a page, update the hreflang tags that referenced it.

Pointing to non-canonical or noindexed pages

The mistake: hreflang pointing at a URL whose canonical names a different page, or at a page marked noindex. The signals contradict each other, and Google leans on the canonical.

The fix is to point hreflang only at canonical, indexable URLs. Each regional page should canonicalise to itself, and no page in the cluster should carry a noindex tag.

Multiple pages / multiple language codes in conflict

The mistake: two different pages both claiming the same language and region, or one page carrying conflicting codes. Google cannot tell which version you mean.

The fix is to keep the mapping clean: one URL per language-region, and one language-region per URL. Audit for duplicates whenever you add or restructure locales.

Mixing implementation methods

The mistake: HTML tags on the pages and a different set in the sitemap, disagreeing with each other. Two sources of truth invite conflict.

The fix is to pick one method and use it consistently. If you are migrating from one to another, remove the old set rather than leaving both live.

Errors Google will forgive

Not every imperfection breaks hreflang. Google reads the language and region codes case-insensitively, so en-SG and en-sg are treated the same. The order of your tags does not matter either.

Small gaps in a large cluster are survivable too. Google still processes the pairs that do point to each other, so if maintaining a complete set across every language becomes hard, the ones that reciprocate correctly still work. Aim for complete, but know a single missing return tag will not sink the whole site.

How to audit and validate your hreflang implementation

You cannot rely on Google to flag hreflang errors for you, because it no longer reports them anywhere. Google deprecated the International Targeting report in 2022, hreflang error monitoring included. So auditing falls to you. Here is a practical order to work through.

Step 1: Crawl the site

Start with a crawler that reports hreflang, such as Screaming Frog or Sitebulb. A crawl gives you every hreflang tag on the site in one view, which is where problems become visible.

Look for pages missing tags, mismatched sets, and clusters where the counts do not line up. This first pass usually surfaces the bulk of the issues.

Step 2: Check reciprocity

With the crawl data in hand, confirm that every annotation is returned. For each pair, page A should name page B and page B should name page A.

Most hreflang-aware crawlers flag non-reciprocal tags directly, so sort by that report. Missing return links are the single most common breakage, so this step earns its place.

Step 3: Validate ISO language/region codes

Check every code against the ISO 639-1 language and ISO 3166-1 Alpha 2 country standards. Watch for the classic slips: en-UK instead of en-GB, a region code where a language should be, or a typo that happens to be a real but wrong code.

A validator such as the Merkle hreflang testing tool, which Google itself points to, checks a single live page’s tags quickly. Run your key templates through it.

Step 4: Cross-reference canonical tags

For each regional page, confirm the canonical points to itself, not to another version. A canonical that names a different page will override your hreflang and undo the work.

This is the check people skip, and it is often the reason a technically correct hreflang setup still fails. Line up the canonical and hreflang for each page and make sure they agree.

Step 5: Check HTTP status codes (all 200)

Verify that every URL in your hreflang sets returns a 200 directly. No 404s, no redirects, no soft errors.

Your crawler reports status codes alongside the tags, so filter for anything that is not a clean 200 and fix the tag or the target. Redirected hreflang targets are easy to miss after a site restructure.

Step 6: Verify in Google Search Console

Since Search Console no longer lists hreflang errors, you use it for symptoms rather than diagnosis. Check the Page Indexing report for regional pages dropping out of the index, and use the URL Inspection tool to see which version Google treats as canonical.

Where Google has consolidated near-identical variants onto one canonical, your per-market numbers report against that canonical. Flat regional performance can therefore reflect consolidation, which is itself a sign your hreflang may not be doing its job.

How often to audit

Audit hreflang after any structural change: a migration, a redesign, a new market, or a CMS switch. Those are the moments tags break.

Beyond that, a periodic check every quarter or so catches drift on a stable site. If you publish and restructure often, lean towards monthly. The goal is to catch a broken return tag before it costs you a quarter of visibility in a market.

When you should, and shouldn’t, use hreflang

Hreflang earns its keep when you have the same or similar content aimed at different languages or regions. Multilingual sites, regional variants of one language like en-SG and en-AU, and localised pricing or legal pages all qualify. If your audience spans languages or countries, you probably need it.

You do not need hreflang if your site serves one language in one country with no regional variants. A single English site aimed only at Singapore gains nothing from it. Adding hreflang to a site that does not have alternate versions just creates maintenance with no benefit.

One caution worth stating: hreflang is not a fix for thin or auto-translated content. If your “localised” pages are machine-translated with no real adaptation, hreflang will not save them, and Google may still see little value in the duplicates.

The homepage-first tip

If a full-site rollout feels daunting, start with your homepage. It is usually the most-linked, highest-traffic page and the one most likely to be surfaced across regions, so it gives you the biggest early return.

Get the homepage cluster correct across all your language and region versions first, confirm it validates, then extend the same pattern to your key landing pages and work outward. A staged rollout beats a rushed sitewide one that breaks reciprocity everywhere at once.

Hreflang for Singapore and Southeast Asian businesses

Singapore is one of the trickier places to get hreflang right, and one of the most rewarding. The country is multilingual, sits beside several distinct national markets, and hosts regional headquarters that serve the whole of Southeast Asia. Each of those facts shapes how you set up your tags.

Bilingual Singapore sites (English + Mandarin)

Many Singapore sites run in both English and Mandarin, which is a clean case for hreflang. You pair an en-SG version with a zh-SG version, each carrying self-referencing and reciprocal tags, so Google serves the right language to each reader.

Use zh-SG rather than a Traditional-script code, since Singapore uses Simplified Chinese. Pointing your Mandarin page at zh-TW would signal Traditional Chinese for Taiwan, which is the wrong script and the wrong market for a Singapore audience.

A Singapore business expanding into Malaysia and Indonesia

The common regional pattern is a Singapore business moving into Malaysia and Indonesia next. Here your clusters grow: en-SG and en-MY for the two English markets, then id-ID once you add Bahasa Indonesia for Indonesia.

The en-SG and en-MY pair is the one to watch. The two pages read almost identically in English, differing mainly in currency, pricing, and local detail, which is exactly the near-duplicate case hreflang exists to resolve. Without it, Google may keep just one and show Malaysian visitors your Singapore page, or the reverse.

Financial services and MAS-compliant regional content

Regulated industries add another reason to separate regional versions. In Singapore, financial services fall under the Monetary Authority of Singapore, and its guidelines on digital advertising hold institutions responsible for the content shown to their market.

That often means a Singapore financial page carries different disclaimers, product terms, and risk statements from its regional siblings. Hreflang keeps those market-specific versions correctly targeted, so Singapore users see the Singapore-compliant page rather than a Malaysian or global one. The content differences are real and deliberate, which is precisely when regional hreflang matters most.

ccTLDs vs. subdirectories for multi-region SG sites

Your URL structure feeds into all of this. A country-code domain like .sg sends a strong country signal to Google on its own, but you have to buy and maintain a separate domain for every market, which adds up fast across the region.

Subdirectories under one domain, like example.com/sg/ and example.com/my/, keep your authority consolidated on a single site and are simpler to run. For most Singapore businesses expanding regionally, a single domain with per-market subdirectories plus correct hreflang tends to be the more manageable choice. Whichever structure you pick, hreflang still does the language and region targeting; the URL structure just reinforces the geographic signal.

Advanced considerations

Once the basics are solid, a few harder cases come up on larger or older sites. Here is how to handle the common ones.

Pages without an equivalent in every language

Not every page exists in every language, and that is fine. If your Singapore site has a local promotion with no Malaysian equivalent, you simply do not include an en-MY tag for that page.

Only link the versions that genuinely exist. Pointing hreflang at a page you have not built, or at a near-empty placeholder, causes more problems than it solves. Where a user’s language has no match, your x-default page catches them.

Hreflang for paginated content

On paginated series, keep hreflang within the same page position across languages. Page two of your English listing should point to page two of your German listing, not back to page one.

Keep each paginated URL’s hreflang set pointing at the equivalent position in every other language. Mixing positions sends users to the wrong point in a sequence and muddies the signal.

Keeping hreflang working over time (maintenance process)

Hreflang is not a set-and-forget job, because it breaks whenever URLs change. A page you delete, redirect, or rename can leave broken return tags scattered across every language that referenced it.

Build a simple habit: whenever you add, move, or retire a page, update its hreflang cluster in the same task. Re-crawl after any migration or redesign, and run a periodic validation so a broken tag surfaces in weeks rather than after a market’s traffic has already slipped.

Tools for implementing and checking hreflang

You do not have to write and audit hreflang by hand. A few tools cover generation and validation, and it is worth knowing which does what.

Hreflang tag generators

Generators build the tag markup for you from a list of URLs and locales, which cuts down on syntax mistakes. Google itself points to Aleyda Solis’s hreflang generator for creating and modifying tags.

These help most when you are setting up a cluster for the first time or adding a new market. You still have to place the output correctly and confirm reciprocity, but the generator removes a common source of typos.

Hreflang checkers and validators

Validators test tags on live pages and report what is missing or malformed. Google names the Merkle hreflang testing tool for checking a single live page, and site-wide crawlers like Screaming Frog and Sitebulb validate at scale.

Run a validator after every change and on a regular schedule. Since Google no longer reports hreflang errors in Search Console, these tools are how you catch a problem before it costs you visibility.

An embedded hreflang generator/checker (optional on-page tool)

If you publish this guide on your own site, consider embedding a small generator or checker directly on the page. A reader enters their URLs and locales and gets ready-to-paste tags, or pastes a live URL and sees whether its tags validate.

An on-page tool gives visitors a reason to stay and return, and it pairs naturally with a guide like this. It is optional, but interactive tools tend to attract links and repeat visits that static content does not.

Hreflang in AI Search (AI Overviews and LLM answers)

AI Overviews and answer engines have changed what international SEO has to account for. Traditional search routes a user to the best page, and hreflang tells it which regional version to route to. AI search works differently: it synthesises an answer across sources rather than sending the user to one URL.

That shift has a practical consequence. As Search Engine Land put it in its coverage of AI search and market relevance, hreflang has always been a switcher, not a booster. It picks the right existing version; it never made your content more likely to be chosen in the first place. AI answer engines, which compare sources and build a response, lean less on that switching signal.

So does hreflang still matter in 2026? For classic search results, yes, its job is unchanged, and getting the right regional page in front of the right searcher still depends on it. For AI answers, the emphasis moves towards genuinely market-specific content: local pricing, local regulations, local detail that shows a page was built for a market rather than translated into its language. Hreflang remains worth implementing correctly, but treat it as one signal among several rather than the whole international strategy.

The takeaway for Singapore and regional businesses is steady. Keep your hreflang clean so traditional search serves the right version, and invest in real localisation so AI systems recognise your content as the relevant answer for each market. The two efforts reinforce each other.

FAQ

What is hreflang used for?

Hreflang tells search engines which language or regional version of a page to show which users. If you run English pages for Singapore and Australia, or English and Mandarin versions of one site, hreflang points each searcher to the version built for them. It also stops Google treating near-identical regional pages as duplicates and dropping one.

How do you pronounce “hreflang”?

You say it “H-ref-lang”. The name comes from two HTML attributes joined together: href, the link reference, and lang, the language. There is no silent letter or hidden trick to it.

How do I add hreflang tags?

You add hreflang in one of three ways: as <link> tags in the <head> of each page, as <xhtml:link> entries in your XML sitemap, or as HTTP headers. Each page must list every language version including itself, and every version must point back reciprocally. Pick one method and apply it consistently rather than mixing them.

How do I check my hreflang tags?

Use a validator on a live page, such as the Merkle hreflang testing tool that Google points to, or crawl the whole site with Screaming Frog or Sitebulb. Check that tags are reciprocal, that codes are valid, that URLs return a 200 status, and that each page’s canonical points to itself. Google no longer reports hreflang errors in Search Console, so this checking is on you.

Does hreflang help with Bing or only Google?

Hreflang is a Google signal. Bing does not use it and relies on the content-language meta tag and its own signals instead. If Bing traffic matters to you, plan for its approach separately.

Is hreflang a ranking factor?

Not directly. Hreflang does not lift your rankings; it directs the right version to the right audience and keeps regional variants from being treated as duplicates. The benefit shows up as the correct page reaching the correct market, not as a higher position on its own.

Final thoughts

Hreflang is one of those technical details that stays invisible when it works and quietly costs you a market when it does not. Get it right and each of your language and regional versions reaches the audience it was built for, near-duplicate pages stop competing with each other, and searchers land on the version that fits them. Get it wrong and Google makes those calls for you, with no error message to explain the lost visibility.

The core is simple enough to hold in your head: every version links to itself and to all the others, the links reciprocate, the URLs are absolute, and the codes are valid. Layer on clean canonicals, a sensible URL structure, and regular audits, and you have an implementation that holds up as your site grows into new markets.