SlideShare ist ein Scribd-Unternehmen logo
1 von 97
Downloaden Sie, um offline zu lesen
hreflang across the globe
ISS Munich - #iss #hreflang - @jdevalk
ISS Munich - #iss #hreflang - @jdevalk
Today!
• What is hreflang?

• Design choices

• Common issues

• Useful tools
ISS Munich - #iss #hreflang - @jdevalk
What is hreflang?
ISS Munich - #iss #hreflang - @jdevalk
What is hreflang?
“Google uses the rel="alternate"
hreflang="x" attributes to serve the correct
language or regional URL in Search results.”
ISS Munich - #iss #hreflang - @jdevalk
What is hreflang?
In short: serve the right language version to the
user, based on their locale and location.
ISS Munich - #iss #hreflang - @jdevalk
What is it meant for?
ISS Munich - #iss #hreflang - @jdevalk
What is it meant for?
• Fully translated sites
ISS Munich - #iss #hreflang - @jdevalk
What is it meant for?
• Fully translated sites
• Sites with regional variation
ISS Munich - #iss #hreflang - @jdevalk
What is it meant for?
• Fully translated sites
• Sites with regional variation
• Only the template gets translated, main
content is the same (but don’t do this!!)
ISS Munich - #iss #hreflang - @jdevalk
ISS Munich - #iss #hreflang - @jdevalk
English site Dutch siteGerman site
hreflang=“de” href=“http://example.com/de/”
hreflang=“en” href=“http://example.com/en/”
hreflang=“nl” href=“http://example.com/nl/”
What would happen?
• Someone searching in Dutch would get the Dutch site. 

• Someone searching in German would get the German site. 

• Someone searching in English would get the English site.
ISS Munich - #iss #hreflang - @jdevalk
ISS Munich - #iss #hreflang - @jdevalk
German site
for Germany
German site
for Switzerland
German site
for Austria
href="http://www.example.com/de-de/" hreflang="de-de"
href="http://www.example.com/de-at/" hreflang="de-at"
href="http://www.example.com/de-ch/" hreflang="de-ch"
What would happen?
• Someone searching in German in Germany would get
the /de-de/ site. 

• Someone searching in German in Austria would get
the /de-at/ site. 

• Someone searching in German in Switzerland would
get the /de-ch/ site.
ISS Munich - #iss #hreflang - @jdevalk
But beware!
ISS Munich - #iss #hreflang - @jdevalk
But beware!
• In the previous example, which page would German
speaking / seeking people in Belgium get?

ISS Munich - #iss #hreflang - @jdevalk
But beware!
• In the previous example, which page would German
speaking / seeking people in Belgium get?

• A better solution:
ISS Munich - #iss #hreflang - @jdevalk
ISS Munich - #iss #hreflang - @jdevalk
German site
for Germany
& rest of world
German site
for Switzerland
German site
for Austria
href="http://www.example.com/de-de/" hreflang="de"
href="http://www.example.com/de-at/" hreflang="de-at"
href="http://www.example.com/de-ch/" hreflang="de-ch"
x-default
“The new x-default hreflang attribute value
signals to our algorithms that this page doesn’t
target any specific language or locale and is the
default page when no other page is better
suited.”

https://webmasters.googleblog.com/2013/04/x-default-hreflang-for-international-pages.html
ISS Munich - #iss #hreflang - @jdevalk
x-default
“The x-default hreflang value signals
to our algorithms that such a page
doesn’t target a specific language or
locale.”

https://webmasters.googleblog.com/2013/04/x-default-hreflang-for-international-pages.html
ISS Munich - #iss #hreflang - @jdevalk
x-default
ISS Munich - #iss #hreflang - @jdevalk
ISS Munich - #iss #hreflang - @jdevalk
English site Dutch siteGerman site
hreflang=“de” href=“http://example.com/de/”
hreflang=“en” href=“http://example.com/en/”
hreflang=“nl” href=“http://example.com/nl/”
hreflang=“x-default” href=“http://example.com/”
Country
selector page
What would happen?
ISS Munich - #iss #hreflang - @jdevalk
What would happen?
• Someone searching in Dutch would get the Dutch site.
ISS Munich - #iss #hreflang - @jdevalk
What would happen?
• Someone searching in Dutch would get the Dutch site.
• Someone searching in German would get the German
site.
ISS Munich - #iss #hreflang - @jdevalk
What would happen?
• Someone searching in Dutch would get the Dutch site.
• Someone searching in German would get the German
site.
• Someone searching in English would get the English
site.
ISS Munich - #iss #hreflang - @jdevalk
What would happen?
• Someone searching in Dutch would get the Dutch site.
• Someone searching in German would get the German
site.
• Someone searching in English would get the English
site.
• Someone searching in Spanish would get the country /
language selector.
ISS Munich - #iss #hreflang - @jdevalk
ISS Munich - #iss #hreflang - @jdevalk
German site
for Germany
& rest of world
German site
for Switzerland
German site
for Austria
href="http://www.example.com/de-de/" hreflang="de"
href="http://www.example.com/de-at/" hreflang="de-at"
href="http://www.example.com/de-ch/" hreflang=“de-ch"
href="http://www.example.com/de-de/" hreflang=“x-default"
hreflang design choices
ISS Munich - #iss #hreflang - @jdevalk
hreflang implementation options
• HTML meta tags

• HTTP headers

• XML sitemap
ISS Munich - #iss #hreflang - @jdevalk
HTML meta tags
Easiest when you’re not in full control of everything:

<link rel="alternate" href="http://example.com/en-gb" hreflang="en-gb" />
<link rel="alternate" href="http://example.com/en-us" hreflang="en-us" />
<link rel="alternate" href="http://example.com/en-au" hreflang="en-au" />
ISS Munich - #iss #hreflang - @jdevalk
HTTP headers
Very useful for non HTML content:

Link: <http://es.example.com/document.pdf>; rel="alternate"; hreflang="es",
<http://en.example.com/document.pdf>; rel="alternate"; hreflang="en",
<http://de.example.com/document.pdf>; rel="alternate"; hreflang=“de"
Not always as easy to maintain for other stuff.

ISS Munich - #iss #hreflang - @jdevalk
XML Sitemap
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">




<url>
<loc>http://www.example.com/english/</loc>
<xhtml:link rel=“alternate" hreflang="de"
href="http://www.example.com/deutsch/"/>
<xhtml:link rel=“alternate" hreflang="de-ch"
href="http://www.example.com/schweiz-deutsch/"/>
<xhtml:link rel=“alternate" hreflang="en"
href="http://www.example.com/english/"/>
</url>
ISS Munich - #iss #hreflang - @jdevalk
XML Sitemap
[…]
<url>
<loc>http://www.example.com/deutsch/</loc>
<xhtml:link rel=“alternate" hreflang="en"
href="http://www.example.com/english/"/>
<xhtml:link rel=“alternate" hreflang="de-ch"
href="http://www.example.com/schweiz-deutsch/"/>
<xhtml:link rel=“alternate” hreflang="de"
href="http://www.example.com/deutsch/"/>
</url>
ISS Munich - #iss #hreflang - @jdevalk
XML Sitemap
ISS Munich - #iss #hreflang - @jdevalk
XML Sitemap
• horribly ugly
ISS Munich - #iss #hreflang - @jdevalk
XML Sitemap
• horribly ugly
• but easiest to maintain
ISS Munich - #iss #hreflang - @jdevalk
XML Sitemap
• horribly ugly
• but easiest to maintain
• doesn’t add kilobytes to each page load
ISS Munich - #iss #hreflang - @jdevalk
hreflang breaks - often
ISS Munich - #iss #hreflang - @jdevalk
Common issues
Yes. Common.

This very scientifically 

correct pie chart from 

David Sottimano is sadly 

close to the truth:

ISS Munich - #iss #hreflang - @jdevalk
Hreflang implementation
5%
95%
Screwed up
Got it right
1. Broken links / relative URLs
ISS Munich - #iss #hreflang - @jdevalk
1. Broken links / relative URLs
ISS Munich - #iss #hreflang - @jdevalk
If your hreflang href links to:
1. Broken links / relative URLs
ISS Munich - #iss #hreflang - @jdevalk
If your hreflang href links to:
• broken URLs
1. Broken links / relative URLs
ISS Munich - #iss #hreflang - @jdevalk
If your hreflang href links to:
• broken URLs
• URLs that are redirected
1. Broken links / relative URLs
ISS Munich - #iss #hreflang - @jdevalk
If your hreflang href links to:
• broken URLs
• URLs that are redirected
• relative URLs
1. Broken links / relative URLs
ISS Munich - #iss #hreflang - @jdevalk
If your hreflang href links to:
• broken URLs
• URLs that are redirected
• relative URLs
1. Broken links / relative URLs
ISS Munich - #iss #hreflang - @jdevalk
If your hreflang href links to:
• broken URLs
• URLs that are redirected
• relative URLs
It won’t work.
2. Missing return link
ISS Munich - #iss #hreflang - @jdevalk
2. Missing return link
ISS Munich - #iss #hreflang - @jdevalk
If page A says A is English and B is German.
2. Missing return link
ISS Munich - #iss #hreflang - @jdevalk
If page A says A is English and B is German.
Page B needs to say B is German and A is English.
2. Missing return link
ISS Munich - #iss #hreflang - @jdevalk
If page A says A is English and B is German.
Page B needs to say B is German and A is English.
It can not lack the return link.
3. Wrong country / region code
ISS Munich - #iss #hreflang - @jdevalk
3. Wrong country / region code
ISS Munich - #iss #hreflang - @jdevalk
Language and Country / Region codes follow strict ISO
specs.
3. Wrong country / region code
ISS Munich - #iss #hreflang - @jdevalk
Language and Country / Region codes follow strict ISO
specs.
The first bit is the language, two letters, in ISO 639-1
format.
3. Wrong country / region code
ISS Munich - #iss #hreflang - @jdevalk
Language and Country / Region codes follow strict ISO
specs.
The first bit is the language, two letters, in ISO 639-1
format.
The second (optional) bit is the region. In ISO 3166-1
Alpha 2 format.
3. Wrong country / region code
ISS Munich - #iss #hreflang - @jdevalk
So Ferrari got it slightly wrong:

<link rel="alternate" hreflang="en-en" href="http://www.ferrari.com/en_en/" />
<link rel="alternate" hreflang="fr-fr" href="http://www.ferrari.com/fr_fr/" />
<link rel="alternate" hreflang="de-de" href="http://www.ferrari.com/de_de/" />
<link rel="alternate" hreflang="es-es" href="http://www.ferrari.com/es_es/" />
<link rel="alternate" hreflang="it-it" href="http://www.ferrari.com/it_it/" />
<link rel="alternate" hreflang="en-us" href="http://www.ferrari.com/en_us/" />
<link rel="alternate" hreflang="ja-jp" href="http://www.ferrari.com/ja_jp/" />
<link rel="alternate" hreflang="zh-cn" href="http://www.ferrari.com/zh_cn/" />
<link rel="alternate" hreflang="nl" href="http://www.ferrari.com/nl_nl/" />
This was on their nl page.
3. Wrong country / region code
ISS Munich - #iss #hreflang - @jdevalk
3. Wrong country / region code
ISS Munich - #iss #hreflang - @jdevalk
3. Wrong country / region code
ISS Munich - #iss #hreflang - @jdevalk
3. Wrong country / region code
ISS Munich - #iss #hreflang - @jdevalk
3. Wrong country / region code
ISS Munich - #iss #hreflang - @jdevalk
This is btw quite a common issue:

<link href="http://www.independent.co.uk/"
rel="alternate" hreflang="en-uk" />
This should be en-gb of course!
4. Canonical interference
ISS Munich - #iss #hreflang - @jdevalk
4. Canonical interference
ISS Munich - #iss #hreflang - @jdevalk
4. Canonical interference
ISS Munich - #iss #hreflang - @jdevalk
Each language should have a canonical that
points to itself.
4. Canonical interference
ISS Munich - #iss #hreflang - @jdevalk
Each language should have a canonical that
points to itself.
If it doesn’t follow that simple rule, it’ll
prevent hreflang from working.
4. Canonical interference
ISS Munich - #iss #hreflang - @jdevalk
Each language should have a canonical that
points to itself.
If it doesn’t follow that simple rule, it’ll
prevent hreflang from working.
So, in our earlier example:
ISS Munich - #iss #hreflang - @jdevalk
English site Dutch siteGerman site
<link rel=“alternate” hreflang=“de” href=“http://example.com/de/”>
<link rel=“alternate” hreflang=“en” href=“http://example.com/en/”>
<link rel=“alternate” hreflang=“nl” href=“http://example.com/nl/”>
<link rel=“canonical” href=“http://example.com/en/”>
Correct implementation:
ISS Munich - #iss #hreflang - @jdevalk
English site Dutch siteGerman site
Correct implementation:
<link rel=“alternate” hreflang=“de” href=“http://example.com/de/”>
<link rel=“alternate” hreflang=“en” href=“http://example.com/en/”>
<link rel=“alternate” hreflang=“nl” href=“http://example.com/nl/”>
<link rel=“canonical” href=“http://example.com/de/”>
ISS Munich - #iss #hreflang - @jdevalk
English site Dutch siteGerman site
Correct implementation:
<link rel=“alternate” hreflang=“de” href=“http://example.com/de/”>
<link rel=“alternate” hreflang=“en” href=“http://example.com/en/”>
<link rel=“alternate” hreflang=“nl” href=“http://example.com/nl/”>
<link rel=“canonical” href=“http://example.com/nl/”>
5. It looks fine but it says it’s broken!
ISS Munich - #iss #hreflang - @jdevalk
Maybe you have two implementations? If so…
Get rid of one!
Useful tools
hreflang tag generator
http://yoa.st/hreflanggenerator
ISS Munich - #iss #hreflang - @jdevalk
hreflang XML sitemap generator
http://www.themediaflow.com/tool_hreflang
ISS Munich - #iss #hreflang - @jdevalk
hreflang XML sitemap generator
http://www.themediaflow.com/tool_hreflang
ISS Munich - #iss #hreflang - @jdevalk
hreflang tag validator
http://flang.dejanseo.com.au/
ISS Munich - #iss #hreflang - @jdevalk
ISS Munich - #iss #hreflang - @jdevalk
http://yoa.st/hreflangchrome
hreflang tag recognition
ISS Munich - #iss #hreflang - @jdevalk
hreflang tag recognition
Keep auditing
It works now!
ISS Munich - #iss #hreflang - @jdevalk
It works now!
No. It works now.
ISS Munich - #iss #hreflang - @jdevalk
It works now!
No. It works now.
It will break.
ISS Munich - #iss #hreflang - @jdevalk
Common reasons for breakage
ISS Munich - #iss #hreflang - @jdevalk
Common reasons for breakage
Pages that are redirected, but the hreflang wasn’t
updated.
ISS Munich - #iss #hreflang - @jdevalk
Common reasons for breakage
Pages that are redirected, but the hreflang wasn’t
updated.
Pages that have been deleted in one language but
not in the other(s).
ISS Munich - #iss #hreflang - @jdevalk
Common reasons for breakage
Pages that are redirected, but the hreflang wasn’t
updated.
Pages that have been deleted in one language but
not in the other(s).
A developer thought “this can be done so much
simpler”, and breaks it all.
ISS Munich - #iss #hreflang - @jdevalk
Regular audits
ISS Munich - #iss #hreflang - @jdevalk
Regular audits
To prevent breakage, you need to audit
regularly.
ISS Munich - #iss #hreflang - @jdevalk
Regular audits
To prevent breakage, you need to audit
regularly.
If you have continuous integration, add
hreflang tests.
ISS Munich - #iss #hreflang - @jdevalk
Setup (regular) tests
Manually with Screaming Frog, or automated.
ISS Munich - #iss #hreflang - @jdevalk
Audit source code
ISS Munich - #iss #hreflang - @jdevalk
Audit source code
Make sure the code that generates hreflang:
ISS Munich - #iss #hreflang - @jdevalk
Audit source code
Make sure the code that generates hreflang:
• has documentation that explains why;
ISS Munich - #iss #hreflang - @jdevalk
Audit source code
Make sure the code that generates hreflang:
• has documentation that explains why;
• points to documentation on the how;
ISS Munich - #iss #hreflang - @jdevalk
Audit source code
Make sure the code that generates hreflang:
• has documentation that explains why;
• points to documentation on the how;
• explains special cases like x-default;
ISS Munich - #iss #hreflang - @jdevalk
Audit source code
Make sure the code that generates hreflang:
• has documentation that explains why;
• points to documentation on the how;
• explains special cases like x-default;
• explains relationship to canonical.
ISS Munich - #iss #hreflang - @jdevalk
Regular audits
ISS Munich - #iss #hreflang - @jdevalk
Regular audits and smart code

documentation will keep your 

hreflang happy!
Questions?
Follow along:

• https://yoast.com/

• @jdevalk & @yoast on Twitter

• facebook.com/yoast
ISS Munich - #iss #hreflang - @jdevalk

Weitere ähnliche Inhalte

Was ist angesagt?

The Big SEO Migration - Learnings from a first time hiker
The Big SEO Migration - Learnings from a first time hiker The Big SEO Migration - Learnings from a first time hiker
The Big SEO Migration - Learnings from a first time hiker ReneHarris7
 
The Worst SEO Issues of Online Stores in 2022 & How to Fix Them #YoastCon2022
The Worst SEO Issues of Online Stores in 2022 & How to Fix Them #YoastCon2022 The Worst SEO Issues of Online Stores in 2022 & How to Fix Them #YoastCon2022
The Worst SEO Issues of Online Stores in 2022 & How to Fix Them #YoastCon2022 Aleyda Solís
 
BrightonSEO Summer 2021 - The Underrated Value of Internal Links
BrightonSEO Summer 2021 - The Underrated Value of Internal LinksBrightonSEO Summer 2021 - The Underrated Value of Internal Links
BrightonSEO Summer 2021 - The Underrated Value of Internal LinksNatalie Arney
 
How to Grow your Organic Search Traffic in International Markets #ConnectaBern
How to Grow your Organic Search Traffic in International Markets #ConnectaBernHow to Grow your Organic Search Traffic in International Markets #ConnectaBern
How to Grow your Organic Search Traffic in International Markets #ConnectaBernAleyda Solís
 
SEO for Changing E-commerce Product Pages - How to Optimize your Online Store...
SEO for Changing E-commerce Product Pages - How to Optimize your Online Store...SEO for Changing E-commerce Product Pages - How to Optimize your Online Store...
SEO for Changing E-commerce Product Pages - How to Optimize your Online Store...Aleyda Solís
 
A Guide to Log Analysis with Big Query
A Guide to Log Analysis with Big QueryA Guide to Log Analysis with Big Query
A Guide to Log Analysis with Big QueryDominic Woodman
 
7 E-Commerce SEO Mistakes & How to Fix Them #DeepSEOCon
7 E-Commerce SEO Mistakes & How to Fix Them #DeepSEOCon7 E-Commerce SEO Mistakes & How to Fix Them #DeepSEOCon
7 E-Commerce SEO Mistakes & How to Fix Them #DeepSEOConAleyda Solís
 
brighton final.pptx
brighton final.pptxbrighton final.pptx
brighton final.pptxssuser152aeb
 
How to overcome the fear of taking time off.pptx
How to overcome the fear of taking time off.pptxHow to overcome the fear of taking time off.pptx
How to overcome the fear of taking time off.pptxQuibble
 
Beth Barnham Schema Auditing BrightonSEO Slides.pptx
Beth Barnham Schema Auditing BrightonSEO Slides.pptxBeth Barnham Schema Auditing BrightonSEO Slides.pptx
Beth Barnham Schema Auditing BrightonSEO Slides.pptxBethBarnham1
 
[BrightonSEO 2022] Unlocking the Hidden Potential of Product Listing Pages
[BrightonSEO 2022] Unlocking the Hidden Potential of Product Listing Pages[BrightonSEO 2022] Unlocking the Hidden Potential of Product Listing Pages
[BrightonSEO 2022] Unlocking the Hidden Potential of Product Listing PagesAreej AbuAli
 
International SEO: The Weird Technical Parts - Pubcon Vegas 2019 Patrick Stox
International SEO: The Weird Technical Parts - Pubcon Vegas 2019 Patrick StoxInternational SEO: The Weird Technical Parts - Pubcon Vegas 2019 Patrick Stox
International SEO: The Weird Technical Parts - Pubcon Vegas 2019 Patrick Stoxpatrickstox
 
Claves SEO para cualquier proyecto #Marketinada22
Claves SEO para cualquier proyecto #Marketinada22Claves SEO para cualquier proyecto #Marketinada22
Claves SEO para cualquier proyecto #Marketinada22ssuser82c1d6
 
Using command line to save time on common SEO tasks
Using command line to save time on common SEO tasks Using command line to save time on common SEO tasks
Using command line to save time on common SEO tasks DinoKukic
 
Brighton SEO Talk HS FINAL.pptx
Brighton SEO Talk HS FINAL.pptxBrighton SEO Talk HS FINAL.pptx
Brighton SEO Talk HS FINAL.pptxHarry Sumner
 
GretaMunari - The redemption of content automation
GretaMunari - The redemption of content automationGretaMunari - The redemption of content automation
GretaMunari - The redemption of content automationGretaMunari1
 
Using Search Intent in our Link Building Efforts
Using Search Intent in our Link Building EffortsUsing Search Intent in our Link Building Efforts
Using Search Intent in our Link Building EffortsChris Czermak
 
Martin McGarry - SEO strategy c/o England manager Gareth Southgate
Martin McGarry - SEO strategy c/o England manager Gareth SouthgateMartin McGarry - SEO strategy c/o England manager Gareth Southgate
Martin McGarry - SEO strategy c/o England manager Gareth SouthgateMartin McGarry
 
Identifying Top Converting Queries at Every Stage of the Customer Journey #SM...
Identifying Top Converting Queries at Every Stage of the Customer Journey #SM...Identifying Top Converting Queries at Every Stage of the Customer Journey #SM...
Identifying Top Converting Queries at Every Stage of the Customer Journey #SM...Aleyda Solís
 
Cost Effective Multilingual Content Optimization in An International SEO Process
Cost Effective Multilingual Content Optimization in An International SEO ProcessCost Effective Multilingual Content Optimization in An International SEO Process
Cost Effective Multilingual Content Optimization in An International SEO ProcessAleyda Solís
 

Was ist angesagt? (20)

The Big SEO Migration - Learnings from a first time hiker
The Big SEO Migration - Learnings from a first time hiker The Big SEO Migration - Learnings from a first time hiker
The Big SEO Migration - Learnings from a first time hiker
 
The Worst SEO Issues of Online Stores in 2022 & How to Fix Them #YoastCon2022
The Worst SEO Issues of Online Stores in 2022 & How to Fix Them #YoastCon2022 The Worst SEO Issues of Online Stores in 2022 & How to Fix Them #YoastCon2022
The Worst SEO Issues of Online Stores in 2022 & How to Fix Them #YoastCon2022
 
BrightonSEO Summer 2021 - The Underrated Value of Internal Links
BrightonSEO Summer 2021 - The Underrated Value of Internal LinksBrightonSEO Summer 2021 - The Underrated Value of Internal Links
BrightonSEO Summer 2021 - The Underrated Value of Internal Links
 
How to Grow your Organic Search Traffic in International Markets #ConnectaBern
How to Grow your Organic Search Traffic in International Markets #ConnectaBernHow to Grow your Organic Search Traffic in International Markets #ConnectaBern
How to Grow your Organic Search Traffic in International Markets #ConnectaBern
 
SEO for Changing E-commerce Product Pages - How to Optimize your Online Store...
SEO for Changing E-commerce Product Pages - How to Optimize your Online Store...SEO for Changing E-commerce Product Pages - How to Optimize your Online Store...
SEO for Changing E-commerce Product Pages - How to Optimize your Online Store...
 
A Guide to Log Analysis with Big Query
A Guide to Log Analysis with Big QueryA Guide to Log Analysis with Big Query
A Guide to Log Analysis with Big Query
 
7 E-Commerce SEO Mistakes & How to Fix Them #DeepSEOCon
7 E-Commerce SEO Mistakes & How to Fix Them #DeepSEOCon7 E-Commerce SEO Mistakes & How to Fix Them #DeepSEOCon
7 E-Commerce SEO Mistakes & How to Fix Them #DeepSEOCon
 
brighton final.pptx
brighton final.pptxbrighton final.pptx
brighton final.pptx
 
How to overcome the fear of taking time off.pptx
How to overcome the fear of taking time off.pptxHow to overcome the fear of taking time off.pptx
How to overcome the fear of taking time off.pptx
 
Beth Barnham Schema Auditing BrightonSEO Slides.pptx
Beth Barnham Schema Auditing BrightonSEO Slides.pptxBeth Barnham Schema Auditing BrightonSEO Slides.pptx
Beth Barnham Schema Auditing BrightonSEO Slides.pptx
 
[BrightonSEO 2022] Unlocking the Hidden Potential of Product Listing Pages
[BrightonSEO 2022] Unlocking the Hidden Potential of Product Listing Pages[BrightonSEO 2022] Unlocking the Hidden Potential of Product Listing Pages
[BrightonSEO 2022] Unlocking the Hidden Potential of Product Listing Pages
 
International SEO: The Weird Technical Parts - Pubcon Vegas 2019 Patrick Stox
International SEO: The Weird Technical Parts - Pubcon Vegas 2019 Patrick StoxInternational SEO: The Weird Technical Parts - Pubcon Vegas 2019 Patrick Stox
International SEO: The Weird Technical Parts - Pubcon Vegas 2019 Patrick Stox
 
Claves SEO para cualquier proyecto #Marketinada22
Claves SEO para cualquier proyecto #Marketinada22Claves SEO para cualquier proyecto #Marketinada22
Claves SEO para cualquier proyecto #Marketinada22
 
Using command line to save time on common SEO tasks
Using command line to save time on common SEO tasks Using command line to save time on common SEO tasks
Using command line to save time on common SEO tasks
 
Brighton SEO Talk HS FINAL.pptx
Brighton SEO Talk HS FINAL.pptxBrighton SEO Talk HS FINAL.pptx
Brighton SEO Talk HS FINAL.pptx
 
GretaMunari - The redemption of content automation
GretaMunari - The redemption of content automationGretaMunari - The redemption of content automation
GretaMunari - The redemption of content automation
 
Using Search Intent in our Link Building Efforts
Using Search Intent in our Link Building EffortsUsing Search Intent in our Link Building Efforts
Using Search Intent in our Link Building Efforts
 
Martin McGarry - SEO strategy c/o England manager Gareth Southgate
Martin McGarry - SEO strategy c/o England manager Gareth SouthgateMartin McGarry - SEO strategy c/o England manager Gareth Southgate
Martin McGarry - SEO strategy c/o England manager Gareth Southgate
 
Identifying Top Converting Queries at Every Stage of the Customer Journey #SM...
Identifying Top Converting Queries at Every Stage of the Customer Journey #SM...Identifying Top Converting Queries at Every Stage of the Customer Journey #SM...
Identifying Top Converting Queries at Every Stage of the Customer Journey #SM...
 
Cost Effective Multilingual Content Optimization in An International SEO Process
Cost Effective Multilingual Content Optimization in An International SEO ProcessCost Effective Multilingual Content Optimization in An International SEO Process
Cost Effective Multilingual Content Optimization in An International SEO Process
 

Andere mochten auch

Knowledge Panels, Rich Snippets and Semantic Markup
Knowledge Panels, Rich Snippets and Semantic MarkupKnowledge Panels, Rich Snippets and Semantic Markup
Knowledge Panels, Rich Snippets and Semantic MarkupBill Slawski
 
Yleisradion toimintaymparistokatsaus 1-2014
Yleisradion toimintaymparistokatsaus 1-2014Yleisradion toimintaymparistokatsaus 1-2014
Yleisradion toimintaymparistokatsaus 1-2014Yle.fi
 
Boston as a preffered Investment Destination
Boston as a preffered Investment DestinationBoston as a preffered Investment Destination
Boston as a preffered Investment DestinationAshish Tandon
 
Salesforce Essentials Calgary Keynote
Salesforce Essentials Calgary KeynoteSalesforce Essentials Calgary Keynote
Salesforce Essentials Calgary Keynotenwyne
 
The constitution of kenya
The constitution of kenyaThe constitution of kenya
The constitution of kenyaLeonardus Ouma
 
สงครามไทยรบพม่า เปรียบเทียบเสียกรุง
สงครามไทยรบพม่า เปรียบเทียบเสียกรุงสงครามไทยรบพม่า เปรียบเทียบเสียกรุง
สงครามไทยรบพม่า เปรียบเทียบเสียกรุงkokoyadi
 
Planetary Health: A Special Edition of the Economist Magazine
Planetary Health: A Special Edition of the Economist MagazinePlanetary Health: A Special Edition of the Economist Magazine
Planetary Health: A Special Edition of the Economist MagazineThe Rockefeller Foundation
 
Alai alternativa agroecologica
Alai alternativa agroecologicaAlai alternativa agroecologica
Alai alternativa agroecologicaadriecologia
 
Government of India Gazette Notification - The Information Technology (Preser...
Government of India Gazette Notification - The Information Technology (Preser...Government of India Gazette Notification - The Information Technology (Preser...
Government of India Gazette Notification - The Information Technology (Preser...Amit Ranjan
 
Extending Enterprise Search To Catalyse Innovation In A Global Organisation
Extending Enterprise Search To Catalyse Innovation In A Global OrganisationExtending Enterprise Search To Catalyse Innovation In A Global Organisation
Extending Enterprise Search To Catalyse Innovation In A Global OrganisationNick Brown
 
Adobe Illustrator – Minimal introduction
Adobe Illustrator – Minimal introductionAdobe Illustrator – Minimal introduction
Adobe Illustrator – Minimal introductionRamses Cabello
 
Tech Incubation. Delivering an enterprise platform on AWS
Tech Incubation. Delivering an enterprise platform on AWSTech Incubation. Delivering an enterprise platform on AWS
Tech Incubation. Delivering an enterprise platform on AWSNick Brown
 
Content Marketing and Events: Setting Up the Model and Driving Revenue
Content Marketing and Events: Setting Up the Model and Driving RevenueContent Marketing and Events: Setting Up the Model and Driving Revenue
Content Marketing and Events: Setting Up the Model and Driving RevenueJoe Pulizzi
 
Resep masakan dan minuman populer indonesia
Resep masakan dan minuman populer indonesiaResep masakan dan minuman populer indonesia
Resep masakan dan minuman populer indonesiaBobokmarky
 

Andere mochten auch (20)

Knowledge Panels, Rich Snippets and Semantic Markup
Knowledge Panels, Rich Snippets and Semantic MarkupKnowledge Panels, Rich Snippets and Semantic Markup
Knowledge Panels, Rich Snippets and Semantic Markup
 
Feedback presentation
Feedback presentationFeedback presentation
Feedback presentation
 
Understanding the big society pete alcock
Understanding the big society   pete alcockUnderstanding the big society   pete alcock
Understanding the big society pete alcock
 
Scholarly Articles for Hypnotherapy and Smoking Study
Scholarly Articles for Hypnotherapy and Smoking StudyScholarly Articles for Hypnotherapy and Smoking Study
Scholarly Articles for Hypnotherapy and Smoking Study
 
Yleisradion toimintaymparistokatsaus 1-2014
Yleisradion toimintaymparistokatsaus 1-2014Yleisradion toimintaymparistokatsaus 1-2014
Yleisradion toimintaymparistokatsaus 1-2014
 
Boston as a preffered Investment Destination
Boston as a preffered Investment DestinationBoston as a preffered Investment Destination
Boston as a preffered Investment Destination
 
Thing.jsについて
Thing.jsについてThing.jsについて
Thing.jsについて
 
Salesforce Essentials Calgary Keynote
Salesforce Essentials Calgary KeynoteSalesforce Essentials Calgary Keynote
Salesforce Essentials Calgary Keynote
 
The constitution of kenya
The constitution of kenyaThe constitution of kenya
The constitution of kenya
 
2014 IS101 lec6
2014 IS101 lec62014 IS101 lec6
2014 IS101 lec6
 
สงครามไทยรบพม่า เปรียบเทียบเสียกรุง
สงครามไทยรบพม่า เปรียบเทียบเสียกรุงสงครามไทยรบพม่า เปรียบเทียบเสียกรุง
สงครามไทยรบพม่า เปรียบเทียบเสียกรุง
 
Planetary Health: A Special Edition of the Economist Magazine
Planetary Health: A Special Edition of the Economist MagazinePlanetary Health: A Special Edition of the Economist Magazine
Planetary Health: A Special Edition of the Economist Magazine
 
Alai alternativa agroecologica
Alai alternativa agroecologicaAlai alternativa agroecologica
Alai alternativa agroecologica
 
Government of India Gazette Notification - The Information Technology (Preser...
Government of India Gazette Notification - The Information Technology (Preser...Government of India Gazette Notification - The Information Technology (Preser...
Government of India Gazette Notification - The Information Technology (Preser...
 
Extending Enterprise Search To Catalyse Innovation In A Global Organisation
Extending Enterprise Search To Catalyse Innovation In A Global OrganisationExtending Enterprise Search To Catalyse Innovation In A Global Organisation
Extending Enterprise Search To Catalyse Innovation In A Global Organisation
 
Adobe Illustrator – Minimal introduction
Adobe Illustrator – Minimal introductionAdobe Illustrator – Minimal introduction
Adobe Illustrator – Minimal introduction
 
Tech Incubation. Delivering an enterprise platform on AWS
Tech Incubation. Delivering an enterprise platform on AWSTech Incubation. Delivering an enterprise platform on AWS
Tech Incubation. Delivering an enterprise platform on AWS
 
Perspectives 2013
Perspectives 2013Perspectives 2013
Perspectives 2013
 
Content Marketing and Events: Setting Up the Model and Driving Revenue
Content Marketing and Events: Setting Up the Model and Driving RevenueContent Marketing and Events: Setting Up the Model and Driving Revenue
Content Marketing and Events: Setting Up the Model and Driving Revenue
 
Resep masakan dan minuman populer indonesia
Resep masakan dan minuman populer indonesiaResep masakan dan minuman populer indonesia
Resep masakan dan minuman populer indonesia
 

Ähnlich wie hreflang across the globe

CSS with LESS for #jd13nl
CSS with LESS for #jd13nlCSS with LESS for #jd13nl
CSS with LESS for #jd13nlHans Kuijpers
 
Getting Tactical with LATAM Digital Marketing
Getting Tactical with LATAM Digital MarketingGetting Tactical with LATAM Digital Marketing
Getting Tactical with LATAM Digital MarketingZeph Snapp
 
Understanding & Facilitating Semantic Search - #SearchFest 2016
Understanding & Facilitating Semantic Search - #SearchFest 2016Understanding & Facilitating Semantic Search - #SearchFest 2016
Understanding & Facilitating Semantic Search - #SearchFest 2016Mike Arnesen
 
Introduction to Responsive Web Design
Introduction to Responsive Web DesignIntroduction to Responsive Web Design
Introduction to Responsive Web DesignClarissa Peterson
 
Responsive Web Design - but for real!
Responsive Web Design - but for real!Responsive Web Design - but for real!
Responsive Web Design - but for real!Rudy Rigot
 
Making HREFLANG Manageable: Search Marketing Summit (Sydney)
Making HREFLANG Manageable: Search Marketing Summit (Sydney)Making HREFLANG Manageable: Search Marketing Summit (Sydney)
Making HREFLANG Manageable: Search Marketing Summit (Sydney)Erudite
 
Container Days NYC Keynote
Container Days NYC KeynoteContainer Days NYC Keynote
Container Days NYC KeynoteBoyd Hemphill
 
Does Your Web App Speak Schadenfreude? - Greg Rewis - Codemotion Rome 2017
Does Your Web App Speak Schadenfreude? - Greg Rewis - Codemotion Rome 2017Does Your Web App Speak Schadenfreude? - Greg Rewis - Codemotion Rome 2017
Does Your Web App Speak Schadenfreude? - Greg Rewis - Codemotion Rome 2017Codemotion
 

Ähnlich wie hreflang across the globe (9)

CSS with LESS for #jd13nl
CSS with LESS for #jd13nlCSS with LESS for #jd13nl
CSS with LESS for #jd13nl
 
Getting Tactical with LATAM Digital Marketing
Getting Tactical with LATAM Digital MarketingGetting Tactical with LATAM Digital Marketing
Getting Tactical with LATAM Digital Marketing
 
Understanding & Facilitating Semantic Search - #SearchFest 2016
Understanding & Facilitating Semantic Search - #SearchFest 2016Understanding & Facilitating Semantic Search - #SearchFest 2016
Understanding & Facilitating Semantic Search - #SearchFest 2016
 
Introduction to Responsive Web Design
Introduction to Responsive Web DesignIntroduction to Responsive Web Design
Introduction to Responsive Web Design
 
Responsive Web Design - but for real!
Responsive Web Design - but for real!Responsive Web Design - but for real!
Responsive Web Design - but for real!
 
Making HREFLANG Manageable: Search Marketing Summit (Sydney)
Making HREFLANG Manageable: Search Marketing Summit (Sydney)Making HREFLANG Manageable: Search Marketing Summit (Sydney)
Making HREFLANG Manageable: Search Marketing Summit (Sydney)
 
Container Days NYC Keynote
Container Days NYC KeynoteContainer Days NYC Keynote
Container Days NYC Keynote
 
Christian Jakenfelds
Christian JakenfeldsChristian Jakenfelds
Christian Jakenfelds
 
Does Your Web App Speak Schadenfreude? - Greg Rewis - Codemotion Rome 2017
Does Your Web App Speak Schadenfreude? - Greg Rewis - Codemotion Rome 2017Does Your Web App Speak Schadenfreude? - Greg Rewis - Codemotion Rome 2017
Does Your Web App Speak Schadenfreude? - Greg Rewis - Codemotion Rome 2017
 

Mehr von Joost de Valk

Beyond SEO: copywriting for professionals
Beyond SEO: copywriting for professionalsBeyond SEO: copywriting for professionals
Beyond SEO: copywriting for professionalsJoost de Valk
 
Large Scale SEO - Method to the madness
Large Scale SEO - Method to the madnessLarge Scale SEO - Method to the madness
Large Scale SEO - Method to the madnessJoost de Valk
 
SEO - Stabiel, en toch ook niet
SEO - Stabiel, en toch ook nietSEO - Stabiel, en toch ook niet
SEO - Stabiel, en toch ook nietJoost de Valk
 
Holistic SEO - WordCamp NL 2015
Holistic SEO - WordCamp NL 2015Holistic SEO - WordCamp NL 2015
Holistic SEO - WordCamp NL 2015Joost de Valk
 
SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014
SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014
SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014Joost de Valk
 
Online zaken doen - Google eTown conferentie wijchen
Online zaken doen - Google eTown conferentie wijchenOnline zaken doen - Google eTown conferentie wijchen
Online zaken doen - Google eTown conferentie wijchenJoost de Valk
 
Victory of the commons
Victory of the commonsVictory of the commons
Victory of the commonsJoost de Valk
 
WordPress, Schema & more
WordPress, Schema & moreWordPress, Schema & more
WordPress, Schema & moreJoost de Valk
 
Victory of the Commons - Drupaljam 2013 Rotterdam
Victory of the Commons - Drupaljam 2013 RotterdamVictory of the Commons - Drupaljam 2013 Rotterdam
Victory of the Commons - Drupaljam 2013 RotterdamJoost de Valk
 
WordPress, Content Marketing & SEO at WordCamp Romania
WordPress, Content Marketing & SEO at WordCamp RomaniaWordPress, Content Marketing & SEO at WordCamp Romania
WordPress, Content Marketing & SEO at WordCamp RomaniaJoost de Valk
 
Conversion Optimization starts in the SERPs
Conversion Optimization starts in the SERPsConversion Optimization starts in the SERPs
Conversion Optimization starts in the SERPsJoost de Valk
 
Joost de Valk - SES Amsterdam
Joost de Valk - SES AmsterdamJoost de Valk - SES Amsterdam
Joost de Valk - SES AmsterdamJoost de Valk
 

Mehr von Joost de Valk (13)

Beyond SEO: copywriting for professionals
Beyond SEO: copywriting for professionalsBeyond SEO: copywriting for professionals
Beyond SEO: copywriting for professionals
 
Large Scale SEO - Method to the madness
Large Scale SEO - Method to the madnessLarge Scale SEO - Method to the madness
Large Scale SEO - Method to the madness
 
SEO - Stabiel, en toch ook niet
SEO - Stabiel, en toch ook nietSEO - Stabiel, en toch ook niet
SEO - Stabiel, en toch ook niet
 
Holistic SEO - WordCamp NL 2015
Holistic SEO - WordCamp NL 2015Holistic SEO - WordCamp NL 2015
Holistic SEO - WordCamp NL 2015
 
SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014
SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014
SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014
 
Online zaken doen - Google eTown conferentie wijchen
Online zaken doen - Google eTown conferentie wijchenOnline zaken doen - Google eTown conferentie wijchen
Online zaken doen - Google eTown conferentie wijchen
 
Victory of the commons
Victory of the commonsVictory of the commons
Victory of the commons
 
WordPress, Schema & more
WordPress, Schema & moreWordPress, Schema & more
WordPress, Schema & more
 
Victory of the Commons - Drupaljam 2013 Rotterdam
Victory of the Commons - Drupaljam 2013 RotterdamVictory of the Commons - Drupaljam 2013 Rotterdam
Victory of the Commons - Drupaljam 2013 Rotterdam
 
Optimize for clicks
Optimize for clicksOptimize for clicks
Optimize for clicks
 
WordPress, Content Marketing & SEO at WordCamp Romania
WordPress, Content Marketing & SEO at WordCamp RomaniaWordPress, Content Marketing & SEO at WordCamp Romania
WordPress, Content Marketing & SEO at WordCamp Romania
 
Conversion Optimization starts in the SERPs
Conversion Optimization starts in the SERPsConversion Optimization starts in the SERPs
Conversion Optimization starts in the SERPs
 
Joost de Valk - SES Amsterdam
Joost de Valk - SES AmsterdamJoost de Valk - SES Amsterdam
Joost de Valk - SES Amsterdam
 

Kürzlich hochgeladen

IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119APNIC
 
ETHICAL HACKING dddddddddddddddfnandni.pptx
ETHICAL HACKING dddddddddddddddfnandni.pptxETHICAL HACKING dddddddddddddddfnandni.pptx
ETHICAL HACKING dddddddddddddddfnandni.pptxNIMMANAGANTI RAMAKRISHNA
 
Company Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptxCompany Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptxMario
 
Unidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptxUnidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptxmibuzondetrabajo
 
TRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptxTRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptxAndrieCagasanAkio
 
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书rnrncn29
 
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predieusebiomeyer
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书rnrncn29
 
Cybersecurity Threats and Cybersecurity Best Practices
Cybersecurity Threats and Cybersecurity Best PracticesCybersecurity Threats and Cybersecurity Best Practices
Cybersecurity Threats and Cybersecurity Best PracticesLumiverse Solutions Pvt Ltd
 

Kürzlich hochgeladen (9)

IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119
 
ETHICAL HACKING dddddddddddddddfnandni.pptx
ETHICAL HACKING dddddddddddddddfnandni.pptxETHICAL HACKING dddddddddddddddfnandni.pptx
ETHICAL HACKING dddddddddddddddfnandni.pptx
 
Company Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptxCompany Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptx
 
Unidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptxUnidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptx
 
TRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptxTRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptx
 
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
 
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predi
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
 
Cybersecurity Threats and Cybersecurity Best Practices
Cybersecurity Threats and Cybersecurity Best PracticesCybersecurity Threats and Cybersecurity Best Practices
Cybersecurity Threats and Cybersecurity Best Practices
 

hreflang across the globe

  • 1. hreflang across the globe ISS Munich - #iss #hreflang - @jdevalk
  • 2. ISS Munich - #iss #hreflang - @jdevalk
  • 3. Today! • What is hreflang? • Design choices • Common issues • Useful tools ISS Munich - #iss #hreflang - @jdevalk
  • 4. What is hreflang? ISS Munich - #iss #hreflang - @jdevalk
  • 5. What is hreflang? “Google uses the rel="alternate" hreflang="x" attributes to serve the correct language or regional URL in Search results.” ISS Munich - #iss #hreflang - @jdevalk
  • 6. What is hreflang? In short: serve the right language version to the user, based on their locale and location. ISS Munich - #iss #hreflang - @jdevalk
  • 7. What is it meant for? ISS Munich - #iss #hreflang - @jdevalk
  • 8. What is it meant for? • Fully translated sites ISS Munich - #iss #hreflang - @jdevalk
  • 9. What is it meant for? • Fully translated sites • Sites with regional variation ISS Munich - #iss #hreflang - @jdevalk
  • 10. What is it meant for? • Fully translated sites • Sites with regional variation • Only the template gets translated, main content is the same (but don’t do this!!) ISS Munich - #iss #hreflang - @jdevalk
  • 11. ISS Munich - #iss #hreflang - @jdevalk English site Dutch siteGerman site hreflang=“de” href=“http://example.com/de/” hreflang=“en” href=“http://example.com/en/” hreflang=“nl” href=“http://example.com/nl/”
  • 12. What would happen? • Someone searching in Dutch would get the Dutch site. • Someone searching in German would get the German site. • Someone searching in English would get the English site. ISS Munich - #iss #hreflang - @jdevalk
  • 13. ISS Munich - #iss #hreflang - @jdevalk German site for Germany German site for Switzerland German site for Austria href="http://www.example.com/de-de/" hreflang="de-de" href="http://www.example.com/de-at/" hreflang="de-at" href="http://www.example.com/de-ch/" hreflang="de-ch"
  • 14. What would happen? • Someone searching in German in Germany would get the /de-de/ site. • Someone searching in German in Austria would get the /de-at/ site. • Someone searching in German in Switzerland would get the /de-ch/ site. ISS Munich - #iss #hreflang - @jdevalk
  • 15. But beware! ISS Munich - #iss #hreflang - @jdevalk
  • 16. But beware! • In the previous example, which page would German speaking / seeking people in Belgium get?
 ISS Munich - #iss #hreflang - @jdevalk
  • 17. But beware! • In the previous example, which page would German speaking / seeking people in Belgium get?
 • A better solution: ISS Munich - #iss #hreflang - @jdevalk
  • 18. ISS Munich - #iss #hreflang - @jdevalk German site for Germany & rest of world German site for Switzerland German site for Austria href="http://www.example.com/de-de/" hreflang="de" href="http://www.example.com/de-at/" hreflang="de-at" href="http://www.example.com/de-ch/" hreflang="de-ch"
  • 19. x-default “The new x-default hreflang attribute value signals to our algorithms that this page doesn’t target any specific language or locale and is the default page when no other page is better suited.” https://webmasters.googleblog.com/2013/04/x-default-hreflang-for-international-pages.html ISS Munich - #iss #hreflang - @jdevalk
  • 20. x-default “The x-default hreflang value signals to our algorithms that such a page doesn’t target a specific language or locale.” https://webmasters.googleblog.com/2013/04/x-default-hreflang-for-international-pages.html ISS Munich - #iss #hreflang - @jdevalk
  • 21. x-default ISS Munich - #iss #hreflang - @jdevalk
  • 22. ISS Munich - #iss #hreflang - @jdevalk English site Dutch siteGerman site hreflang=“de” href=“http://example.com/de/” hreflang=“en” href=“http://example.com/en/” hreflang=“nl” href=“http://example.com/nl/” hreflang=“x-default” href=“http://example.com/” Country selector page
  • 23. What would happen? ISS Munich - #iss #hreflang - @jdevalk
  • 24. What would happen? • Someone searching in Dutch would get the Dutch site. ISS Munich - #iss #hreflang - @jdevalk
  • 25. What would happen? • Someone searching in Dutch would get the Dutch site. • Someone searching in German would get the German site. ISS Munich - #iss #hreflang - @jdevalk
  • 26. What would happen? • Someone searching in Dutch would get the Dutch site. • Someone searching in German would get the German site. • Someone searching in English would get the English site. ISS Munich - #iss #hreflang - @jdevalk
  • 27. What would happen? • Someone searching in Dutch would get the Dutch site. • Someone searching in German would get the German site. • Someone searching in English would get the English site. • Someone searching in Spanish would get the country / language selector. ISS Munich - #iss #hreflang - @jdevalk
  • 28. ISS Munich - #iss #hreflang - @jdevalk German site for Germany & rest of world German site for Switzerland German site for Austria href="http://www.example.com/de-de/" hreflang="de" href="http://www.example.com/de-at/" hreflang="de-at" href="http://www.example.com/de-ch/" hreflang=“de-ch" href="http://www.example.com/de-de/" hreflang=“x-default"
  • 29. hreflang design choices ISS Munich - #iss #hreflang - @jdevalk
  • 30. hreflang implementation options • HTML meta tags • HTTP headers • XML sitemap ISS Munich - #iss #hreflang - @jdevalk
  • 31. HTML meta tags Easiest when you’re not in full control of everything: <link rel="alternate" href="http://example.com/en-gb" hreflang="en-gb" /> <link rel="alternate" href="http://example.com/en-us" hreflang="en-us" /> <link rel="alternate" href="http://example.com/en-au" hreflang="en-au" /> ISS Munich - #iss #hreflang - @jdevalk
  • 32. HTTP headers Very useful for non HTML content: Link: <http://es.example.com/document.pdf>; rel="alternate"; hreflang="es", <http://en.example.com/document.pdf>; rel="alternate"; hreflang="en", <http://de.example.com/document.pdf>; rel="alternate"; hreflang=“de" Not always as easy to maintain for other stuff. ISS Munich - #iss #hreflang - @jdevalk
  • 33. XML Sitemap <?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"> 
 
 <url> <loc>http://www.example.com/english/</loc> <xhtml:link rel=“alternate" hreflang="de" href="http://www.example.com/deutsch/"/> <xhtml:link rel=“alternate" hreflang="de-ch" href="http://www.example.com/schweiz-deutsch/"/> <xhtml:link rel=“alternate" hreflang="en" href="http://www.example.com/english/"/> </url> ISS Munich - #iss #hreflang - @jdevalk
  • 34. XML Sitemap […] <url> <loc>http://www.example.com/deutsch/</loc> <xhtml:link rel=“alternate" hreflang="en" href="http://www.example.com/english/"/> <xhtml:link rel=“alternate" hreflang="de-ch" href="http://www.example.com/schweiz-deutsch/"/> <xhtml:link rel=“alternate” hreflang="de" href="http://www.example.com/deutsch/"/> </url> ISS Munich - #iss #hreflang - @jdevalk
  • 35. XML Sitemap ISS Munich - #iss #hreflang - @jdevalk
  • 36. XML Sitemap • horribly ugly ISS Munich - #iss #hreflang - @jdevalk
  • 37. XML Sitemap • horribly ugly • but easiest to maintain ISS Munich - #iss #hreflang - @jdevalk
  • 38. XML Sitemap • horribly ugly • but easiest to maintain • doesn’t add kilobytes to each page load ISS Munich - #iss #hreflang - @jdevalk
  • 39. hreflang breaks - often ISS Munich - #iss #hreflang - @jdevalk
  • 40. Common issues Yes. Common.
 This very scientifically 
 correct pie chart from 
 David Sottimano is sadly 
 close to the truth:
 ISS Munich - #iss #hreflang - @jdevalk Hreflang implementation 5% 95% Screwed up Got it right
  • 41. 1. Broken links / relative URLs ISS Munich - #iss #hreflang - @jdevalk
  • 42. 1. Broken links / relative URLs ISS Munich - #iss #hreflang - @jdevalk If your hreflang href links to:
  • 43. 1. Broken links / relative URLs ISS Munich - #iss #hreflang - @jdevalk If your hreflang href links to: • broken URLs
  • 44. 1. Broken links / relative URLs ISS Munich - #iss #hreflang - @jdevalk If your hreflang href links to: • broken URLs • URLs that are redirected
  • 45. 1. Broken links / relative URLs ISS Munich - #iss #hreflang - @jdevalk If your hreflang href links to: • broken URLs • URLs that are redirected • relative URLs
  • 46. 1. Broken links / relative URLs ISS Munich - #iss #hreflang - @jdevalk If your hreflang href links to: • broken URLs • URLs that are redirected • relative URLs
  • 47. 1. Broken links / relative URLs ISS Munich - #iss #hreflang - @jdevalk If your hreflang href links to: • broken URLs • URLs that are redirected • relative URLs It won’t work.
  • 48. 2. Missing return link ISS Munich - #iss #hreflang - @jdevalk
  • 49. 2. Missing return link ISS Munich - #iss #hreflang - @jdevalk If page A says A is English and B is German.
  • 50. 2. Missing return link ISS Munich - #iss #hreflang - @jdevalk If page A says A is English and B is German. Page B needs to say B is German and A is English.
  • 51. 2. Missing return link ISS Munich - #iss #hreflang - @jdevalk If page A says A is English and B is German. Page B needs to say B is German and A is English. It can not lack the return link.
  • 52. 3. Wrong country / region code ISS Munich - #iss #hreflang - @jdevalk
  • 53. 3. Wrong country / region code ISS Munich - #iss #hreflang - @jdevalk Language and Country / Region codes follow strict ISO specs.
  • 54. 3. Wrong country / region code ISS Munich - #iss #hreflang - @jdevalk Language and Country / Region codes follow strict ISO specs. The first bit is the language, two letters, in ISO 639-1 format.
  • 55. 3. Wrong country / region code ISS Munich - #iss #hreflang - @jdevalk Language and Country / Region codes follow strict ISO specs. The first bit is the language, two letters, in ISO 639-1 format. The second (optional) bit is the region. In ISO 3166-1 Alpha 2 format.
  • 56. 3. Wrong country / region code ISS Munich - #iss #hreflang - @jdevalk So Ferrari got it slightly wrong: <link rel="alternate" hreflang="en-en" href="http://www.ferrari.com/en_en/" /> <link rel="alternate" hreflang="fr-fr" href="http://www.ferrari.com/fr_fr/" /> <link rel="alternate" hreflang="de-de" href="http://www.ferrari.com/de_de/" /> <link rel="alternate" hreflang="es-es" href="http://www.ferrari.com/es_es/" /> <link rel="alternate" hreflang="it-it" href="http://www.ferrari.com/it_it/" /> <link rel="alternate" hreflang="en-us" href="http://www.ferrari.com/en_us/" /> <link rel="alternate" hreflang="ja-jp" href="http://www.ferrari.com/ja_jp/" /> <link rel="alternate" hreflang="zh-cn" href="http://www.ferrari.com/zh_cn/" /> <link rel="alternate" hreflang="nl" href="http://www.ferrari.com/nl_nl/" /> This was on their nl page.
  • 57. 3. Wrong country / region code ISS Munich - #iss #hreflang - @jdevalk
  • 58. 3. Wrong country / region code ISS Munich - #iss #hreflang - @jdevalk
  • 59. 3. Wrong country / region code ISS Munich - #iss #hreflang - @jdevalk
  • 60. 3. Wrong country / region code ISS Munich - #iss #hreflang - @jdevalk
  • 61. 3. Wrong country / region code ISS Munich - #iss #hreflang - @jdevalk This is btw quite a common issue: <link href="http://www.independent.co.uk/" rel="alternate" hreflang="en-uk" /> This should be en-gb of course!
  • 62. 4. Canonical interference ISS Munich - #iss #hreflang - @jdevalk
  • 63. 4. Canonical interference ISS Munich - #iss #hreflang - @jdevalk
  • 64. 4. Canonical interference ISS Munich - #iss #hreflang - @jdevalk Each language should have a canonical that points to itself.
  • 65. 4. Canonical interference ISS Munich - #iss #hreflang - @jdevalk Each language should have a canonical that points to itself. If it doesn’t follow that simple rule, it’ll prevent hreflang from working.
  • 66. 4. Canonical interference ISS Munich - #iss #hreflang - @jdevalk Each language should have a canonical that points to itself. If it doesn’t follow that simple rule, it’ll prevent hreflang from working. So, in our earlier example:
  • 67. ISS Munich - #iss #hreflang - @jdevalk English site Dutch siteGerman site <link rel=“alternate” hreflang=“de” href=“http://example.com/de/”> <link rel=“alternate” hreflang=“en” href=“http://example.com/en/”> <link rel=“alternate” hreflang=“nl” href=“http://example.com/nl/”> <link rel=“canonical” href=“http://example.com/en/”> Correct implementation:
  • 68. ISS Munich - #iss #hreflang - @jdevalk English site Dutch siteGerman site Correct implementation: <link rel=“alternate” hreflang=“de” href=“http://example.com/de/”> <link rel=“alternate” hreflang=“en” href=“http://example.com/en/”> <link rel=“alternate” hreflang=“nl” href=“http://example.com/nl/”> <link rel=“canonical” href=“http://example.com/de/”>
  • 69. ISS Munich - #iss #hreflang - @jdevalk English site Dutch siteGerman site Correct implementation: <link rel=“alternate” hreflang=“de” href=“http://example.com/de/”> <link rel=“alternate” hreflang=“en” href=“http://example.com/en/”> <link rel=“alternate” hreflang=“nl” href=“http://example.com/nl/”> <link rel=“canonical” href=“http://example.com/nl/”>
  • 70. 5. It looks fine but it says it’s broken! ISS Munich - #iss #hreflang - @jdevalk Maybe you have two implementations? If so… Get rid of one!
  • 73. hreflang XML sitemap generator http://www.themediaflow.com/tool_hreflang ISS Munich - #iss #hreflang - @jdevalk
  • 74. hreflang XML sitemap generator http://www.themediaflow.com/tool_hreflang ISS Munich - #iss #hreflang - @jdevalk
  • 75. hreflang tag validator http://flang.dejanseo.com.au/ ISS Munich - #iss #hreflang - @jdevalk
  • 76. ISS Munich - #iss #hreflang - @jdevalk http://yoa.st/hreflangchrome hreflang tag recognition
  • 77. ISS Munich - #iss #hreflang - @jdevalk hreflang tag recognition
  • 79. It works now! ISS Munich - #iss #hreflang - @jdevalk
  • 80. It works now! No. It works now. ISS Munich - #iss #hreflang - @jdevalk
  • 81. It works now! No. It works now. It will break. ISS Munich - #iss #hreflang - @jdevalk
  • 82. Common reasons for breakage ISS Munich - #iss #hreflang - @jdevalk
  • 83. Common reasons for breakage Pages that are redirected, but the hreflang wasn’t updated. ISS Munich - #iss #hreflang - @jdevalk
  • 84. Common reasons for breakage Pages that are redirected, but the hreflang wasn’t updated. Pages that have been deleted in one language but not in the other(s). ISS Munich - #iss #hreflang - @jdevalk
  • 85. Common reasons for breakage Pages that are redirected, but the hreflang wasn’t updated. Pages that have been deleted in one language but not in the other(s). A developer thought “this can be done so much simpler”, and breaks it all. ISS Munich - #iss #hreflang - @jdevalk
  • 86. Regular audits ISS Munich - #iss #hreflang - @jdevalk
  • 87. Regular audits To prevent breakage, you need to audit regularly. ISS Munich - #iss #hreflang - @jdevalk
  • 88. Regular audits To prevent breakage, you need to audit regularly. If you have continuous integration, add hreflang tests. ISS Munich - #iss #hreflang - @jdevalk
  • 89. Setup (regular) tests Manually with Screaming Frog, or automated. ISS Munich - #iss #hreflang - @jdevalk
  • 90. Audit source code ISS Munich - #iss #hreflang - @jdevalk
  • 91. Audit source code Make sure the code that generates hreflang: ISS Munich - #iss #hreflang - @jdevalk
  • 92. Audit source code Make sure the code that generates hreflang: • has documentation that explains why; ISS Munich - #iss #hreflang - @jdevalk
  • 93. Audit source code Make sure the code that generates hreflang: • has documentation that explains why; • points to documentation on the how; ISS Munich - #iss #hreflang - @jdevalk
  • 94. Audit source code Make sure the code that generates hreflang: • has documentation that explains why; • points to documentation on the how; • explains special cases like x-default; ISS Munich - #iss #hreflang - @jdevalk
  • 95. Audit source code Make sure the code that generates hreflang: • has documentation that explains why; • points to documentation on the how; • explains special cases like x-default; • explains relationship to canonical. ISS Munich - #iss #hreflang - @jdevalk
  • 96. Regular audits ISS Munich - #iss #hreflang - @jdevalk Regular audits and smart code documentation will keep your hreflang happy!
  • 97. Questions? Follow along: • https://yoast.com/ • @jdevalk & @yoast on Twitter • facebook.com/yoast ISS Munich - #iss #hreflang - @jdevalk