A bilingual page can be indexed and still rank in the wrong language. The English URL shows for a Traditional Chinese query, or both URLs compete and neither holds a stable position. Hreflang is the HTML signal that tells Google which URL belongs to which language and region. When the tags are missing, one-way, or pointed at a URL that should not rank, the SEO issue is language targeting. The GEO issue is an AI answer that quotes the version the reader did not ask for.
This guide follows common SEO and GEO issues that hurt rankings. Use duplicate content and keyword cannibalization when two URLs in the same language compete, or when a canonical is collapsing a real translation into one language. Use the title tag guide when the pair is annotated correctly but both pages share one title. Use this one when the annotations themselves are wrong: missing return tags, bad language codes, or a cluster that names a redirect, a 404, or the other language’s canonical.
What fails in a language pair
| Fault | What Google sees | SEO issue | GEO issue |
|---|---|---|---|
| No hreflang | Two URLs, no language link | English and Chinese compete, or the wrong one ranks | Retrieval follows links, not a language hint |
| One-way tags | A points at B, B does not point back | The cluster is ignored | The unused language URL stays undiscovered |
| Wrong code | A Traditional Chinese page marked zh-CN or zh-Hans | The page is offered to the wrong readers | The citation looks like the wrong market |
| Hreflang to a redirect or 404 | The alternate is not a page | The cluster is dropped | The fetch stops before the translation |
| Canonical across languages | Chinese canonical points at English | One language leaves the index | Answers in that language lose the URL |
html lang disagrees with the copy | The document claims a language it is not written in | A weaker language signal | A crawler that trusts lang stores the wrong label |
Hreflang is a hint, not a command. A broken cluster does not trigger a sitewide penalty. Google drops the hint and chooses a URL on its own. That choice is the ranking problem.
Return tags, self-references, and codes
Each language URL should list the whole cluster: itself, the other language, and one x-default. The return tag is the other page listing this page back. If the English page references Chinese and the Chinese page does not reference English, Google can ignore the pair. A missing self-reference has the same effect. The page that forgets to name itself is not a member of the cluster.
Use absolute URLs on the host you want indexed. A relative path, an http:// URL, or a host that redirects to www makes the alternate something other than the canonical. One permanent redirect is enough for visitors. It is not a valid hreflang target. The internal links and redirects guide covers chains. Here, the rule is narrower: the href in the alternate link must be the final 200 URL.
Language codes are ISO 639-1. An optional region is ISO 3166-1 Alpha-2. For a Hong Kong site, pick one pair and use it on every template:
en-HKwithzh-HKsays both versions are for Hong Kong.enwithzh-Hantsays English with no region, and Traditional Chinese with no region.zh-Hant-HKis Traditional Chinese for Hong Kong, when you need the script and the region together.
The SEO issue is mixing these. A Traditional Chinese page marked zh-CN or zh-Hans is offered as Simplified Chinese. A Hong Kong page marked only zh-TW is aimed at Taiwan. en-UK is not a region code. en-GB is. x-default is the fallback when no language matches, usually the English URL or a language chooser. It must be one stable canonical, the same URL on every page in the cluster, and it must return 200.
Canonicals and the first HTML response
Hreflang does not replace a canonical. Each language that should rank needs a canonical to itself. Pointing the Chinese canonical at the English URL tells Google the Chinese URL is a duplicate. The translation then drops out of results, and out of AI answers that depend on an indexed Chinese page. Keep that collapse for technical duplicates inside one language, which is the cannibalization guide.
The alternate URL has to be indexable. A noindex, a robots block, or a sitemap that omits the URL wins over hreflang. The indexing and crawl guide covers those coverage states. Hreflang cannot index a page Google is not allowed to store.
Put the cluster in the first HTML response, as link elements. A tag that appears only after JavaScript runs is invisible to crawlers that do not execute the script. Many AI crawlers are in that group. Google renders some pages, but the safe version is the raw HTML.
If an XML sitemap also lists the cluster, the two copies must match. Conflicting codes, or a sitemap that still names last year’s slug, are a second SEO issue on top of the HTML. Prefer one source. A template that emits the tags is easier to keep aligned with the page that was just published.
Search Console no longer has a dedicated hreflang report. Check the tags with a crawl, then use URL Inspection on both URLs. You want the user-declared canonical, Google’s selected canonical, and the indexed URL to be the same address the hreflang names.
How language mismatches change AI citations
Generative engine optimization needs the passage in the language of the prompt. How to rank in AI search describes that passage. Hreflang does not route ChatGPT, Perplexity, or Gemini to it. Those systems cite the URL they fetched. They do not switch URLs because a link rel="alternate" says another language exists.
That is why a correct Google ranking and a wrong AI citation can happen together. Google shows the Chinese URL for a Chinese query because the cluster is valid. An answer engine that already knew the English URL, or that followed only English links, quotes the English page for a Traditional Chinese prompt. The answer looks off, and the brand looks less local.
The GEO fixes sit on the page, not in the tag:
- The Chinese URL returns 200 and the first HTML is Traditional Chinese.
html langmatches that copy.lang="en"on a Chinese article teaches a crawler the wrong label.- Same-language internal links make the URL reachable without hreflang. A Chinese hub that only links to English leaves the translation as an orphan. Orphan pages are in the internal links guide.
- The title and the first paragraph answer the query in that language. A shared English title is the title tag guide.
- The translation is a real page, not a thin machine pass. Thin pages are the content guide.
x-default does not choose which page an AI system quotes. It only names a fallback for searchers whose language is outside the cluster.
A practical order of fixes
- List every indexable URL with the language of the visible copy, the
html langvalue, and the hreflang code. Treat a mismatch as a defect. - Confirm both URLs in the pair return 200, are self-canonical, and are not
noindex. - Emit the full cluster in the first HTML: self, the other language, and one
x-default, using absolutehttpsURLs on the live host. - Confirm the return tags. A one-way annotation is the same as none.
- If a sitemap repeats the cluster, make it identical or remove it.
- Give each language its own title and opening answer.
Then test one English query and one Traditional Chinese query. The Google result should be the matching URL. Test the same questions as prompts. The cited URL should be the matching language only when that URL is the one the crawler can fetch.
Questions teams ask
Do hreflang errors cause a Google penalty?
No. Google ignores a cluster it cannot trust. Rankings move because the wrong URL is left to compete, or because one language is canonicalised away. Repair the annotations. Do not add more tags to “balance” a broken pair.
Should a Hong Kong page use zh-HK or zh-Hant?
Use one code everywhere. zh-HK means Chinese for Hong Kong. zh-Hant means Traditional Chinese without a region. zh-Hant-HK means both. The error is mixing them, or marking a Traditional Chinese page as zh-CN or zh-Hans.
Can hreflang fix a page that is not indexed?
No. The alternate has to return 200, stay out of robots blocks, and canonicalise to itself. A tag cannot override noindex. Start with the indexing guide when Search Console says the translation was excluded.
Will hreflang make an AI answer cite the Chinese page?
Only Google is being asked to swap URLs. An AI answer cites the page its crawler fetched. Put the Chinese answer on the Chinese URL, in the first HTML, and link to it from Chinese pages. Hreflang keeps the English URL from being the one Google ranks for that query.
Should the Chinese canonical point at the English page?
Not when the Chinese page is a real translation that should rank. A cross-language canonical removes one language from results. Use hreflang to connect them, and a self-canonical on each.
What to fix this month
- Crawl both languages and list one-way tags, missing self tags, and codes that do not match the copy.
- Repoint any hreflang that lands on a redirect, a 404, or a URL whose canonical is somewhere else.
- Serve the cluster in the first HTML, on absolute live-host URLs.
- Align
html langwith the hreflang code on each template. - Re-check one query and one prompt in each language, and note which URL was cited.
Search uses the cluster to choose a language. Answer engines use the page they can actually fetch. Hreflang errors are how a bilingual site ranks the wrong version, and how the right version never becomes the citation.