Hreflang and international targeting

Published

Hreflang tells search engines which language or region version of a page to serve to which searcher. It is a signal, not a directive: engines weigh it, and can discard it entirely when the annotations break, which happens in a handful of specific, well-documented ways. Google and Bing read it, so AI Overviews, Gemini and Copilot inherit it; ChatGPT, Claude and Perplexity document nothing and cited English URLs in late-2025 testing.

What hreflang actually is

Hreflang is an annotation that declares the localized versions of a page so an engine can serve the right one. Google states its purpose plainly: to "help Google Search point users to the most appropriate version of your page by language or region" (Google's localized-versions doc). In its most common form it is a set of <link> tags in the page's <head>, one per version plus a fallback:

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

What hreflang does not do matters just as much. It does not set or detect the language of a page: "Google doesn't use hreflang or the HTML lang attribute to detect the language of a page; instead, we use algorithms to determine the language." Hreflang declares which versions exist; the engine works out what language each one is written in on its own. It is not a ranking lever either. A correct hreflang set does not push a page higher in results; it routes the right version of a page you already rank with to the right audience.

There are three equivalent ways to publish the annotations: the HTML <link> tags above, an HTTP Link: header (the option for non-HTML files such as PDFs), or an XML sitemap using xhtml:link entries. "The three methods are equivalent from Google's perspective," so pick the one that fits your stack and use it alone. Publishing two methods at once doubles the surface for contradictions without adding anything.

Do AI crawlers use hreflang?

The short answer: hreflang is a Google-and-Bing mechanism, and any reach into AI features is transitive, through whichever traditional index that feature is built on. Google documents hreflang for Search, and says its generative AI features are "rooted in our core Search ranking and quality systems" (Google's AI optimization guide). Any hreflang benefit in AI Overviews, AI Mode, or Gemini is therefore indirect, through Google Search, rather than a separately documented AI behavior. Microsoft Copilot draws on Bing, which reads the annotation but trusts it less than other evidence; Fabrice Canel of Microsoft Bing said in September 2020 that "hreflang is indeed a far weaker signal than content-language at Bing" (Search Engine Roundtable). Bing's webmaster blog still recommended hreflang for language and regional targeting in December 2025, without revisiting how heavily it weighs the annotation (Bing's webmaster blog). Glenn Gabe of GSQi, who tested this across the AI platforms in late 2025, reads his own results as hreflang "should be helping there" (Glenn Gabe's multilingual test); treat that as a reasonable expectation rather than a guarantee about which locale an AI answer will cite.

The standalone engines are a different story. ChatGPT, Perplexity, and Claude reach the live web with their own crawlers and fetchers, and each vendor names them separately by role: the crawler that builds an index is not the fetcher that retrieves a page when a person asks. OpenAI's crawler docs cover GPTBot for training, OAI-SearchBot for its search index and ChatGPT-User for fetches a person triggers. Anthropic documents ClaudeBot, Claude-SearchBot and Claude-User on the same split. Perplexity documents PerplexityBot and Perplexity-User. None of that documentation mentions hreflang or locale handling at all; the pages cover robots.txt rules and IP ranges and stop there (OpenAI's crawler docs).

The test itself points the same way. In December 2025 Gabe ran multilingual queries in French, Italian, and Spanish against sites with hreflang in place. ChatGPT, Perplexity, and Claude answered in the language of the query but, in most of his tests, cited the US English URL. Copilot returned the correct localized URL, and Gemini, though inconsistent about showing sources, eventually did too, which fits: they lean on Bing and Google. Gabe's own conclusion was that "we have no idea if the other AI Search platforms support hreflang at all," and by their behavior in the test, they likely don't. The test cannot prove that those engines ignore hreflang; it shows only that hreflang was not a reliable locale-routing lever in late 2025, and AI search changes fast enough that the picture can shift.

There is no documented lever for those engines. What is left is the page itself: genuinely translated content, each version independently discoverable and crawlable, a content-language value that matches what is actually on the page, and internal links that keep each language version pointing within its own language. That is a practical fallback, not a published engine rule. An engine that fetches your French page and finds French content can cite it correctly without ever reading an annotation. Hreflang still earns its place because of the Google and Bing chain; it is just not the whole answer off those indexes.

Getting hreflang right

Hreflang fails quietly. Nothing looks different in the browser and nothing errors; the engine simply discards annotations it cannot verify, which also breaks the transitive route into AI Overviews, AI Mode, Gemini, and Copilot, since those inherit hreflang from the Google and Bing indexes they run on. Google's requirements are specific (Google's hreflang documentation), and they come down to five rules.

Every version lists itself

"Each language version must list itself as well as all other language versions." The self-referencing entry is the easy one to drop, because it feels redundant to point a page at its own URL. It isn't: a set that only lists the alternates is incomplete.

Return links are mandatory

The set must be reciprocal. "If two pages don't both point to each other, the tags will be ignored. This is so that someone on another site can't arbitrarily create a tag naming itself as an alternative version of one of your pages." The anti-spoofing rationale is why there is no partial credit: a missing return link doesn't weaken the pair, it voids it.

URLs must be absolute

"Alternate URLs must be fully-qualified, including the transport method (http/https), so: https://example.com/foo, not //example.com/foo or /foo." Advice in the field still disagrees on this; Google's current documentation is explicit. Absolute URLs are also the safe default for any other crawler that encounters the markup, since nothing else is guaranteed to resolve relative paths the way you intend.

Codes must be valid

The language code comes from ISO 639-1, the optional region code from ISO 3166-1 Alpha 2, and an optional script code from ISO 15924 (the ISO 15924 registry), as in zh-Hant for Traditional Chinese and zh-Hans for Simplified. Two traps recur. First, "You can't specify the country code by itself": hreflang="be" does not target Belgium, because "be is the Belarusian language code". Second, plausible-looking regions can be silent no-ops: "using EU, UN, or UK in hreflang annotations doesn't have an effect on Google Search". The United Kingdom's region code is GB, so English for the UK is en-GB.

x-default is the fallback

"The reserved x-default value is used when no other language/region matches the user's browser setting." Point it at your language selector or a sensible global page, use one per set, and note that it takes no language code of its own.

Hreflang and canonical must agree

Hreflang and canonical answer different questions: canonical says which URL is the master copy of a page, hreflang says which localized versions of it exist. The correct shape is simple. Each localized page carries a self-referencing canonical, because each translation is its own master, and the hreflang set cross-references the whole cluster. The classic failure is pointing hreflang at a URL whose canonical points somewhere else: the two signals disagree, and Google may pick a different canonical than the one your cluster names.

Google's guidance is explicit (Google's canonical documentation): "If you're using hreflang elements, make sure to specify a canonical page in the same language, or the best possible substitute language if a canonical page doesn't exist for the same language." And keep the two annotations on separate lines, because a merged tag is discarded: "rel="canonical" annotations with hreflang, lang, media, and type attributes are not used for canonicalization."

A valid hreflang cluster can also reinforce canonical selection: "for canonicalization purposes Google prefers URLs that are part of hreflang clusters."

Real translations do not create a duplicate-content problem, since "Localized versions of a page are only considered duplicates if the main content of the page remains untranslated" (Google's international docs). The takeaway for an international site: write real translations, publish one hreflang method, keep every canonical self-referencing within its own language, and rely on Google and Bing being the layer that AI Overviews, AI Mode, Gemini, and Copilot are built on. For ChatGPT, Perplexity, and Claude there is no such layer, so those same crawlable, clearly translated pages are what give the right version a chance to be cited.

FAQ

Does ChatGPT or Perplexity use hreflang?

Neither documents any support, and both cited English URLs for most non-English queries in late-2025 testing. AI Overviews, AI Mode, Gemini, and Copilot are different: they inherit hreflang from the Google and Bing indexes they run on.

Does hreflang tell Google what language my page is in?

No. Google determines a page's language algorithmically from its content; hreflang only declares which localized versions exist and at which URLs.

Do hreflang URLs need to be absolute?

Yes. Every alternate URL needs the full scheme and host; protocol-relative and path-only URLs are not accepted.

What is x-default?

The version served when none of your declared languages or regions matches the user, usually a language selector or global homepage. Use exactly one per set; it takes no language code.

What is a self-referencing hreflang, and do I need return links?

A self-referencing hreflang is the entry where a page lists its own URL inside its own set, and yes, return links are required: every pair of alternates must point back at each other or the annotations are discarded.

See if AI can read, trust, and cite your site

Add to Chrome

Free · No signup · Every issue links back to a guide like this one