Can multiple hreflang tags point to one URL? John Mueller of Google says YES.

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.
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:

Summary of 67 Comments

Q&A Highlights on Hreflang Implementation

Managing multi-language and multi-regional websites has its challenges—and the wide-ranging discussions below prove hreflang is often trickier in practice than on paper! Here are the top takeaways and most frequent questions, distilled for clarity and practical value.


1. Language vs. Country Targeting

Core Insight:

  • If you only have one language version for your content, you generally don’t need complex hreflang tags. Eoghan explains:

    “An English article on an international domain will automatically target English-speaking users in the US, UK, CA, AUS, and beyond.”

Takeaway:

  • Only add country codes (
    en-US
    ,
    en-GB
    ) to hreflang if you actually have variations for each country. Otherwise, a simple language code (e.g.,
    hreflang="en"
    ) is enough.


2. When to Use

x-default

Core Insight:

  • x-default
    is reserved for cases where no other language/region matches, or when a splash/root page redirects users based on their browser/language.
  • Quoting Eoghan:

    “In your case, I would definitely recommend using ‘x-default’ for the root domain that redirects users to the correct language version. This helps Google understand your structure.”

Takeaway:

  • Only use
    x-default
    for “catch-all” pages (not for localized language pages).
  • For pages already assigned a language,
    x-default
    is optional and doesn’t add much value.


3. URL Structure Doesn’t Have to Match hreflang Exactly

Core Insight:

  • Your directory or subdomain structure (e.g.,
    /us/
    ,
    /eu/
    ) doesn’t have to match your hreflang annotation exactly.

    “URL directories and hreflang annotations do not have to match—the structure you have in mind seems fine.”


4. Avoid Assigning Multiple Language Codes to One URL

Core Insight:

  • Assigning several language-country codes (e.g.,
    en-FR
    ,
    en-DE
    ) to a single English page is technically possible and sometimes works, but considered “counter-intuitive” and may confuse Google.

    “You are clearly abusing hreflang tags this way… Google might end up ignoring your annotations completely if they send confusing signals.”

Takeaway:

  • Wherever possible, match the hreflang annotation to the actual language of the page.


5. Geo-Targeting in Google Search Console

Core Insight:

  • If you use multiple hreflang tags for one URL, set GSC geo-targeting to “unlisted” (i.e., don’t pick a single country).

    “In this case I would leave the box for country targeting in GSC unchecked.”


6. No Content in a Language? Don’t Target That Language!

  • Can you rank in France/Italy for English content? Yes, but only for English queries or ambiguous keywords.

    “Without French site content, you won’t get much traffic from French-language queries.”

Takeaway:

  • Don’t add hreflang for languages you don’t actually support.


7. Reciprocal and Self-Referencing Tags

Core Insight:

  • Every page should reference itself and all alternate versions with proper hreflang annotations—a common cause for errors.


8. Technical Considerations & Tools

  • Some users encounter errors from 301/302 redirects and IP-based redirects—Googlebot might not behave as expected! Test thoroughly and avoid setups where Googlebot can’t reach content.

On WordPress and CMS Plugins:

  • Multiple WordPress installations are not recommended. Instead, use trusted multilingual plugins if possible.


9. Consolidating Domains (ccTLD to gTLD, or Migrations)

  • Migrations are risky but sometimes beneficial. Eoghan links to resources and advises planning and proper hreflang updates.


10. Multi-Language Pages (On a Single URL)

  • If a page contains two languages (e.g., Chinese and English), there’s no perfect hreflang solution:

    “No official support exists for assigning multiple language codes to one URL. It’s not recommended, but you can experiment.”

Key Advice in a Nutshell

  • Match hreflang to content: Only annotate what you offer, and don’t point English content at non-English codes unless you fully understand the quirks.
  • Use
    x-default
    for catch-alls, not for localized pages.
  • Think twice before making things overly complex—simplicity is your friend in both SEO and maintenance.
  • If in doubt, keep it to language-only codes and extend with country codes only for substantial, localized differences.
  • Reciprocal links and self-references in your markup are essential.
  • When facing unusual edge cases, experiment carefully and monitor results, but stick to best practices when possible.

67 Responses

  1. 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

    1. 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

        1. Note to self: Express yourself more clearly when criticising the ideas that users post in the comments. “slightly counter-intuitive” above should have read “a bad idea”.

  2. 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

    1. 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?

      1. 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

  3. 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.

    1. 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.

  4. 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.

    1. 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.

  5. 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

    1. 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.

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

    1. 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.

  7. 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?

    1. 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.

  8. 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?

    1. 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.

  9. 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.

    1. 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.

  10. 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

    1. 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.

    1. 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?

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

        1. 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.

  11. 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!

    1. 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.

  12. 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?

    1. 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.

  13. 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”

    1. 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.

  14. 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!

    1. 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.

  15. 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

    1. 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.

      1. 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!

  16. 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

    1. 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

    2. 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

  17. 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.

  18. 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.

    1. 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.

  19. 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?

    1. 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!

  20. 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!

    1. 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.

  21. 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

    1. 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.

  22. 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

    1. 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.

  23. 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

    1. 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!

  24. 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

  25. 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?

  26. 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

  27. 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

  28. 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!

Leave a Reply

Your email address will not be published. Required fields are marked *