Inputs
Example
https://example.com/page -> status chain, final URL, canonical link, robots meta, X-Robots-Tag, hreflang and sitemap reachability.
Check bounded redirect chains, final status, HTML and HTTP canonical hints, robots metadata, scoped X-Robots-Tag, hreflang, and separate sitemap reachability and membership.
Use it to see whether a URL ends on the expected canonical, indexable final target.
https://example.com/page -> status chain, final URL, canonical link, robots meta, X-Robots-Tag, hreflang and sitemap reachability.
Most indexing problems are not penalties. They are plumbing: a redirect chain that grew one hop per migration, a canonical tag still pointing at the old domain, a leftover noindex directive that survived the go-live, or an X-Robots-Tag header added by a proxy nobody remembers configuring. Each signal on its own looks harmless. Together they can tell a crawler four slightly different stories about the same page, and crawlers respond to contradictions by trusting the page less.
This checker follows a public URL the way a crawler would and lays the evidence side by side: the full redirect chain with status codes, the final URL, the canonical link, robots directives from both the meta tag and the HTTP header, hreflang annotations, and whether the sitemap that should announce the page is actually reachable. The value is not any single field. It is seeing at a glance whether all of them agree.
Start with the exact URL you expect users and crawlers to request, including scheme and trailing slash, because those details are precisely where chains hide. Read the redirect evidence first: more than one hop is an optimization opportunity, while 301, 302, 303, 307 and 308 each have valid semantics. A temporary redirect is not inherently wrong; judge it against the intended routing or migration.
Then compare every HTML and HTTP Link canonical with the final URL. A canonical is a consolidation hint, not a command, so a different or cross-domain target can be intentional; conflicting canonicals, a target that redirects, or a non-success target deserve review. Finish with all robots metadata: multiple general directives combine restrictively, while user-agent-scoped X-Robots-Tag values remain separate evidence rather than universal rules.
Live fetches run through the same-origin helper with public-host validation, DNS pinning on every hop, bounded redirects and bounded response size. The checker reads served HTML and headers only and never executes JavaScript. It resolves relative canonical and hreflang URLs, but it does not load hreflang targets, so reciprocal annotations are explicitly not evaluated. Sitemap reachability and membership are reported separately from robots and canonical hints.
Usually yes. The pattern to avoid is chains: http to https to www to trailing slash to CDN rewrite. Every hop adds latency, dilutes signals, and raises the chance one link in the chain breaks unnoticed during the next migration.
A 301 expresses a permanent move; a 302 expresses a temporary one. Both can be correct. The checker preserves that evidence and reports a temporary status as informational because only the operator knows whether the routing or migration is intended to be temporary.
A canonical is a hint, not a command. If the page also carries noindex, returns a non-200 status, sits behind a robots.txt block, or the canonical target contradicts other signals, the hint loses. Check the whole evidence row, not the one tag.
From infrastructure rather than the page: reverse proxies, CDN rules, security plugins, or an obsolete configuration that was copied to production. The page template looks clean, so header-level directives are the first place to look when the meta tag says index but the page stays out.
No. A sitemap should contain final, canonical, 200-status URLs only. Listing redirecting or noindexed URLs wastes crawl budget and muddies the signal about which version of a page you consider authoritative.
Indirectly. This checker validates the supplied language tags, resolves relative targets and recommends a self-reference. It does not load every language target, so it makes no claim about reciprocal annotations unless that evidence is explicitly available.