Blog/Multilingual SEO

Self-Referencing Hreflang: Why Each Page Lists Itself

AP
Allan Perrottet
8 min read · Updated October 9, 2026 · Written with the Content Engine
Cyan and purple cube nodes linked in a network diagram

A self-referencing hreflang annotation is the line in a page's hreflang set that points to the page itself. If your German pricing page lists English, French and German versions, the German line pointing at the German URL is the self-reference. Google's documentation is explicit: "Each language version must list itself as well as all other language versions." So yes, you need it.

The practical rule is that every page in a language cluster carries the identical set of hreflang lines, including its own. If you copy one block of annotations onto every version, the self-reference takes care of itself. Problems start when templates build the list by excluding the current page, which is a common shortcut in custom code and some plugins.

What is a self-referencing hreflang tag?

It is an ordinary hreflang annotation whose URL is the page it sits on.

Take a site with three versions of one article. On https://example.com/en/guide, the head contains:

<link rel="alternate" hreflang="en" href="https://example.com/en/guide" />
<link rel="alternate" hreflang="de" href="https://example.com/de/guide" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/guide" />

The first line is the self-reference. On the German page, the block is exactly the same, and the second line becomes the self-reference. Google describes the HTML method this way: include "one link for each page variant including itself," and "the set of links is identical for every version of the page."

That last sentence is the useful mental model. You are not writing three different lists. You are writing one list and pasting it on three pages. For the wider picture of how clusters, return links and language codes fit together, see the hreflang tags guide.

Is self-referencing hreflang required by Google?

Google's current guidelines say it is required for every method.

The localized versions documentation lists, under guidelines for all methods, that each language version "must list itself as well as all other language versions." The sitemap rules repeat it: every <url> entry must have child links listing every alternate version "including itself." The HTTP header rules say the same, "including the requested version."

You will find older articles and some crawler documentation describing the self-reference as optional or "good practice." Treat Google's own page as the source of record. Even if Google tolerates its absence in some cases, there is no upside to leaving it out, and adding it costs one line.

Why the self-reference matters in practice

It makes each page's language claim explicit and keeps the cluster consistent.

Without a self-reference, a page tells Google which other pages are its alternates but never states which language or region it serves itself. Google then has to infer that from the reciprocal links on the other pages. That inference is fragile: if one sibling is missing, broken or misconfigured, the page loses its only declaration of who it is for.

The self-reference also exposes canonical mistakes early. The URL in a page's self-referencing hreflang line should match the URL in its canonical tag exactly. When they differ, for example one with a trailing slash and one without, or one on http and one on https, crawlers flag it and you find the problem before Google ignores the cluster. Within a broader international SEO strategy, the hreflang and canonical relationship is one of the most common sources of broken setups.

Self-referencing hreflang in HTML, sitemaps and headers

The self-reference rule is the same in all three implementation methods; only the syntax changes.

Method Where the self-reference goes What it looks like
HTML <link> tags In the <head> of each page, inside the full list <link rel="alternate" hreflang="de" href="https://example.com/de/guide" /> on the German page
XML sitemap As an <xhtml:link> child of the page's own <url> entry <loc> and one <xhtml:link> share the same URL
HTTP Link: header As one entry in the header returned by that URL <https://example.com/file.pdf>; rel="alternate"; hreflang="en" returned by that PDF

In a sitemap, the self-reference is easy to spot: the URL in <loc> should appear again as one of its own <xhtml:link> children. Google's example sitemap shows exactly that pattern, with each of three URLs repeating all three links. Google also notes that these child elements don't count toward the sitemap URL limit.

Pick one method and stay with it. Google says the three are equivalent and there is no benefit in using all of them at once, only more to maintain.

Common mistakes with the self-reference

Most self-reference bugs come from templates, not from people typing tags by hand.

  • Excluding the current page from the loop. A template iterates over "other languages" instead of "all languages." Fix the loop so it includes the current locale.
  • Self-reference URL differs from the canonical. Trailing slashes, uppercase letters, query parameters or http instead of https. The self-referencing URL should be the exact canonical URL.
  • Relative URLs. href="/de/guide" is not valid. Google requires fully qualified URLs, including the protocol.
  • Wrong language code on the self-reference. A Swiss German page labelling itself hreflang="ch" to mean Switzerland, when ch is actually the ISO 639-1 code for Chamorro. Language comes first (de-CH), and a region code alone is invalid.
  • Self-reference on a redirecting or noindexed URL. If the page you annotate redirects, the annotation is pointing at something that is not the final page.
  • Different lists on different pages. The English page lists four languages, the French page lists three. Every page in the cluster should carry the same set.

One opinionated note: don't hand-maintain hreflang blocks in individual page templates if you have more than a handful of pages. Generate them from one source of truth, such as a translations table or a sitemap generator, so the self-reference can never be dropped by a copy-paste error. This matters most during a redesign or site migration, when URLs change and stale self-references are easy to miss.

How to check your self-references

Check a sample of pages by hand, then crawl the whole site.

For a single page, view the source (not the rendered DOM in developer tools, unless your tags are injected by JavaScript), find the hreflang block and confirm that one line points at the current URL, matches the canonical tag and uses the right language code. A free single-page tester, such as the hreflang tags testing tool that Google links from its own documentation, will report missing self-references and return links.

For the whole site, a desktop crawler with an hreflang report will list every page missing its self-reference. Screaming Frog's SEO Spider has a "Missing Self Reference" filter in its hreflang tab, and its free version crawls up to 500 URLs, which covers most small multilingual sites.

Frequently Asked Questions

Do I need a self-referencing hreflang tag?

Yes. Google's guidelines for all hreflang methods state that each language version must list itself as well as all other language versions. In practice, every page in a cluster carries the same full list of hreflang lines, and one of those lines points at the page itself. Leaving it out adds risk with no benefit.

Should the self-referencing hreflang URL match the canonical URL?

Yes, exactly. The URL in the self-referencing hreflang line should be the same string as the page's canonical URL, including protocol, subdomain, trailing slash and case. Mismatches are a common reason crawlers report hreflang errors and a common cause of Google ignoring annotations, because hreflang should only reference canonical, indexable URLs.

Does the self-reference count as a return link?

Effectively, yes. Hreflang works by pages confirming each other: when page A lists page B and page B lists page A, the relationship is confirmed. The self-reference is the part of each page's list that declares its own language. With an identical list on every page, return links and self-references are both covered automatically.

Is self-referencing hreflang needed in an XML sitemap?

Yes. Google's sitemap rules say each <url> element must include child <xhtml:link> entries for every alternate version, including itself. So the URL in <loc> appears again as one of its own children. With three language versions, each of the three entries has three identical child links.

What happens if a page has hreflang but no self-reference?

The page stops declaring its own language and region, and Google has to infer it from the sibling pages that point to it. If any sibling is broken, that inference fails. It also breaks Google's stated rule for all methods, so you are relying on Google tolerating an incomplete setup rather than following the documented one.

Get the self-reference right once

Self-referencing hreflang is the simplest rule in international SEO: one identical list of every language version on every page, including the page itself, with each URL matching its canonical exactly. Generate the list from one source, check a few pages by hand, and crawl the site after any URL change.

If you'd rather not maintain hreflang blocks at all, Agent Solo's Growth plan publishes each article in two languages with hreflang, self-references and canonicals generated for you, and Scale supports up to five languages. Request early access to try it on your second market.

Keep reading

Next for the solo operator