How to set Hreflang Annotations for Success – #CrawlingMondays 10th Episode
Learn how to effectively implement hreflang annotations in internationally targeted Websites when doing an International SEO process! In the 10th episode of Crawling Mondays I go through the most important criteria to take into consideration to set hreflang tags to specify your pages relevant countries and languages for success.
In today’s episode of Crawling Mondays, which is actually the 10th episode, I want to do something special to help you solve one of the biggest mysteries of our times. And I’m not talking about sorting it out, if we’re living in a simulation or not. Unfortunately I am not that smart. However, I do want to help you clarify and sort out when you need to implement different annotations, how you can use and implement hreflang annotations for success.
And realistically this is a topic that I have covered in the past as an international SEO. And I will refer to a few resources I already have about the topic that you can easily get and obtain online already. However, I have to say that this is a topic that again and again I am asked about. The other day I was seeing a tweet of someone saying like it was so painful to go through a hreflang implementation and I didn’t see any need to do … I didn’t perceive any positive outcome and realistically, somehow, we are going to see that it shouldn’t be like that, but hreflang annotations is perceived to be one of the most complex aspect of SEO. But anyway, don’t worry, I got your bag and in today’s episode I will clarify and take you through the main criteria that you should use to simplify as much as possible the process and to make it much more cost efficient and ROI positive. Let’s take a look.
So why hreflang annotations are important? Why? What do they do in the SEO process, right? And it is important to clarify something: Google doesn’t rely only hreflang annotations to identify a page locale. A Google event that they have listed … if you see here in this search console help article, just very good to understand how they manage international oriented, multinational oriented, multilingual pages, right. How they process these pages.
And in one area you will see a list of signals that they actually use to, to identify the best target audience for a page. So if hreflang annotations is one of those signals. It’s not the only one. Of course we want to make sure to provide Google was many signals as possible and that all of the signals are as aligned as possible too. It’s very, very handy because it’s actually one of those methods that we can specify at a page level and we can go as regular as possible and we can directly control them. Right.
There are other methods and there are other ways for Google to identify locale and we can see how they can identity it based on if we use our country code top level domain names, you steal these to target specific countries.
How if we don’t use still these and we are users of directors of sub domains and we need to localize them through the Google search console. Now that I have clarified that, again, it’s not the only way. It’s not that if we don’t implement hreflang annotations the SEO internationalizing process won’t be successful. Let’s move on with the next step.
So when do we actually hreflang annotations? When it does actually makes much more sense due to resources constraints? The best way to identify which of our international versions actually need of hreflang annotations is by prioritizing their implementation, of go there are actually misalign. Those pages that are targeted towards a specific country and despite of that are ranking and getting organic traffic from another country or if they are in a specific language and they are attracting rankings and traffic from another language.
And you can easily identify that as a university far away already with your, or an existing that in the Google analytics or Google search console. Also too, to actually see that the query that is triggering this visits from a non-relevant location, right? So by going by going through the performance report here, you can go to the country step and let’s say that this is a .net domain. Like let’s imagine if this was a .fr targeted towards friends. You want to see here as a country only France, right? However, you may see that you also have traffic from coming from Canada. Maybe people searching in French from Canada are ended up seeing pages from the site, from this site version instead of the proper Canadian French version that they should get.
So these are the types of scenarios that where you wanted to prioritize hreflang annotation implementation and you can already get it here by going through the Google search console performance report, but of course you need to … you see, and this is my problem a little bit with the challenge that I have with the report and the performance report here, that you need to go through and click and filter a lot in order to obtain the data of which are the queries that trigger these results from these countries and which are the pages that they are obtaining that visibility that they shouldn’t have. But you can do the same actually to expand and compliment this data. With third party tools, with SEMrush, or with SIS for example, or even SISTRIX. I really liked the way that hreflang displays this because you can go to any of your international web versions.
So for example, here I am in the Spanish version, a Spanish for Spain version of Apple. They are using sub directories to target internationally. So I imagine that they have geo-located this es-ES subdirectory to Spain, and we can see that indeed 95% of their organic traffic based on hreflang data is coming from Spain, so that is good.
However, there is a little bit more than 1% that is coming from Argentina. I really want to see if the traffic that is coming from Argentina to the Spain version is coming here because … the reason these alignment issue is because this page doesn’t exist actually in Argentina. So they, when they search for this product they are shown the Spain version because there’s nothing for Argentina. But if there is something for Argentina that should be shown for Argentinian users.
So this is the type of scenario that we want to specify hreflang for. So for example, here we can see Argentina and we can take a look. We charged the top keywords providing traffic in this case Apple Spain, but from that country, but for Argentina and the queries here. So we can see that one of this iPhone 8 Plus. And we can see how the shop for the iPhone 8 Plue is getting the first position. And he has this search volume from Argentine is providing this type of traffic. It’s non-trivial. Again, if these page doesn’t exist in Argentina for the Argentinian users, so it is reasonable that ALGOL ends up ranking this a version of the page because it’s seen Spanish and there’s nothing better to to show them.
However, if this page also exists in the Argentinian version of Apple, so that should be the page that should be shown to Argentinan users. And these are the type of those scenarios where we want to take these pages and prioritize the hreflang annotations.
And so how do we implement hreflang annotations? The three methods, let’s start with that. Potentially the simplest one, which is by including this tags in the HTML head. These are tags that they followed this pattern, alternate hreflang. And here we should include the language and, alternatively, the country. If we are also country targeting and not just language targeting with many different versions for different languages. When we specify a country, we should always specify a language along of the country. However, if we are only language targeting, we can very well only specify a language: is Spanish, English, German, etc.
But if we want to specify that there are some version for Spain, aversion for Mexico, a version for the US, then we need to include the language of that version along the country. So for example, in this particular case you can see how I have actually three ages. ran.com in English for the US. Ran.com/es in Spanish for the US. And then ran.co.uk in English for the UK. And then for each one of this I want to specify with hreflang annotations where they are targeted towards each country and in which language they are.
And we chart the all the versions that exist for this page. So for the home page, again, here in English for the US I include the language, the EN and the value for the US case and then the URL, this particular URL, the homepage for the US. And then I also specify which is the Spanish version for the US and which is the English version, but for the UK. A.nd I include the URLs here. And I need to do the same with the Spanish version for the US and the English version for the UK.
Again, I need to include the same tags in these other pages too. So this is the reason why it gets so complex so easily, because we need to specify if hreflang annotations by page … page by page and not only saying or declaring, specify towards which language and alternatively also country each page is targeting, but all the other variant sets that exist for this particular page that I also want to specify to avoid the misalignment issue.
And the codes that are suppose supported by Google are the ones of the ISO 693-1 for the languages and for region is the ISO 31661 alpha-2. And we have the list of these values … actually we go and we click on any of these on any of these pages in the Wikipedia here, specifying the one for each one of the languages and the same with what country.
Is important to validate. We share the values for the languages that we want to specify and the countries that we want to specify to make sure that we are using the specific values that are actually supported by Google. And then that we are also using them and the tags in a way that are supported by Google because a lot of people use, for example, instead of dashes they use underscore or they put the values together — the language and the country values — and Google doesn’t support that. They need to be separated here by a dash. So it should be language and then countries separated by that dash.
So we can see that one of the methods to implement hreflang annotations is by including these stacks in the head area of every page. This is the best when you have flexibility to do it so, and you don’t have so many different international versions, language and countries to specify because you can end up having a huge list of codes here, of extra code in your HTML, which you should definitely rather avoid.
But there are other ways to do it whenever you don’t have the flexibility to add or change the code in the head of your HTML or when there are so many different international versions that it will be too much to add them, which is actually where at the XML sitemap. This the other preferred way, the other alternative way and the way that I will suggest to do it when you have too many international versions to specify when you cannot add in directly the HTML, the head area of the HTML of your pages. So you can generate here, as you can see, in a very similar way as with hreflang annotations for the HTML. You can generate a sitemap that for each page here that you specify, you include this link tag specifying, again, real alternate hreflang value of the language along the country in case you have a country for the page and the URL and we have three pages.
We have the English one that is specified here, along the two different alternates. The German one in general, and the Swiss German for Switzerland here. So I need to also specify the German, I need to also specify the Swiss German, and specified them as well in the same way, in a similar way saying, “I am this and this is my language and and country targeting, and these all my art in it bigger [00:14:29].
So again you can easily end up generating a very big XML sitemap like this, but at least in this case you don’t need to touch it, you don’t need to modify your HTML. And there is a third method which is with HTTP headers that I will say it might be the way to do it for … don’t make documents that are not HTML. If you need to specify the hreflang annotations for PDFs, for example as here, and that-
Another very important aspect to take into consideration when implementing hreflang annotations is that as of today there is no official support for regions or continent values.
You can see it here, like Google has confirmed many times that they only officially support whether language or country values in hreflang annotations. In fact, there’s no way to geolocate also through the Google search console for regions in general, they don’t support regions or continent, And the same happens with a hreflang annotations for having it.
Anywho, they won’t officially support this value. So it’s important to align and validate, check very well first, which are the actual supportive values that we get through the ISO list that they publish and implemented across all different versions accordingly. Something important though, and again I get this questions many times regarding what do we do, we can only … they can recall tag, how do we cannot legalize these pages that we are tagging what as you’re flying? Realistically that each one of these pages are their own original versions towards their own audiences.
So they should be self canonicalize towards each one of them in particular. So here the English for the US should be self-canonicalized indoor, the same way the Spanish version for the US, the same for the English version for the UK. There should be canonical tag pointing, self-referring, to each one of them in each particular case.
I created this free tool a time ago in order to help to easily help to generate hreflang annotations. So you can see it’s very straightforward to use like this. So you can easily generate your tags like this. So you will need to include here, for example, the URLs. If some of those pages that you actually want to tag. And you here choose if you want to include them in the head area of the HTML to obtain those stacks or generate this hreflang through XML site maps.
So if I generate the XML sitemap, I will obtain this. So you can see the values here, the country and the languages, they won’t support that and the URLs that I have specified above. And this is actually a supported and specified as Google documented in their own specification, right? So he should be very straightforward for you to generate these patterns that you can use along your development team who’s. It’s for all the pieces that will require damming in your website, but just updating the URLs for the relevant warning in each case.
And to identify if you have particular issue of hreflang annotation errors in some of your pages you can use free tools like the one of the hreflang checker that is completely free. And one of the technical SEO that come websites here, they are completely free and they will allow you to identify any errors in specify the type of errors. It’s very very good.
So for example, if I enter here my website and submit here for a quick hreflang audit, it will tell me if it finds any inconsistency across the hreflang annotation specification of my homepage in this particular case. But if, of course, if you want to validate and troubleshoot all of the implementation of hreflang annotations across your website, most of SEO crawlers nowaday support this validation. So for example, this is the view of Seibold [that 00:18:58] I really like a lot, how they, they specify and show the hreflang annotations for each one of the site versions here and how they list potential issues and problems, whether hreflang annotations. Besides different values or the wrong syntax of the tag, it is also very usual to see errors common because of pages that are not the original versions of … the URLs that are not the original versions, the index version of the pages, sometimes because hreflang annotations are generated through SMSs or plugins, etc.
Sometimes the … or in bulk. Sometimes that URL that is specified to be the version for Spanish for Spain is actually not the actual indexable one, but it’s redirecting to another one or it’s showing up for HTTP error or is canonicalized to another URL, etc. This tend to happen and if it happens you will see that there is an error trigger, that you need to-
… I show Cybil before. You can see that the Kroll also includes and validates hreflang annotations. It’s great because it tells us where it has found the issue of land tags, if it has been and in the code, if he has been in a particular XML sitemap. So it, this really makes it easier for you to troubleshoot and go through hreflang annotations because at the end over to the … you will see that sometimes when we publish we have certain numbers of errors, and we go and check. It’s because some particular pages are not pointing back, are not referring back to one of the alternate versions and so we need to end up doing a little bit of troubleshooting usually after releasing and publishing hreflang annotations like this.
So it should be about prioritizing those and language and country versions with most of the errors are showing and making sure to prioritize them through the troubleshooting process, identifying why they are turning this error. It is because they are canonicalized to other URLs because they are … these pages don’t exist in this version and so on … and eliminate and prune accordingly to obtain a 10 point [00:21:21]. This the goal that we look to achieve. To have international versions that don’t trigger any actual hreflang errors, whatever the costs. That they are correctly identified in every case. So we achieved the actual rustled positive ROI of all this implementation. That is that the actual page is shown in the relevant country for the relevant language for the desired audience. So this why I actually … and I will recommend you to take a look at this six steps implementation process that I share for hreflang implementation a while ago.
So I hope that this video has given a little bit of more light to the hreflang implementation process that I know can be very resource intensive indeed. And like this, you will be able to prioritize the steps, all the effort that is needed and you can manage in a much more resilient way, your expectations.
Also what you were looking to achieve with that. And it’s up to a point. If you went verified that you don’t have me sign in issues that this moment then there’s no point to implement hreflang annotations then because it seems that Google is already identifying pretty well our international targeting and you don’t need to prioritize this in time being because it will be a good … nice to have, but not a required type of implementation or a must have type of implementations to fix something that is actually wrong.
So thank you very much for joining me in today’s probably Crawling Mondays and looking forward to see you in the next one. Bye Bye.