Blog

What is Hreflang: A Complete Guide with Examples of Errors

In this article: what hreflang is, why it is needed, how to correctly specify attributes for different URL structures, common errors, and ways to check them.
A multilingual website without hreflang is a website that leaves it up to Google to decide which version to show to each audience. Google often makes mistakes, and as a result, only one page will appear in search. Properly configured hreflang removes this uncertainty.
This is because if pages in different languages contain the same content, Google will simply see duplication and will only show one of them in search. Hreflang meta tags allow you to specify the language and region for each page, ensuring that the user sees the correct version.

What Is Hreflang And Why Is It Needed

hreflang is an HTML attribute that tells Google which pages are translations of each other, and for which language and region each version is intended.
Without hreflang, Google may:
  • Show the Russian version to users from Germany
  • Consider translations as duplicate content
  • Do not show language versions in corresponding regional search results
With hreflang, Google knows: this is the German page for Germany, this is the French page for France, this is the English page for everyone else. It allows you to specify different versions for the same language but different regions. You can also specify multiple languages for one country, for example, English and French for Canada (en-CA and fr-CA). This is necessary for proper localization: for example, in Canada, even in French, prices will be in Canadian dollars, whereas in France they will be in euros. Such a distinction is critically important for the correct display of content to users.

How Hreflang Looks

The attribute is added to the <head> section of each page:
<link rel="alternate" hreflang="en" href="https://mysite.com/en/about/" />
<link rel="alternate" hreflang="de" href="https://mysite.com/de/about/" />
Key parts:
  • rel="alternate" — indicates that this is an alternate version
  • hreflang="ru" — language code according to ISO 639-1
  • href — full URL of the version (including protocol and domain)
  • hreflang="x-default" — default version if no other matches

Language and Region Codes

Attribute format: language or language-COUNTRY.
Language only: hreflang="en" — for all English-speaking users regardless of country.
Language + country: hreflang="en-US" — for English in the USA, hreflang="en-GB" — for the UK.
When to use country: if you have different content for the same language in different countries. For example, prices in dollars for the USA and in pounds for the UK — these are different versions and different hreflangs.
If the content is the same for all speakers of a language, only the language code without the country is sufficient.

Reciprocity: The Most Frequently Violated Rule

Each page must contain hreflang attributes for all language versions, including itself. This is a critical rule: if you have three languages, each page in each of them must link to all three versions. This creates a closed ecosystem, allowing Google to see all variants and understand their interrelationships.
Correct: the Russian page has links to the German, English, and to itself. The German page has links to the Russian, English, and to itself. The English page has links to the Russian, German, and to itself.
Incorrect: the Russian and German versions have links to the English version, but the English version does not have reciprocal links. Google considers such an implementation incorrect and may ignore it.
<!-- Example of a correct hreflang set -->
<link rel="alternate" hreflang="de" href="https://mysite.com/de/about/" />
<link rel="alternate" hreflang="ru" href="https://mysite.com/ru/about/" />
<link rel="alternate" hreflang="en" href="https://mysite.com/en/about/" />
<link rel="alternate" hreflang="x-default" href="https://mysite.com/en/about/" />

x-default: The Version for Others

hreflang="x-default" is a special value for a page that is shown to users when no other version is suitable. This is usually the main language version of the site (typically Russian or English).
If you have Russian and Kazakh versions without an English one, x-default can be specified for one of them — or not used at all. This is not a mandatory attribute, but it is recommended by Google.

Implementation Options

In addition to tags in the <head>, hreflang can be specified:
Via HTTP headers. For PDFs and other non-HTML resources, this is the only option.
Via sitemap. Instead of attributes on each page — one sitemap, in which variants of the same page in other languages are added for each link. Convenient for large sites.
All three options are equivalent for Google — choose the one that is easier to maintain. By the way, Multify automatically adds the necessary meta tags to both the HTML code of the pages and the sitemap.
Don't want to manually specify hreflang?
Multify automatically generates hreflang for all pages when any language is added.
Try a free demo →

Typical Errors

According to according to Ahrefs research (374,756 domains), 67% of sites using hreflang have at least one implementation error.

Error 1: No reciprocal links

This is the most common error. Check: does each page of each version contain hreflang to all other versions? If not, search engines may incorrectly interpret your site's structure.

Error 2: Incorrect URL

hreflang requires an absolute URL with a protocol: https://mysite.com/en/about/, not /en/about/. Relative paths do not work.
Consistency is also important: if the canonical URL has a trailing slash (/about/), then hreflang should also have a slash. If not, then not.

Error 3: Non-existent version

The hreflang specifies a link to a page that does not exist. For example, not all products are translated, but attributes are specified for all. Google will find a 404 and notice the discrepancy.
If a page does not have a translation, do not specify hreflang to a non-existent version. It is better not to specify it at all than to specify it incorrectly.

Error 4: Duplication on one page

Two attributes with the same hreflang on one page. This happens with manual markup support or plugin conflicts. Google takes the first one and ignores the second.

Error 5: Incorrect language code

hreflang="kk" is the correct code for the Kazakh language (according to ISO 639-1 list). You cannot use kz, as this is a region code, not a language. Similarly for Armenian: hy is the correct language code, and am is the region code. Remember that hreflang requires language codes, or rather, unlike formats like ru-RU, which can be confusing.

Error 6: hreflang on 301 redirect

If a page with hreflang redirects to another, Google follows the redirect and loses the attribute. Hreflang should be on the final page, not an intermediate one.

How To Check

Hreflang Testing Tool. Shows errors: pages with incorrect attributes, missing backlinks. A good tool, but the downside is that pages need to be uploaded manually.
Screaming Frog or Ahrefs. Scan the entire site. Screaming Frog scans up to 500 URLs for free and shows all hreflang attributes with reciprocity checks.
In addition to verification tools, it is important to understand that technical SEO requires a comprehensive approach. Hreflang optimization is only part of the work to set up a multilingual site structure.

Hreflang and Tilda

Tilda does not add hreflang on its own. The options are actually limited:
Manually via an HTML block. Add <link> tags to the code block. Update manually when the site structure changes. Not suitable for dynamic catalog pages or blog posts. Acceptable for small sites.
Via Multify. The proxy automatically generates hreflang for all pages of all language versions, including product pages and blog articles. When a language is added, attributes immediately appear everywhere. Reciprocity is automatically maintained.
With manual hreflang support on a site with 50 pages and 3 languages, that's 150 sets of attributes. Each addition of a page or language requires updates in all versions. This is what automation completely covers.
Add hreflang without manual work
Try Multify with automatic hreflang generation for any website changes.
Submit an application →
2026-04-14 01:35