Hreflang: Is it really still necessary and how to use it successfully in 2023
Learn if hreflang annotations are still necessary in Intenational SEO projects in 2023, in which scenarios and how to effectively implement it while minimizing issues and maximizing success and impact.
errors end up falling into 3 buckets that we should avoid at all costs Featuring URLs in hreflang that don’t exist in certain markets Featuring URLs that are not indexable (redirected, noindexed, canonicalized) Generating hreflang tags with syntax or value errors
that don’t exist in a market, don’t make sense and would generate “no return” errors <link rel="alternate" href="https://domain.com/us/page-a" hreflang="en-us" /> <link rel="alternate" href="https://domain.com/gb/page-a" hreflang="en-gb" /> <link rel="alternate" href="https://domain.com/au/page-a" hreflang="en-au" /> Page A for US Page A for UK Page A for AU <link rel="alternate" href="https://domain.com/us/page-a" hreflang="en-us" /> <link rel="alternate" href="https://domain.com/gb/page-a" hreflang="en-gb" /> <link rel="alternate" href="https://domain.com/au/page-a" hreflang="en-au" /> <link rel="alternate" href="https://domain.com/us/page-a" hreflang="en-us" /> <link rel="alternate" href="https://domain.com/gb/page-a" hreflang="en-gb" /> <link rel="alternate" href="https://domain.com/au/page-a" hreflang="en-au" /> Page A doesn’t exist in Australia, shouldn’t be tagged as alternate X https://domain.com/us/page-a https://domain.com/gb/page-a https://domain.com/au/page-a
<link rel="alternate" href="https://domain.com/gb/page-a" hreflang="en-gb" /> <link rel="alternate" href="https://domain.com/au/page-a" hreflang="en-au" /> Page A for US Page A for UK Page A for AU <link rel="alternate" href="https://domain.com/us/page-a" hreflang="en-us" /> <link rel="alternate" href="https://domain.com/gb/page-a" hreflang="en-gb" /> <link rel="alternate" href="https://domain.com/au/page-a" hreflang="en-au" /> <link rel="alternate" href="https://domain.com/us/page-a" hreflang="en-us" /> <link rel="alternate" href="https://domain.com/gb/page-a" hreflang="en-gb" /> <link rel="alternate" href="https://domain.com/au/page-a" hreflang="en-au" /> In Australia, Page A is redirected to another URL, so that’s the one that should be included instead 2) Including as alternates pages that exist but are not indexable (redirected, noindexed, canonicalized URLs) - https://domain.com/au/page-a-new https://domain.com/us/page-a https://domain.com/gb/page-a https://domain.com/au/page-a
<link rel="alternate" href="https://domain.com/gb/page-a" hreflang="en-gb" /> <link rel="alternate" href="https://domain.com/au/page-a" hreflang="en-au" /> Page A for US Page A for UK Page A for AU <link rel="alternate" href="https://domain.com/us/page-a" hreflang="en-us" /> <link rel="alternate" href="https://domain.com/gb/page-a" hreflang="en-gb" /> <link rel="alternate" href="https://domain.com/au/page-a" hreflang="en-au" /> <link rel="alternate" href="https://domain.com/us/page-a" hreflang="en-us" /> <link rel="alternate" href="https://domain.com/gb/page-a" hreflang="en-gb" /> <link rel="alternate" href="https://domain.com/au/page-a" hreflang=“en-au " /> There’s a space left after the “en-au” value! 3) Including hreflang annotations with errors in syntax or featured language or country values, careful with spaces! https://domain.com/us/page-a https://domain.com/gb/page-a https://domain.com/au/page-a
like WP this can be done with plugins (like WPML) automatically, but what if you’re not? Adding a self-referring hreflang is unnecessary if you don’t have alternates, but at least won’t generate errors either
1. For your different country Web versions: Identify which pages are getting traffic/ rankings from non- relevant markets. Eg. The pages from your Spain version getting traffic from Mexico Which of these have a Mexican indexable version that should be getting this traffic instead?
pages getting traffic from non- relevant markets have an indexable alternate version in the relevant ones Check for alternate .co.uk URLS and check their indexability and relevance, to verify they’re really featuring the same content .com URLs ranking in the UK attracting the highest traffic share
of the pages with international misalignment issues and indexable alternates, identify the relevant values using Google documentation linking the ISO values https://developers.google.com/search/docs/specialty/ international/localized-versions#language-codes
as well as the correct hreflang tags patterns for both HTML and XML sitemap implementation via my free hreflang tool https://www.aleydasolis.com/english/international-seo-tools/hreflang-tags-generator/
x-default too? Only if you want to refer non-targeted users to a specific “fallback” page https://developers.google.com/search/docs/specialty/ international/localized-versions#language-codes For main branded terms Terms in the same language
an x-default a page that already has its own language/country value as target too <link rel="alternate" href="https://domain.com/us/page-b" hreflang="en-us" /> <link rel="alternate" href=“https://domain.com/us/page-b" hreflang="x-default" /> <link rel="alternate" href="https://domain.com/gb/page-b" hreflang="en-gb" /> <link rel="alternate" href=“https://domain.com/au/page-b" hreflang="en-au" />
different values to the same URL in general, as long as they make sense for its targeting <link rel="alternate" href="https://domain.com/us/page-b" hreflang="en-us" /> <link rel="alternate" href="https://domain.com/us/page-b" hreflang="en" /> <link rel="alternate" href="https://domain.com/gb/page-b" hreflang="en-gb" /> <link rel="alternate" href=“https://domain.com/au/page-b" hreflang="en-au" />
you shouldn’t do is assign the same value to different URLs! <link rel="alternate" href="https://domain.com/us/page-b" hreflang="en-us" /> <link rel="alternate" href="https://domain.com/gb/page-b" hreflang=“en-us" /> <link rel="alternate" href=“https://domain.com/au/page-b" hreflang="en-au" />
decide the method of hreflang implementation, following this simple criteria BETTER FOR SMALL NUMBER OF VERSIONS TO TAG AND WHEN USING A PLATFORM THAT ALLOWS TO EASILY EDIT THE HTML HEAD HTML Head BETTER FOR BIGGER SITES WITH A HIGH NUMBER OF VERSIONS (+3 VERSIONS OR +1K PAGES) AND/OR WHEN YOU CAN’T EDIT YOUR HTML HEAD XML Sitemap WHEN SPECIFYING HREFLANG FOR NON-HTML DOCUMENTS LIKE PDFS, DOCS, ETC. HTTP Header
VERSIONS TO TAG AND WHEN USING A PLATFORM THAT ALLOWS TO EASILY EDIT THE HTML HEAD HTML Head BETTER FOR BIGGER SITES WITH A HIGH NUMBER OF VERSIONS (+3 VERSIONS OR +1K PAGES) AND/OR WHEN YOU CAN’T EDIT YOUR HTML HEAD XML Sitemap WHEN SPECIFYING HREFLANG FOR NON-HTML DOCUMENTS LIKE PDFS, DOCS, ETC. HTTP Header My preferred one, for flexibility, especially if there are no dev resources, is the XML sitemap to tag static pages
metadata • Country, Address and Phone numbers in pages copy • Local language & currency • Backlinks from local sites • Connected Business Profile • Hreflang specifying alternates from stronger same language country version Well aligned ccTLD Not Well aligned ccTLD Finally, remember that good geolocation is a matter of aligned signals not only hreflang, the more the better
also true for subdirectories and subdomains too • Country in metadata • Country, Address and Phone numbers in pages copy • Local language & currency • Backlinks from local sites • Connected Business Profile • Hreflang specifying alternates from stronger same language country version
SEO Consultant & Founder at Orainti * SEO Speaker at +100 Events in +20 countries * Author “SEO. Las Claves Esenciales.” * Crawling Mondays Video & Podcast Series Host * #SEOFOMO Newsletter Wrangler * Maker LearningSEO.io * European Search Personality of the Year in 2018 * remoters.net Co-Founder Thanks