An hreflang declaration uses a non-absolute address

In the reportHreflang URL not fully qualified

hreflang_href_not_absolute · Issue

Short answer

This appears when an hreflang annotation names an alternate with a relative address, such as /fr/ or //bakery.example/fr/, instead of an absolute HTTP(S) address. Google requires fully qualified addresses, scheme included. Write every alternate as a full address.

Severity: High. Such annotations do not meet Google's requirement, and they block most declaration comparisons until fixed; the media-attribute check remains independent.

Why it matters

Google's guide to localized versions says alternate URLs must be fully qualified, including the transport method, and gives a protocol-relative address and a bare path as forms not to use.

What to do

  1. Look at the finding: it shows each annotation with a relative address, as written, and where it was.
  2. Write the full address, for example https://bakery.example/fr/, in the HTML, the Link header or the sitemap, wherever the finding points.
  3. Check your template or plugin settings: relative addresses usually come from one place.

What we read

We read the three places where a page can list its language versions: <link rel="alternate" hreflang> tags anywhere in its HTML, an hreflang Link header in its response, and the xhtml:link entries for its address in your sitemaps, each sitemap file on its own. This rule makes no additional request and does not run JavaScript.

An annotation is reported when its address has no scheme — /fr/, fr/ or //bakery.example/fr/ — and still resolves to a valid address: an HTML tag uses the effective document base, the first non-inert <base href> when it resolves to a usable web address, otherwise the page address; a Link header or sitemap entry uses the page's own address. An empty address or a mailto: one is not itself reported here.

A page is marked as not checked when one of the three could not be read in full, for example HTML with unsupported SVG markup, <noscript> or <select> element, or a sitemap file that could not be read in full. An empty or malformed address blocks a clean pass unless another valid relative entry is found. Relative addresses block most other declaration comparisons; the media-attribute check remains independent.

Example & evidence

Illustrative example — one annotation, not a live audit.

https://bakery.example/en/ has:

<link rel="alternate" hreflang="fr" href="/fr/">

The address has no scheme or host, so the page is reported with the annotation.

<link rel="alternate" hreflang="fr" href="https://bakery.example/fr/">

A possible correction: the full address.

Confirm & check again

Check for yourself: view the page source and check that every hreflang href is an absolute HTTP(S) address, including its scheme.

Check again: Full audit — run a new audit of the site. The finding closes when the page is crawled again, the places this check reads are read in full, and every alternate is a full address. Removing the page's hreflang also closes it; a page that cannot be read, or answers 404, keeps the finding open.

Limits & sources

The check reads the address as written and makes no additional request to it, so it says nothing about whether the full address works.

Confidence: High because the annotations are read directly.

Sources

Editorial review: 29 October 2026