One URL can receive several hreflang values, for example several combinations of the same language code with different country codes, or an “x-default” value in addition to the language or country codes it already has.

Note: This article was first published on rebelytics.com in 2016 and has since then been updated several times and moved to this blog.

The correct implementation of hreflang annotations is quite a challenge for lots of webmasters, especially as Google’s official documentation leaves a lot of room for interpretation. At SMX Munich 2016, John Mueller of Google shared some interesting information that is not included in Google’s specifications. Read the full story here.

SMX Munich invited the amazing Ralf Ohlenbostel of Zalando and me to do a session on hreflang. Ralf presented some of the challenges Zalando has faced with the implementation of hreflang in the past and I shared some things I knew about hreflang.

eoghan-henn-talking-about-hreflang-at-smx-munich-2016

My part of the presentation included how to implement hreflang correctly, how to use hreflang and canonical tags together, how to find the right domain strategy for maximal international SEO performance, and also my view on how to use x-default. I expressed my doubt about whether it made sense to assign two different hreflang values to one URL, like in this example:

<link rel="alternate" href="https://www.yourwebsite.com/en/about/" hreflang="x-default">
<link rel="alternate" href="https://www.yourwebsite.com/en/about/" hreflang="en">
<link rel="alternate" href="https://www.yourwebsite.com/en-gb/about/" hreflang="en-gb">
<link rel="alternate" href="https://www.yourwebsite.com/en-ie/about/" hreflang="en-ie">

In the Q&A session that followed Ralf’s and my presentation, one member of the audience said that he believed that John Mueller had mentioned in the past that Google did accept this double-assignment of hreflang values to one URL.

John Mueller, who was in the audience, confirmed that Google accepts implementations like in the example above.

This statement resulted in an interesting discussion. Read on to learn which other interesting details John Mueller shared.

Multiple hreflang values for websites versions that target several countries?

Most of all, this piece of information that John Mueller had just shared immediately raised the following question in my mind:

If you can assign more than one hreflang value here, will Google also accept more than one hreflang value in other cases?

Look at this one:

<link rel="alternate" href="https://www.yourwebsite.com/en-us/about/" hreflang="en-us">
<link rel="alternate" href="https://www.yourwebsite.com/en-eu/about/" hreflang="en-gb">
<link rel="alternate" href="https://www.yourwebsite.com/en-eu/about/" hreflang="en-ie">
<link rel="alternate" href="https://www.yourwebsite.com/en-eu/about/" hreflang="en-nl">
<link rel="alternate" href="https://www.yourwebsite.com/en-eu/about/" hreflang="en-be">
<link rel="alternate" href="https://www.yourwebsite.com/en-eu/about/" hreflang="en-lu">
<link rel="alternate" href="https://www.yourwebsite.com/en-eu/about/" hreflang="en-ch">

Here we have a website with a US version and an EU version (in English) that targets a number of European countries. The US version is marked up as an English language version for users in the US, while the EU version gets several hreflang annotations with different values – one for every country it targets.

Before speaking to John Mueller, I would have not recommended this implementation to my clients. But as he had confirmed that you can assign more than one value to a URL when using x-default, I asked him if the solution we see here would also be possible.

He confirmed that you can also assign multiple hreflang values to one URL in a case like this.

This is great! Another option for reaching the right user with the right content in the right place. I have used this kind of setup several times since then and it has always worked well.

UPDATE (3rd of March, 2017) – John Mueller recently reconfirmed what has been written in this blog post when a user on Twitter asked him about it:

By the way, it is really nice how John Mueller takes his time to patiently answer all of the questions everybody asks him on Twitter or when he goes to an event like SMX. Thanks a lot, John!

If you want to see the entire slide deck I used for the SMX session (in German), check this out:

Eoghan Henn

Author Eoghan Henn

Eoghan Henn is responsible for searchVIU's marketing. Before joining searchVIU, he worked as an SEO consultant for 6 years and built a reputation as a blogger and conference speaker.

More posts by Eoghan Henn

Join the discussion 37 Comments

  • Gurpreet says:

    I have two websites with different domains. one is .com site and another one is .asia site. .asia site is for targeting India and UAE but with same url ( eg: domain.asia ). So can I use hreflang for my .asia site. If so, how can I implement it?
    Or only can use for sub domains like us, uk, fr, etc…?
    Please tell me what is best for me?

    • Eoghan Henn says:

      Hi Gurpreet!

      Thank you for your interesting questions. If I understand you correctly, you have one version (domain.asia) for India and UAE, and another one (domain.com) for the rest of the world? And I assume they both have English content?

      If this is the case, the hreflang annotations for your home page could look like this:

      <link rel=”alternate” hreflang=”en-IN” href=”https://www.domain.asia/” />
      <link rel=”alternate” hreflang=”en-AE” href=”https://www.domain.asia/” />
      <link rel=”alternate” hreflang=”en” href=”https://www.domain.com/” />

      Here, the first two lines say that the URL https://www.domain.asia/ has English content and targets users in India and the United Arab Emirates, and the third line says that the URL https://www.domain.com/ has English content and targets users worldwide (except for the countries that are specified in other hreflang annotations).

      Next, you can implement this structure for all pages, so an “About us” page could have the following annotations:

      <link rel=”alternate” hreflang=”en-IN” href=”https://www.domain.asia/about-us/” />
      <link rel=”alternate” hreflang=”en-AE” href=”https://www.domain.asia/about-us/” />
      <link rel=”alternate” hreflang=”en” href=”https://www.domain.com/about-us/” />

      I hope this helps! If you have any further questions, please just let me know.

  • Daria says:

    Hello Eoghan,

    Thank you very much for this comprehensive guide!

    I still have one question. Example:

    I have the following versions of the site:

    https://example.com – targets US and nationwide English speaking users
    https://example.ca – targets English speaking users in Canada
    https://example.ca/fr/ – targets French-speaking users in Canada

    Could you please tell me is the following hreflang setup is optimal in this case:

    Thank you!

    • Eoghan Henn says:

      Hi Daria,

      I’m sorry, your code example disappeared from your comment. Feel free to send me an e-mail and I’ll have a look.

  • anill rao says:

    Hi,
    Thanks for sharing the valuable info.

    Can I use multiple Hreflang for same URL with different, as we EN and MS languages.

    eg:
    http://www.domain.com/category/ hreflang=”en”
    http://www.domain.com/category/ hreflang=”ms”

    • Eoghan Henn says:

      Hi Anill,

      You should avoid using several language codes for one URL. The language code used should always represent the language of the text on the page.

      There might be edge cases where you’re actually using more than one language on a page. Is this the case on your website?

      • anill rao says:

        Eoghan thank you for the reply.
        Yes we are using two languages on the same page Chinese and English

        • Eoghan Henn says:

          If you’re mixing languages on the same URL, then there’s no hreflang solution available for this, unfortunately. You could always try assigning several language codes to one URL to see what happens, but this is not officially supported and I don’t know of any cases where this actually worked well, so it would probably not be more than an interesting experiment.

  • Noni says:

    Hi Eoghan

    i have 3 country subcategories and a page which is redirecting via 302.

    Is it right when i set up hreflang like this

    hreflang = x-default example.com (english version in case of german user redirect via 302)
    hreflang = de example.com/de-de/ (all german speaker)
    hreflang = de-de example.com/de-de/ (german – Germany)
    hreflang = de-at example.com/de-at/ (german – Austria)
    hreflang = de-ch example.com/de-ch/ (german – Switzerland)

    in categories:
    hreflang = x-default example.com/categorie1/ (all the rest, no 302 redirect)
    hreflang = de example.com/de-de/categorie1/ (all german speaker)
    hreflang = de-de example.com/de-de/categorie1/ (german – Germany)
    hreflang = de-at example.com/de-at/categorie1/ (german – Austria)
    hreflang = de-ch example.com/de-ch/categorie1/ (german – Switzerland)

    Is it correct or is the x-default for categories wrong because of no 302 redirect or the possibility to choose your language.
    How should i implement hreflang for non “de” users in this case?

    Thank you very much

    • Eoghan Henn says:

      Hi Noni,

      Thanks for this interesting question. Here are my thoughts:

      The English version of your home page, which you are marking up with “x-default”, should also get the hreflang value “en” (because it is in English). This means that it would get two hreflang annotations, one with “x-default” and one with “en”. Note that Googlebot will probably never detect the 302 redirect for German language speakers because it normally doesn’t crawl with the browser language set to German (or does the redirect happen based on an IP? – even then, Googlebot normally crawls with a US IP).

      There’s no need to assign two values (“de” and “de-de”) to the /de-de/ directory. “de-de” is automatically covered by “de”, as this version is for all German speaker except for the ones you are targeting with another version (“de-at” and “de-ch”). On the other hand, this double assignment will not cause any harm at all, so you might as well just leave it as it is.

      In the category page example, is the “x-default” version example.com/categorie1/ in English? If so, it should also receive the hreflang value “en”, just like the English home page above. “x-default” is optional here, but you can leave it there and assign two values (“en” and “x-default”) to this version.

      I hope this helps! Please let me know if you have any additional questions.

  • GW says:

    Hi Eoghan,

    Timing my run a bit late on this one, but thanks for the great, and very interesting advice here.

    My query is whether I still need to reference an “x-default” if my primary domain is a DOTCOM (with country targeting settings using “unlisted” within Search Console), and I would like to target users within the USA and Canada?

    Would the below be optimal?

    Or would I need to indeed reference the “x-default”?

    E.g.

    And, given hreflang=”en” can be used to target English speaking countries in general (this is my understanding, please correct me), do I even need the “en-us” and “en-ca” at all? or is this more a best practice convention?

    Lastly, would a subdirectory setup be far more effective? i.e. “.com/us/” and “.com/ca/” (regionalising the content and geo-targeting them to their specific markets within Search Console)

    Hope that all makes some sense.

    Thanks in advance.

    • Eoghan Henn says:

      Hi GW,

      Sorry, my website swallowed your code examples, but I believe I can still reply to your questions. If I’ve missed anything, please just send me an e-mail or reply here.

      You only really need x-default if you have URLs that redirect based on the user’s location or browser language, or when you have URLs that are not targeted at users of any specific language (like a root URL with a language or country selector). In all other cases, especially for URLs that have already been assigned a language value, x-default is optional. Read more here: https://www.rebelytics.com/hreflang-annotations/#step5

      If you’ve already assigned the value “en” to an URL, then an additional assignment of “en-us” and “en-ca” to the same URL does not change anything (as you already guessed).

      Subdirectories for the US and Canada only make sense if you can actually provide decent localised content for the two markets (and you’re not just doing it for SEO reasons). Often, one generic language directory (hreflang=”en”) does the trick.

      I hope this helps and please do let me know if you have any additional questions.

  • Razib Sikder says:

    1.
    2.
    3.
    4.

    I am confused with 3 and 4. (en-us and en)
    This case, I think both of them will do same job. Should I remove en-us?

    I am thinking about another sets..
    1.
    2.
    3.

    can you please tell me, which one is better?

    • Eoghan Henn says:

      Hello Razib,

      I’m very sorry, my website completely destroyed your comment. WordPress does not allow HTML certain tags in comments and I haven’t been able to fix this problem so far. One solution is replacing the first < of every HTML tag with & # 6 0 ; (without the spaces), or you can just send me an e-mail.

  • cindie says:

    hi Eoghan,

    This is very informative!

    I have a question. Hope you can help me out.

    on page: https://www.mydomain.co.kr/abcd/sample-industry1.html

    on page: https://www.mydomain.co.kr/abcd/sample-industry2.html

    on page: https://www.mydomain.jp/abcd/sample-industry.html (do I need to list all the korean’s versions? the japanese page consists of similar content as Korean’s but it’s all incorporated on one page but Koreans’ are set up with separate urls for different industries.)

    Is the below hreflang for page https://www.mydomain.jp/abcd/sample-industry.html correct?

    • Eoghan Henn says:

      Hi Cindie,

      Thank you very much for your comment. My website swallowed your code examples. Sorry about that!

      But I think I still understood your question. I’m afraid there is no good solution to your problem with hreflang. If you have one page in a language (Japanese in this case) and two separate pages for the same content in another language (Korean in your example), I can’t think of a way to link the two version with hreflang correctly. I recommend you use hreflang to link all versions of pages that are direct equivalents of each other and leave it out on pages that are like the ones you described above.

      Feel free to send me your hreflang code examples via mail so I can have a look at them.

      I hope this helps! Please let me know if you have any additional questions.

  • kishan says:

    My website support two language i put hrellang tag in every page but pointing to the same url(home page) is it correct ?

    • Eoghan Henn says:

      Hello Kishan,

      hreflang tags should always point to the exact equivalents of every page in other language/country versions and not just to the home page.

      Please let me know if you have any further questions.

  • Ali says:

    Hey Man,

    Thanks for all of your clear posts. A Question, what can we do when we don’t have the page in other languages?

    For example, we have page10.html, and this page is just in EN, DE and FR. And we have no translate in PL, AT and … should we just remove the hreflang alternative for those languages doesn’t exist?

    Thanks

    • Eoghan Henn says:

      Hello Ali,

      Yes, you should only use hreflang annotations for versions of your page that actually exist. So if your page only exists in EN, DE and FR, you only mark it up with hreflang values for these languages.

      I hope this helps! Please let me know if you have any further questions.

  • Hi Eoghan,

    thanks for your post about hreflang and multiple language websites.

    I have a question you might can help me with. I think its not such a complicated big deal as others mentioned above but I just want to make sure I`m doing the right thing. My general confusion is about how to target none speaking english people with our english website fo example french natives at google.fr. We do not have a french website and I read above that the best way to target french speaking customers is to have a french website as well. But is there a possibility to have a good google ranking for /en version on google.fr and google.it for instance.

    Our website is mostly used in german, turkish and english for worldwide users.
    I use hreflang as follows.

    Maybe you can take a short look at it too see if the x-default is implemented properly and will not be ignored by google.

    Thanks a lot in advance.

    • Eoghan Henn says:

      Hello Sebastian,

      Thanks a lot for your comment. My website swallowed your code examples. Sorry about that! But I think I will still be able to answer your questions.

      Your first question was how you could target users of a certain language without a website in that language. Let’s stick with your French example: Without French website content, you will not be able to generate traffic from people that search in French. In this case, it doesn’t really matter if they’re on google.fr or another country version of Google. A search in French will mainly show results for French content. When users in France search in English, or use keywords that don’t belong to a certain language, like your brand keywords, you have good chances of ranking for these keywords, if you have content that matches the search phrase and also ranks well for this topic in other countries.

      I had a look at the hreflang annotations on you website. The implementation is OK as it is. I guess you did not link to the Turkish version because it is too different from the English and German ones?

      Please let me know if you have any follow-up questions.

  • Hello Eoghan.
    Very good informative article.

    As I understand, if I want to target English users in US, UK, Canada and Aus, can I have the hreflang tags to the single version of the article. Or should I create atleast a second version.

    Also, if I want to create a second version of the post. How do I do that. Do I need to create a new WordPress installation and copy all the files from the first installation or is there any easy method.

    Thanks in advance.

    • Eoghan Henn says:

      Hello Palla,

      Thanks a lot for your comment and sorry about my late reply. I’ve been quite busy.

      You could look at your first question from another perspective: If you have only one version of an article you do not need any hreflang tags. An English article on an international domain (a gTLD like .com, .org, etc.) will automatically target English speaking users in US, UK, CA, AUS, and all other countries in the world.

      Second question:

      Managing international websites in WordPress can be quite a challenge, but creating multiple WordPress installations is probably one of the most complicated options you have. There are plugins for international WordPress websites and I know that some also support hreflang annotations. Unfortunately, I cannot make any recommendations, because I do not have enough experience with international WordPress websites myself.

      I hope this helps! Let me know if you have any other questions.

  • Sungod says:

    Interesting and Scary
    say e.g.
    rel=”alternate” href=”https://example.com/in/” hreflang=”en-in”
    rel=”alternate” href=”https://example.com/us/” hreflang=”en-us”
    rel=”alternate” href=”https://example.com/fr/” hreflang=”en-fr”
    rel=”alternate” href=”https://example.com/” hreflang=”x-default”
    In this will French language using people of France will get which page?
    ideally I want them to get
    rel=”alternate” href=”https://example.com/fr/” hreflang=”en-fr”

    Also our website they if people from France click
    https://example.com/mobiles
    then will be redirected to
    https://example.com/fr/mobiles {based on IP}

    But what will search engine show for french in France google and
    for english people in France google.?
    Will they show x-default or french page

    Also should we geo target in webmaster tool to have better results?
    https://example.com/fr/* to France
    https://example.com/us/ To USA
    https://example.com/in/ India

    Save me google and Eoghan

    Regards
    Sungod

    • Eoghan Henn says:

      This is a complex topic. Let me try to share some thoughts on it very briefly.

      First of all, if you want to target French speaking users in France properly, the best way of doing so would be a French language website version.

      Now there are exceptions to this obviously. The solution Filippo mentioned above looks interesting and quite clever, although it seems a bit tricky from my point of view. You are clearly abusing hreflang tags this way by assigning language values to pages that are different from the actual language of the page. Google might end up ignoring your annotations completely if they send confusing signals.

      When Google shows results in a certain language, the language the user is using Google in and the location of the user do matter, but what matters most is the actual language of the query itself. If a user enters a query that is clearly in French, let’s say “chaussures blanches” (white shoes), Google will obviously show pages that are in French first, no matter which language or country version of Google the user is on. If you only have an English website version, your hreflang tags will not do much about this.

      Same if the user searches in English! Let’s say a French user that is using google.fr in French searches in English. Of course Google will show your “en-fr” version, if you have one. So no worries here.

      If Google can’t detect the language of the query because it is ambiguous, the language the user is using Google in will count. If you only have an English version for France that you assign the language/country value “en-fr” to and a default version that is also in English language, Google will probably show a user that uses google.fr in French the default version.

      Does this make any sense to you?

      • Sungod says:

        You made my Day Eoghan.
        Everything you said has made sense.
        You have driven my to take very good business steps.
        May your knowledge, encouragement and benevolent nature bring you happiness.

        Happiness is achieved by making others Happy.

        Thank You for giving me time and explaining me .

        Regards
        Sungod

  • Filippo Calanca says:

    Hi Eoghan, firstly thanks for your article, I was missing an “official” confirm by Google on how handling multiple hreflangs with same target URL.

    I would add to your info a really specific case I came across recently. I have a client with an e-commerce website which provides users with slightly different purchase catalogues based on their actual location. So for example, UK users have different purchase options than US users, as well as generic UE users and, of course, also specific countries like DE, IT, etc.
    To briefly go through the hreflang scenario, I suggested an hreflang implementation like the one you posted above due to the EU section of the website being entirely in English.
    – hreflang=”en-fr” href=”…../en-eu/…..”
    – hreflang=”en-bg” href=”…../en-eu/…..”
    – hreflang=”en-se” href=”…../en-eu/…..”
    and so on, plus a final
    – hreflang=”x-default” href=”…./en-ww/….” AKA the Rest of the World

    Big issue -> This actually works for English users on Google.FR, but doesn’t for French users on Google.FR, as the formers get the EN-EU landing while the latters resolve to the generic international EN-WW.

    My best understanding of this behaviour is: if I really want to bring users from France (both French & English speakers) to the EN-EU section instead of the international EN-WW, I have to implement both the following hreflangs

    – hreflang=”en-fr” href=”…../en-eu/…..”
    – hreflang=”fr-fr” href=”…../en-eu/…..”

    That actually works as it is correctly understood by Google, but this means I have to implement TWO hreflang (minimum) for every specific European country.

    BOOM, say a last goodbye to your .

    Cheers,
    Filippo

    • Eoghan Henn says:

      Hi Filippo,

      Thanks a lot for sharing this additional information. It is very useful to know that the implementation you described actually works.

      Still, it does seem slightly counter-intuitive to assign the language value “fr” to English content (or any other language value than the actual language of the content). But if it has the desired results, we are not going to complain, right?

      Nevertheless, if you want to target French speaking users properly, I think it is still most advisable to have a French language website version. With the solution you describe, I guess your results will only show for French speaking users that search for your brand or for English search terms. Your visibility for French search queries will be pretty low, right?

      Thanks again for sharing your case here! It really adds value to this article.

      Best regards,

      Eoghan

  • Jan Sievers says:

    Hi Eoghan,

    Thank you for clearing that up with John Mueller and writing about it! A client actually asked me that same question today. 🙂

    Cheers
    Jan

Leave a Reply