Check Engine / Checks / Reference

Do your language links point to usable pages?

It checks measured hreflang targets for errors, redirects and noindex directives.

What Check Engine measures

Targets are matched to saved pages using the exact address and trailing-slash alternatives. Unmeasured targets are skipped. Refused responses and zero-status failures are reported as unchecked rather than dead. Other responses with HTTP status 400 or above, addresses known to redirect away and pages carrying noindex can enter the unusable-target finding. The code uses saved redirect history to recognise an alternate address that was not the final page. For example, a measured HTTP status 400 can enter the unusable-target finding after refusal handling.

Successful pages supply the alternate-language links. The wider crawl supplies responses for their destinations. An unmeasured destination stays unknown and needs a separate review.

How to read the result

Unusable targets are medium severity and unchecked targets notices. The distinction prevents a blocked request or failed fetch from being presented as certain proof that a translation no longer exists.

Why it matters

A correctly written alternate link can still name an address that does not serve an indexable page. Checking the measured destination adds details beyond code spelling and reciprocal tags.

How to fix it

Use the final intended URL for each alternate. Repair genuinely missing pages or remove obsolete alternatives, and review unintended noindex directives. Investigate refused requests before replacing a valid translation. Retest the target and the source declaration together after a change so that the markup names the address that actually serves the content.

Why an hreflang target is reported as dead

What we found in field audits

Problems in Crawlability & indexing were found on 12 of the 14 sites we audited. These are area totals. Read the field-audit method.

Method note

backend/seo_engine/checks/international.py, hreflang_targets, revision 0bb8e8d3.

Common questions

Can an alternate-language target returning an error be unusable?

Yes. After refusals are handled, HTTP status 400 or higher can qualify. Redirects and noindex targets have their own qualifying cases.

Are refused translation requests reported as dead hreflang targets?

No. Refused responses are unchecked. They receive notices because the saved request cannot establish that the translation is gone.

Does the hreflang-target check judge translations it never measured?

No. Unmeasured targets are skipped. Inspect those destinations separately when the crawl did not save a usable result.