What hreflang does
When the same content exists in several languages, or for several regions in one language, hreflang annotations tell Google which URL belongs to which audience. Each annotation pairs a language code, optionally with a region, with a URL. Google’s documentation asks for three things: each version must list itself as well as all other versions, the codes must follow ISO 639-1 for languages and ISO 3166-1 alpha-2 for regions, and the URLs must be fully qualified, including https://.
Hreflang is a hint, not a directive. It helps Google show the right version; it does not make a page rank, and it does not stop Google from choosing a different URL as canonical. That is why the listed URLs should be the working, indexable, canonical versions of each page.
If the English page lists the German page but the German page does not list the English one back, Google may ignore the pair. Screaming Frog and Ahrefs describe the same rule: hreflang is reciprocal.
How this tool works, step by step
Read robots.txt
For every host it requests, the checker reads robots.txt first and honours it for DeepSpider. An alternate that robots.txt disallows is not requested; the report says so instead of guessing.
Fetch your page
It requests the page with DeepSpider’s own user agent and follows up to five redirects. It never pretends to be Googlebot.
Read the annotations
It reads <link rel="alternate" hreflang> from the HTML head and hreflang entries in the HTTP Link header, plus the page’s <html lang> and any hreflang placed in the body by mistake.
Fetch the alternates
It requests up to 20 listed alternates once each, four at a time, without following their redirects, and reads their own hreflang, noindex and canonical.
Apply the audit’s checks
It runs the same hreflang checks as a full DeepSpider audit over these pages: codes, absolute URLs, self-reference, return links, target status and directives, incomplete sets, one URL as several languages, and html lang.
How to read the report
Confirmed pair
The alternate lists your page in its own hreflang. A table row full of codes means that page lists the whole cluster.
No return link
The alternate answered with HTML but does not list your page. Add the missing annotation on that version.
Redirect, error, noindex or canonical elsewhere
List the final working URL that is its own canonical, or remove versions that should stay out of search.
Could not be judged
robots.txt disallowed the request, the website did not answer, or the version was beyond the first 20. This is not a pass.
How to fix the common mistakes
Use en-GB, not en-UK, and ja or ja-JP for Japanese, not jp. Google lists the reserved codes EU, UN and UK as mistakes.
Give each page the same complete set: all versions plus itself, and x-default if you use it. Fix it in the template or plugin, not page by page.
Each listed URL should answer 200, have no noindex and name itself as canonical. Update annotations after redirects.
Google’s documentation asks for fully qualified URLs such as https://example.com/de/, not /de/.
Hreflang link elements belong in a well-formed <head>. A missing </head> or a tag printed after <body> moves them into the body.
Region variants such as en-GB and en-US may share a URL; two different languages should not.
Frequently asked questions
Does this tool check hreflang in my XML sitemap?
No. It reads the page’s HTML and HTTP headers only. If your hreflang lives in an XML sitemap, the page may look like it has none here. A full DeepSpider audit reads parsed XML sitemaps.
Is a missing self-reference really a problem?
Google’s documentation says each version must list itself as well as all others. John Mueller has also called self-references optional but good practice, so treat it as an easy fix rather than a disaster.
Why is an alternate marked “not checked”?
Its robots.txt disallows DeepSpider, its website did not answer, the 25-second limit was reached, or the page lists more than 20 versions. A not-checked alternate is never counted as passing.
Does Google use the html lang attribute?
Google does not rely on it for targeting, but other search engines and browsers read it. A page whose html lang differs from the language it claims in hreflang is worth correcting, so the report flags it.
Why does the checker not follow redirects on alternates?
Hreflang should point to the final URL. A redirecting alternate is reported with its status code, the same way a full DeepSpider audit reports it.
Why is an annotation marked “outside head”?
Google reads hreflang <link> elements only in the <head>. When the HTML parser ends the head early (for example at an <img> in the head) or the tag is printed after <body>, the annotation lands in the body and Google may ignore it. Each annotation shows where it really sits; the Head & Encoding Integrity Checker shows which element ends the head.
Is the check free and private?
Yes. There is no signup or email gate and no public report page. Repeat checks of the same URL within ten minutes reuse the previous result.
Where to check the underlying guidance
Google Search Central: Tell Google about localized versions of your page. Practitioner guides: Ahrefs, their guide to hreflang tags; Search Engine Journal, the most common hreflang mistakes; Screaming Frog, missing return links; Sitebulb, noindex URL has incoming hreflang.