An hreflang declaration uses a non-absolute address
In the reportHreflang URL not fully qualified
hreflang_href_not_absolute · Issue
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
- Look at the finding: it shows each annotation with a relative address, as written, and where it was.
- Write the full address, for example
https://bakery.example/fr/, in the HTML, theLinkheader or the sitemap, wherever the finding points. - 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
- Google, Tell Google about localized versions of your page — requires alternate URLs to be fully qualified, including http or https, and names protocol-relative and path-only addresses as forms not to use. Checked 28 September 2026.
Editorial review: 29 October 2026