Skip to main content

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 67 Comments

  • Hi there Eoghan,

    I have a question regarding the following example:

    I have a “site1.com” with 3 languages (EN – default, DE, and IT) for example which operates on a global scale. At the same time, we have a 2nd version of the same site with a different domain “site2.co” operating only in Germany that also has the same language (EN – default, DE, and IT) for some internal reasons. (in other words, we serve or website in Germany with other domain)

    I understand that on the main site1.com site (which is for the global market and the main website in general) should have the following hreflang tags:

    Those hreflangs show to google the correct connection between the 2 domains, transferring link juice, etc.
    + we have an additional ccTLD redirect for the users coming from Germany so they are redirected to the “site2.co” (which is dedicated only to users in Germany).

    ?
    My question is what hreflang tags exactly I should have on the “site2.co”, besides the following tags below, so I have a back referring tags and connecting “site2.co” (German site) to “site1.com” (global site)?
    *The 3 languages (EN – default, DE, and IT) on “site2.co” are defined for the German users as follows the hreflangs bellow.

    I’m thinking that I have 2 solutions:
    1. Either leave it like that and don’t have a back referring hrehlang tags on the German domain pointing back to the global domain (which is bad).
    or
    2. In addition to the site2.co hreflang tags above I should add somehow return links/tags that show the correct language site version (the global site “site1.com”) for all other countries (except Germany):

    *I’m blocked here, can you suggest how would you handle such a case?

    Thank you in advance!

  • Hungnguyen says:

    Hi Mr.Henn,
    I’ve get some trouble with hreflang, inlclude:
    1. Page referenced for more than one language in hreflang
    2. Missing reciprocal hreflang (no return-tag)
    3. Self-reference hreflang annotation missing

    Here is my hreflang in header:

    I’ve tried some tips to fix it but no better! Please help me to fix it or give me some information how to fix it!
    Have a nice day, Mr. Henn

  • Manu says:

    Hi Eoghan,

    I read over the entire article and comments but I still have a doubt on the hreflang. So my situation is, I have an e-commerce client who wants to target both Australia and USA. He wants to sell products to both countries. What is the best method I can use.

    Is it a good way to use like http://www.mydomain.com and add hreflang for both countries on every single page?

    Expect your valuable reply.

    Regards
    Manu

  • Kevin Joseph says:

    Hi Eoghan,

    I found this article to be very useful, thanks a ton. I went through all the comments too but I’m still not sure if my understanding is correct, so I just wanted to be sure before I take your advice and make this change on my website.

    I have three languages on my site in a subfolder structure. (English, French, Dutch). The plug-in I use on the site currently only uses language codes for H-ref language tags, I wanted to confirm if it is worth the effort to go ahead and add country codes along with language codes in the H-ref Lang tags as well. Currently, the site is using h-reflang tags as follows.

    I wished to add a country level targetting in addition to the “English-level” targeting. This is what I have in mind.

    Is it okay to proceed with this? Am I likely to see any ranking benefit of adding country-specific H-ref lang tags?

  • Ted says:

    Hi Eoghan,

    Great article! Quick question – if you have multiple hreflang tags pointing to one URL, what would you recommend doing with Google Search Console international targeting? You can only target one country – so should this be left?

    Thanks

    • Eoghan Henn says:

      Hi Ted,

      Yes, exactly, in this case I would leave the box for the country targeting option in GSC unchecked (only possible on gTLDs, not on ccTLDs).

      Best regards,

      Eoghan

  • Abhijit says:

    I have a website & I want to target multiple countries say India, USA, Singapore, UAE, etc… but I do not have country specific pages. So here, do you suggest me adding Hreflang Tag? If yes, then which one?

    Currently, I have these tags on my website

    • Eoghan Henn says:

      Hi Abhijit,

      Thank you for your question. If you only have one website version for all countries, you do not need hreflang annotations at all. You could of course still add them, if you really wanted to, but they wouldn’t help you in any way, so it’s probably best if you spend your valuable time on something else 🙂

      Also: Sorry that our website swallowed your code examples.

      Please just let me know if you have any other questions!

  • Nilay says:

    Hi Eoghan,

    I read and feel that you have very good knowledge of hreflang, and thus thought to ask you a bit more about my problem:
    https://www.example.com/ | hreflang=”en-in” –> can I use just home root domain for a specific country?
    https://www.example.com/de | hreflang=”de” —> german everywhere
    https://www.example.com/en/ | hreflang=”en” —> English everywhere

    Would really appreciate if you can share your thought about this 😉

    Thanks,
    Nilay

    • Eoghan Henn says:

      Hi Nilay,

      Yes, this would work! Just make sure that the content in the “en-in” version in the root directory isn’t completely identical with the content in the “en” version in the /en/ directory. When you have two or more website versions in the same language that target different sets of countries, it makes sense to localise them as much as possible, so that Google doesn’t see them as duplicates. hreflang annotations can help with this, but they work even better when there are more signals that show that it makes sense to treat them as different website versions.

      I hope this answers your question. Please let me know if anything remains unclear.

  • Sanal says:

    Hi Eoghan,

    Thanks for your post about hreflang tag.

    I have a doubt. Currently i have 2 website, We will targeting this website (https://www.domain.com/) for India & for rest of the world we will be targeting this website (https://www.domain.com/global). We have multiple languages versions present. I want to check, whether the below hreflang tag is correct, & if it’s incorrect; what would be correct hreflang tag annotation. Thanks in advance!

    Countries Language Target Countries

    India English
    India Hindi
    India Marathi
    Global English
    Global Hindi
    Global Gujrathi
    Global Malayalam
    Global Bengali
    Global German

    Default

    • Eoghan Henn says:

      Hi Sanal,

      I’m very sorry, our WordPress installation removes HTML code from comments, so I can’t see your examples. Feel free to get in contact with me here, so I can have a look and give you my opinion.

  • Dominika says:

    Hey Eoghan,

    really helpful article, thanks! Still bit confused with x-default, as according to:
    https://support.google.com/webmasters/answer/189077?hl=en :
    – “The reserved value hreflang=”x-default” is used when no other language/region matches the user’s browser setting. This value is optional, but recommended, as a way for you to control the page when no languages match.”
    https://yoast.com/hreflang-ultimate-guide/#hreflang-architecture :
    – “it can basically be described as the final “catch-all” of all the hreflang statements. It’s where users will be sent if their location and language don’t match anything else.”
    – “x-default is a special hreflang attribute value that specifies where a user should be sent if none of the languages you’ve specified in your other hreflang links match their browser settings”

    Our website has a 302 redirect to one of 3 language versions – de, en, fr. Redirect uses the first language the browser is ready to accept – ex. browser languages are ES and DE -> you’ll get to /de/. For unmatched languages, you’ll get to /en/
    Now, according to articles i listed above, in my understanding hreflang=”x-default” should point to /en/, not to root domain, because “no other language/region matches the user’s browser setting”.
    But at the same time, you (here – https://www.searchviu.com/en/hreflang-implementation-guide/#step5) and many other SEOs advice that in this case hreflang=”x-default” should point to url with redirect (so without language subfolder)

    What are your thoughts on that?
    Thanks!

    • Eoghan Henn says:

      Hi Dominika,

      Thank you very much for your interesting question.

      In your case, I would definitely recommend using “x-default” for the root domain that redirects users to the right language version based on their browser settings. This is one of the original use cases for “x-default” and if your website uses a structure like this, then it makes sense to use “x-default” to help Google understand the structure.

      Using “x-default” as an additional hreflang value for a website version that already has a language value (which is not the case for the root domain on your website – it doesn’t have content, so it doesn’t have a language) is an optional way of using “x-default” and it doesn’t really have that much impact, as far as I know.

      I hope this answers your question! Please let me know if anything remains unclear.

  • Hi Eoghan,

    I have a customer who has 3 different language in his website and he wanted to target different countries with the same URL. Should i use hreflang to getting index in google.it with the English content. For example. same page for all countries i want to show my web site.

    en to italy
    en to france
    en to germany
    en to usa
    en to australia

    also,

    ar to dubai
    ar to saudi arabia etc.

    What do you suggest?

    • Eoghan Henn says:

      Hi Burhanettin,

      Thank you very much for your questions. If you only have three language versions on your website and they’re all on a gTLD (like .com), then it’s enough to just mark them up with hreflang language codes without country codes (hreflang=”en”, hreflang=”ar”, etc.). You don’t have to worry about additional country codes, as all three versions would already target users worldwide that use one of the languages your website is available in.

      The situation would be different if you used ccTLDs, or if you had more than one website version in each language. If this is the case, feel free to send me more details and I’ll be happy to have a look.

      I hope this helps for now!

  • Karen says:

    Hello Eoghan, I have read all the comments but it doesn’t seem to have solution to my situation.

    URL.com is a content site. I write a lot. In fact, there are 1 series of contents that I wrote are very similiar but they are targeted at different country (with all in English language). To avoid duplicate contents and to receive alternate benefit, I put up codes like this in all those pages:

    rel=’alternate’ hreflang=’en’ href=’URL.com/best-widget/’
    rel=’alternate’ hreflang=’en-US’ href=’URL.com/best-widget/’
    rel=’alternate’ hreflang=’en-SG’ href=’URL.com/best-widget-singapore/’
    rel=’alternate’ hreflang=’x-default’ href=’URL.com/best-widget/’

    Those pages differ in term of currency used and widget-discussed. As much as 80% of the rest of the contents are the same. I set up canonical tags for all of those contents too.

    rel=”canonical” href=”URL.com/best-widget/”
    rel=”canonical” href=”URL.com/best-widget-singapore/”

    Now that I have decided to get a ccTLD for Singapore. I am going to set up a ‘URL.com.sg’ and copy-paste all contents from ‘URL.com’

    My question is, what is the correct way to set up hreflang on both URL.com & URL.com.sg? (For /best-widget/ & /best-widget-singapore/).

    Thanks in advance for any kind advice. My head is spinning already trying to explain.

    • Eoghan Henn says:

      Hi Karen,

      If you’re moving the directory for Singapore to a separate ccTLD, it’s important to set up 301 redirects from the old URLs to the new ones and update all internal links to the new URLs.

      The hreflang annotations won’t change much, except for the domain in the Singapore URLs:

      rel=’alternate’ hreflang=’en’ href=’URL.com/best-widget/’
      rel=’alternate’ hreflang=’en-US’ href=’URL.com/best-widget/’
      rel=’alternate’ hreflang=’en-SG’ href=’URL.com.sg/best-widget-singapore/’
      rel=’alternate’ hreflang=’x-default’ href=’URL.com/best-widget/’

      You might also want to consider this article before deciding to move one country version to a separate ccTLD: https://www.searchviu.com/en/cctlds-to-gtld/

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

  • Zgred says:

    That’s great. I was looking around for such a solution for my client. We weren’t sure if we can manage hreflang in such way. I am curious only how Google Search Engine treats traffic from different countries when a single subfolder is verified.

  • Dev says:

    Hi Eoghan,
    My situation is that I have one site (example.com/en) for the users in US, CA, SG, MY, NZ, GB and the other site(example.com) for AU and rest of the world. So one site is primary and another is basically a subfolder(/en) inside the other. I have used the following hreflang tags for this:

    I have used it for both of the sites. Should I be using the hreflang tags in only one site?
    when I check the hreflang from this tool https://technicalseo.com/tools/hreflang/ , it is fine for the primary site but the subfolder /en gets error called ‘301 moved permanently’.
    Is there anything that I am doing wrong here ?
    Thanks in advance

    • Dev says:

      rel=”alternate” href=”https://example.com/” hreflang=”en-AU”
      rel=”alternate” href=”https://example.com/” hreflang=”x-default”
      rel=”alternate” href=”https://example.com/en/” hreflang=”en-US”
      rel=”alternate” href=”https://example.com/en/” hreflang=”en-CA”
      rel=”alternate” href=”https://example.com/en/” hreflang=”en-GB”
      rel=”alternate” href=”https://example.com/en/” hreflang=”en-NZ”
      rel=”alternate” href=”https://example.com/en/” hreflang=”en-MY”
      rel=”alternate” href=”https://example.com/en/” hreflang=”en-SG”

      it didn’t add the hreflang tags in the comments before, so including here

    • Eoghan Henn says:

      Hi Dev,

      Thank you very much for your comment. I’m sorry about our website swallowing your code examples.

      Your hreflang annotations look fine to me. The only thing I would recommend is to add another line:

      rel=”alternate” href=”https://example.com/” hreflang=”en”

      This way, it would be clearer that the root directory version is also for all English speaking users worldwide (and not just x-default).

      The error you are getting from the hreflang checker tool might be due to an issue with IP-based redirects. This is something you should be very careful with, as Googlebot might also run into them. If you share the website URL with me via e-mail, I’ll be happy to have a look.

      Best regards,

      Eoghan

  • Marco Braggio says:

    Hi Eoghan,

    Great article and clarifies a lot for me.

    My question, since the hreflang tag set the priority for country and language targeting, does the URL have to match or can I use a combination of /es-us, /us, /eu, etc.? Here’s what I’m thinking:

    https://www.sample.com/ | hreflang=”x-default”
    https://www.sample.com/eu | hreflang=en-se
    https://www.sample.com/eu/ | hreflang=en-de
    https://www.sample.com/eu/ | hreflang=en-fr
    https://www.sample.com/eu/ | hreflang=en-pt
    https://www.sample.com/eu/ | hreflang=en-es
    https://www.sample.com/de | hreflang=de-de
    https://www.sample.com/fr | hreflang=fr-fr
    https://www.sample.com/gb | hreflang=en-gb
    https://www.sample.com/us | hreflang=en-us
    https://www.sample.com/es-us | hreflang=es-us
    https://www.sample.com/ca | hreflang=en-ca
    https://www.sample.com/fr-ca | hreflang=fr-ca

    • Eoghan Henn says:

      Hi Marco,

      URL directories and hreflang annotations do not have to match and the structure you have thought of seems fine to me.

      One thing I would recommend is marking up one version of every language as a generic language version (only a language code, no country code). For instance, your /eu/ directory could be hreflang=”en” and your /fr/ directory could be hreflang=”fr”. This way, you could also remove all language-country combinations for the same directory, as they would already be covered by the generic version, which would reduce complexity.

      If you have any additional questions, please just let me know.

      • Marco Braggio says:

        Thanks Eoghan for the quick reply and I thought of the same thing after of just using only language code and if I need to target a specific language + country I would use the appropriate combo.

        Again, this is the most comprehensible article on multiple hreflang tags with great references too.

        Cheers!

  • Paul says:

    Hey Eugene,

    Great post.

    I’m going through a dilemma and I think it pertains to this. So we have ccTLD’s at the moment, but internally we’re going to consolidate everything into one.

    So just to clarify, are you saying this is okay?

    So currently we have

    But since we’re consolidating
    can we do it

    Thanks!

    • Eoghan Henn says:

      Hi Paul,

      I’m very sorry, our website normally swallows code examples in comments. Feel free to send me your examples via e-mail so that I can have a look at them and help you.

  • Saranya Rajesh says:

    Hi Eoghan,

    Found your topics conversation, became so curious to shoot the comment on your session. Our company has headquarters located in USA and we have website such as “example.com” serving globally and also we server for Indian clients with website “example.in”, is it the good option to convert “example.in” to “example.com/in” since both the website serves English language to the visitors. Or is it best to keep both website’s, whereas when someone tries to access website from India location, it has to be displayed as “example.com/in” , provide me the suggestion? Which works “Best”

    • Eoghan Henn says:

      Hello Saranya,

      Thank you very much for your question. Let’s see if I’ve understood you correctly.

      Are you thinking about migrating your Indian example.in website to example.com/in/? If so, this might help your overall SEO performance, but it’s also a very risky project. This article should help you make an informed decision: https://www.searchviu.com/en/cctlds-to-gtld/

      Are you also asking about whether it might make sense to have only one website version for Indian visitors and visitors form the rest of the world? This depends on whether you have different content for both target audiences. If the content is exactly the same, you might as well consolidate it in only one version. But if you have different website content for India and the rest of the world, the it is best to keep two different website versions. These two versions can either be hosted on the same gTLD (.com) or on different domains (.com and .in).

      In any case, it’s important to set up hreflang correctly, once you’ve decided what your structure should be. You can learn more about implementing hreflang here: https://www.searchviu.com/en/hreflang-implementation-guide/

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

  • 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

  • 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