← All documentation
21 checks

International

Hreflang: return links, self-references, language codes and the pages they point at.

High

Several languages, no hreflang

Add hreflang links between the language editions of each page, so search engines show each reader the edition in their language instead of whichever ranks.

Id
MISSING_HREFLANG
Fix estimate
60 min per page
Medium

Language set and canonical disagree

The page names itself in its language set under one address and canonicalises to another: make both use the same one.

Id
HREFLANG_CONFLICTS_CANONICAL
Fix estimate
20 min per page
Medium

Same language declared twice

Give each language one target: declared twice with different addresses, the whole set is discarded.

Id
HREFLANG_DUPLICATE_ENTRY
Fix estimate
20 min per page
Medium

Hreflang missing return tag

Id
HREFLANG_MISSING_RETURN
Fix estimate
10 min per page
Medium

hreflang set lacks a self-reference

Add an hreflang entry pointing at the page itself — every page in the cluster must list itself.

Id
HREFLANG_MISSING_SELF
Fix estimate
4 min per page
Medium

Noindexed page still declares a language set

Either let the page be indexed or remove its hreflang links; a page kept out of the index never joins a language set, and the pages naming it lose their return link.

Id
HREFLANG_ON_NOINDEX_PAGE
Fix estimate
10 min per page
Medium

Paginated page names the front of another language

Point each paginated page at the same page number in the other language, not at its first page.

Id
HREFLANG_PAGINATION_MISMATCH
Fix estimate
15 min per page
Medium

One address declared as two languages

Give each language its own address in the set; one page cannot be both, and search engines drop the pair.

Id
HREFLANG_SAME_URL_TWO_LANGUAGES
Fix estimate
10 min per page
Medium

Sitemap names a language alternate it does not list

Give every alternate its own <url> entry in the sitemap; an address named only inside another entry is not part of the set.

Id
HREFLANG_SITEMAP_TARGET_UNLISTED
Fix estimate
10 min per page
Medium

Language link names the wrong language for its target

Match the hreflang value to the language the target page declares in its html lang attribute.

Id
HREFLANG_TARGET_LANG_MISMATCH
Fix estimate
10 min per page
Medium

hreflang points to a broken or noindex page

Point hreflang at live, indexable pages — remove entries for pages that are gone or noindexed.

Id
HREFLANG_TO_BROKEN
Fix estimate
6 min per page
Medium

A language alternate points at a page kept out of search

Point the alternate at a page that can be indexed, or drop it: the language it serves currently has nothing to be shown.

Id
HREFLANG_TO_NOINDEX
Fix estimate
10 min per page
Medium

Language link lands on a redirect

Point the language link at the address that answers directly, not at one that forwards.

Id
HREFLANG_TO_REDIRECT
Fix estimate
15 min per page
Medium

Language links disagree between places

The page head, the response header and the sitemap are read as one set: name the same target for a language in all of them.

Id
HREFLANG_TRANSPORT_CONFLICT
Fix estimate
20 min per page
Low

Invalid hreflang language code

Id
HREFLANG_INVALID_LANG_CODE
Fix estimate
5 min per page
Low

No x-default in the hreflang set

Add an x-default alternate naming the page to serve when no declared language matches the visitor.

Id
HREFLANG_MISSING_X_DEFAULT
Fix estimate
10 min per page
Low

Language link names a country, not the language

hreflang takes a language first: "uk" is Ukrainian, and the United Kingdom is "en-GB".

Id
HREFLANG_REGION_AS_LANGUAGE
Fix estimate
10 min per page
Low

Language links written as paths, not full URLs

Write every hreflang href as a full URL with its scheme and host; the spec requires it, and a CDN serving the page under another host will otherwise point the whole set at the wrong site.

Id
HREFLANG_RELATIVE_URL
Fix estimate
10 min per page
Low

hreflang points to a canonicalized URL

Point hreflang at the canonical URL of each language version.

Id
HREFLANG_TO_NONCANONICAL
Fix estimate
5 min per page
Low

Page language disagrees with its own language link

Make the html lang attribute and the page's own hreflang entry agree; both are claims about this page.

Id
LANG_ATTRIBUTE_MISMATCH
Fix estimate
10 min per page
Low

og:locale contradicts the page language

Make og:locale agree with the lang attribute, so a shared link is not previewed in the wrong language.

Id
OG_LOCALE_MISMATCH
Fix estimate
5 min per page
See it on your own site

Which of these would your site trip?

Read your site, free