The rel='alternate' attribute enables you to tell search engines that a web page is available in different language versions. For example, you could add the following to the head section of a web page if that page is available in English, German and French:
<link rel=”alternate” href=”http://en.example.com” hreflang=”en” />
<link rel=”alternate” href=”http://de.example.com” hreflang=”de” />
<link rel=”alternate” href=”http://.fr.example.com” hreflang=”fr” />
All other languages can be directed to the default version of your website:
<link rel=”alternate” href=”http://example.com” hreflang=”x-default” />
For language/country selectors or auto-redirecting homepages, you should add an annotation for the hreflang value "x-default" as well:
<link rel=”alternate” href=”http://en.example.com” hreflang=”en” />
<link rel=”alternate” href=”http://de.example.com” hreflang=”de” />
<link rel=”alternate” href=”http://.fr.example.com” hreflang=”fr” />
All other languages can be directed to the default version of your website:
<link rel=”alternate” href=”http://example.com” hreflang=”x-default” />
Some example scenarios where
rel="alternate" hreflang="x"
is recommended:- You keep the main content in a single language and translate only the template, such as the navigation and footer. Pages that feature user-generated content like a forums typically do this.
- Your content has small regional variations with similar content in a single language. For example, you might have English-language content targeted to the US, GB, and Ireland.
- Your site content is fully translated. For example, you have both German and English versions of each page.
Using language annotations
Imagine you have an English language page hosted at http://www.example.com/, with a Spanish alternative at http://es.example.com/. You can indicate to Google that the Spanish URL is the Spanish-language equivalent of the English page in one of three ways:
- HTML link element in header. In the HTML
<head>
section of http://www.example.com/, add alink
element pointing to the Spanish version of that webpage at http://es.example.com/, like this:<link rel="alternate" hreflang="es" href="http://es.example.com/" />
- HTTP header. If you publish non-HTML files (like PDFs), you can use anHTTP header to indicate a different language version of a URL:
Link: <http://es.example.com/>; rel="alternate"; hreflang="es"
- Sitemap. Instead of using markup, you can submit language version information in a Sitemap.
If you have multiple language versions of a URL, each language page must identify all language versions, including itself. For example, if your site provides content in French, English, and Spanish, the Spanish version must include a
rel="alternate" hreflang="x"
link for itself in addition to links to the French and English versions. Similarly, the English and French versions must each include the same references to the French, English, and Spanish versions.
You can specify multi-language URLs in the same domain as a given URL, or use URLs from a different domain.
It's a good idea to provide a generic URL for geographically unspecified users if you have several alternate URLs targeted at users with the same language, but in different locales. For example, you may have specific URLs for English speakers in Ireland (
en-ie
), Canada (en-ca
), and Australia (en-au
), but want all other English speakers to see your generic English (en
) page, and everyone else to see the homepage. In this case you should specify the generic English-language (en
) page for searchers in, say, the UK. You can annotate this cluster of pages using a Sitemap file or using HTML link tags like this:<link rel="alternate" href="http://example.com/en-ie" hreflang="en-ie" />
<link rel="alternate" href="http://example.com/en-ca" hreflang="en-ca" />
<link rel="alternate" href="http://example.com/en-au" hreflang="en-au" />
<link rel="alternate" href="http://example.com/en" hreflang="en" />
<link rel="alternate" href="http://example.com/" hreflang="x-default" />
Supported language values
The value of the
hreflang
attribute identifies the language (in ISO 639-1 format) and optionally the region (in ISO 3166-1 Alpha 2 format) of an alternate URL. For example:de
: German content, independent of regionen-GB
: English content, for GB usersde-ES
: German content, for users in Spain
Do not specify a country code by itself! Google does not automatically derive the language from the country code. You can specify a language code by itself if you want to simplify your tagging. Adding the country code after the language to restrict the page to a specific region. Examples:
be
: Belarusian language, independent of region (not Belgium French)nl-be
: Dutch for Belgiumfr-be
: French for Belgium
For language script variations, the proper script is derived from the country. For example, when using zh-TW for users
zh-TW
, the language script is automatically derived (in this example: Chinese-Traditional). You can also specify the script itself explicitly using ISO 15924, like this:zh-Hant
: Chinese (Traditional)zh-Hans
: Chinese (Simplified)
Alternatively, you can also specify a combination of script and region—for example, use
zh-Hans-TW
to specify Chinese (Simplified) for Taiwanese users.
Finally, the reserved value "x-default" is used for indicating language selectors/redirectors which are not specific to one language or region, e.g. your homepage showing a clickable map of the world.
Common Mistakes
Important: Make sure that your provided hreflang value is actually valid. Take special care in regard to the two most common mistakes:
In general you are advised to sign up with your site to Webmaster Tools. This enables you to receive messages in regard to wrong annotations.