Unless your language pages are localized only for specific countries, I think you should simply use the language codes (en, es and tr) in your Hreflang markup instead of language+country (en-US, es-ES).
x-default is not required.
Welcome to the Q&A Forum
Browse the forum for helpful insights and fresh discussions about all things SEO.
Job Title: Founder
Company: Hreflang.org and Diffen
Favorite Thing about SEO
Finding out bits and pieces of how Google's algo works
Unless your language pages are localized only for specific countries, I think you should simply use the language codes (en, es and tr) in your Hreflang markup instead of language+country (en-US, es-ES).
x-default is not required.
No, it doesn't matter how many countries you have a business presence in. How many of these does the client have localized pages/websites for?
There isn't an error in the markup for the two pages that you shared. Hreflang markup on duplicate pages is useless so you will not lose anything by getting rid of hreflang on these pages. You can try deleting hreflang and see what happens. You only need hreflang on canonical versions of the page. (in your case it would be pages like http://www.key.co.uk/en/key/mobile-lift-tables and http://www.keyonline.ie/en/kie/mobile-lift-tables and not http://www.key.co.uk/en/key/300kg-capacity-manutan-mobile-lift-table-lift-height-860mm-125h204)
Or you can leave it as is and ignore the errors because duplicate pages should have no effect either way.
"If you use the hreflang, Google won't consider the alternate URLs as duplicate ever ;-)."
I wish that was true. That would solve a lot of the .co.uk vs. .com problems that sites have where they want a different URL to show up in the SERPs without actually having to change their English content. But the reality is Google will consider it duplicate content even if you use hreflang. I have blogged about this in detail with examples: https://hreflang.org/hreflang-and-duplicate-content/
Yes, you should use Hreflang tags. If you do not, it's a duplicate site.
However, even if you use hreflang Google might still consider them duplicate sites if the content is exactly the same. See this thread: https://moz.com/community/q/hreflang-problem
So you should try to localize the content so that it's really unique for each market/site.
The correct way to get .co.uk to rank the in UK and .com to rank elsewhere is to use Hreflang tags, but only if content on the two sites is different. If it's the same content i.e., it has not been localized to UK, then you are better off using only 1 website. Google often ignores Hreflang markup when it encounters duplicate content.
So you have 2 options:
No, the hreflang tag is to indicate that the content is localized for a certain market (language + geo). If you simply use hreflang tags without genuinely localizing your content, Google might treat it as duplicate. See John Mueller's answer here where he clearly says this exact thing:
https://productforums.google.com/forum/#!msg/webmasters/ezMvrlRWuDk/6XWuM1fIDgA
What I meant is that the 2 pages https://www.howmuchcostanapp.co.uk andhttps://www.howmuchcostanapp.com are duplicates of each other. They have not localized the en-GB site for English-speakers in the UK. So when Googlebot sees these 2 pages it might treat them as duplicates.
The en and en-GB sites are duplicates of each other. Without going through the entire questionnaire, you wouldn't know that one site gives you a quote in GBP and the other in USD. So as far as Googlebot is concerned, there is no difference between the en and en-GB sites. You haven't really localized the en-GB site for users in GB.
In such cases of duplicate content, Google sometimes (not always) ignores the Hreflang directive and just shows the stronger domain in SERPs.
By the way, you also have an error in your hreflang implementation. The tags for pt and pt-PT are mismatched on some of the pages. https://app.hreflang.org/results.php?runid=09c39ec6653fbefafe14b0cfe880d3ab20161031214914
Without Hreflang markup the en-US and en-GB pages will be treated as duplicate content. You do not want that. In fact, even with hreflang the two may be considered duplicates if there isn't enough differentiated content.
Also, be careful with canonicals. You shouldn't specify the en-US page as the canonical URL for the fr page. The fr page is its own page and you should use hreflang to specify other language versions.
Yes, hreflang will work in the new structure that you included.
The point of Hreflang is to indicate that two (or more) URLs are part of the same cluster i.e., they have the same content but in different language. There is no requirement around what the URLs should be. They don't need to match or be similar in any way. They can be one the same subdomain or different, same root domain or different, same folder or different...doesn't really matter.
Yes, you should use Hreflang tags. If you do not, it's a duplicate site.
However, even if you use hreflang Google might still consider them duplicate sites if the content is exactly the same. See this thread: https://moz.com/community/q/hreflang-problem
So you should try to localize the content so that it's really unique for each market/site.
The issue looks like it's caused by the HTTP/HTTPS discrepancy. You have the site available on both HTTP and HTTPS, with both versions claiming they are the canonical version of the themselves. So I guess Google is ignoring the HTTP pages and using HTTPS. But the hreflang tags on your https pages are using HTTP URLs. e.g. https://cbisonline.com/eu/ has the markup:
Change all hreflang URLs here to https and you should be OK
Will this prevent duplicate content issues?
The short answer is may be. Sometimes when the content is duplicate, Google chooses to ignore Hreflang and "fold" multiple URLs into a single URL. See John Mueller's answer on this thread: https://productforums.google.com/forum/#!msg/webmasters/ezMvrlRWuDk/6XWuM1fIDgA
So make sure that the content is indeed localized to that country. In your case, use "en" for your co.uk site so that it applies worldwide and covers IE and AU as you intended. And for the .com site, use "en-US" and make sure your content there is Americanized.
Examples of localizing your content are spelling (localising), currency for prices (pounds vs. US dollars), addresses/contact info in the footer.
loganr is right. There is no point in repeating the same URL for multiple English variants. Just use "en" and "nl" and 1 Hreflang entry per URL.
Another thing you could do is create multiple URLs for each of your variants. e.g. example.co.uk for en-GB, example.be for en-BE and so on. But unless you have really customized the content for each of these variants to be truly geography-specific, you are better off consolidating everything under 1 English URL. Otherwise Google will think you've got duplicate content. See example.
You are right. I didn't know about the right way to paginate with canonical. But the point about Hreflang stands. Don't use Hreflang and canonical together on the same page. If you are using canonical to point to the "View All" version, then use Hreflang on the "View all" versions, and not on the individual pages.
I believe what's happening with your site is the same thing as what happened here on Google webmaster forums. JohnMu replied in that thread to say that because you have the same content on different sites (it might say en-US or en-GB but there is no detectable language customization for country). Google considers this duplicate content and starts ignoring some of your pages. And when some pages get ignored, the hreflang return tags from those pages go missing.
I blogged about this phenomenon in detail here.
Of course, it's also possible that your Hreflang markup has errors that the dejan seo tool did not detect. You can try the tool at hreflang.org to get a second opinion.
Hreflang is used at a page level, not at a site level. So no, you should not just set the hreflang tag on every page of www.mywebsite.com to read:
So yes, if the German translation of the page www.mywebsite.com/page.html is available at www.mywebsite.de/page.html then you must do 2 things:
1. On www.mywebsite.com/page.html use <link rel='alternate' hreflang='de' href='http: mywebsite.de="" page.html'="">and <link rel='alternate' hreflang='en' href='http: mywebsite.com="" page.html'=""></link rel='alternate' hreflang='en' href='http:></link rel='alternate' hreflang='de' href='http:>
2. On www.mywebsite.de/page.html <link rel='alternate' hreflang='en' href='http: mywebsite.com="" page.html'="">and <link rel='alternate' hreflang='de' href='http: mywebsite.de="" page.html'=""> </link rel='alternate' hreflang='de' href='http:></link rel='alternate' hreflang='en' href='http:>
What this means is that the English page should link to itself and to all other language variants. And there should be "return tags", i.e. each of the language variations should link to themselves and to all other language variants.
Unless your language pages are localized only for specific countries, I think you should simply use the language codes (en, es and tr) in your Hreflang markup instead of language+country (en-US, es-ES).
x-default is not required.
Hi Michael,
The tool crawls with the user agent "Hreflang.org Testing Tool - Desktop version". It does not impersonate Googlebot. It does not follow 301 redirects because if you use Hreflang to point to another page, you should link to the canonical version of that page. A 301 redirect indicates an error.
My opinion is that forced, IP-based redirection is not a good idea because all URLs must be accessible from all locations. Google recently (about a year ago?) started crawling from other countries but you still want all URLs to be accessible from everywhere. The point of Hreflang is to indicate links across URLs; so hreflang makes IP-based redirection unnecessary.
If you really want to do IP-based redirection, do it on the x-default version of the page. And use the x-default version solely for redirection. For example, don't have your English version as the x-default and then redirect non-English users to other versions. If you do that, Germany-based crawlers won't ever be able to access your English URL.