RunTheTests
/

Canonical & hreflang Checker

Check whether a page can actually be indexed — and what it says about itself.

The page to audit

The page is fetched once from a Cloudflare edge and its markup analysed here in your browser.

How this check works

The page is fetched and everything that decides whether it can appear in search is read: robots directives in the markup and in the X-Robots-Tag response header, the canonical link, hreflang alternates, and the title, description and headings. Two findings outrank the rest. A noindex directive keeps the page out entirely, and no amount of content or links will change that while it is there. A canonical pointing at another page tells search engines this one is a duplicate — correct for a filtered view, and quietly disastrous when a template sets the same canonical on every page of a site.

What the results mean

noindex
Asks search engines to keep the page out of results. It works, it is invisible on the page, and it explains most cases of "this page has never appeared".
X-Robots-Tag
The same directives in a response header rather than the markup. Both apply, and this one is easy to miss because it is not in the page source.
Canonical pointing elsewhere
The page declares another URL as the original. Correct for pagination and filters; a template-level mistake sets it on every page.
hreflang self-reference
A set of language alternates must include the page itself. Without it, search engines commonly ignore the whole set.

Common problems and fixes

My page never appears in search
Check the indexable row first. A noindex directive — in the markup or the header — is the single most common cause and the easiest to overlook.
The canonical points at the homepage
A template-level mistake, and a serious one: it tells search engines every page on the site is a duplicate of the homepage. Canonicals should be self-referencing unless there is a specific reason otherwise.
My hreflang tags are ignored
Check the self-reference. Each page in a language set must list itself among the alternates, and the whole set is commonly discarded without it.
Two H1s are reported
Not an error and rarely intentional — usually a template with a heading in a banner and another in the content. Search engines cope; readers and screen readers are the ones that notice.

Frequently asked questions

Why is my page not being indexed?

Check the exclusion directives first, because they are decisive and invisible. A noindex in the markup or in an X-Robots-Tag header keeps a page out of results no matter how good it is, and a canonical pointing at a different page tells search engines to index that one instead. Both are shown above. If neither is present, the reasons become slower and less certain — crawl budget, quality, or simply time.

What does a canonical tag actually do?

It tells search engines which URL is the original when several show similar content, so that ranking signals gather on one page instead of splitting. It is a hint rather than a rule: an engine that disagrees with your canonical will index the page it thinks is right. The failure mode worth checking for is a template setting the same canonical on every page.

Do I need a canonical tag on every page?

A self-referencing canonical on every page is the usual advice, and it is harmless. It pre-empts duplicates created by tracking parameters, and it removes the ambiguity when the same content is reachable at more than one address.

More in WebAudit