---
title: "hreflang uses invalid codes or relative URLs (seo/hreflang-invalid)"
description: "seo/hreflang-invalid: Google ignores hreflang annotations with invalid language/region codes (en_US, region-only) or non-absolute URLs."
canonical: https://void-design.vercel.app/rules/seo/hreflang-invalid
lastModified: 2026-09-16
---

# hreflang uses invalid codes or relative URLs

`seo/hreflang-invalid` · severity **error** · category SEO · detected by `void seo` and `void audit`

## Why it matters

Google ignores hreflang annotations with invalid language/region codes (en_US, region-only) or non-absolute URLs.

## How to fix it

Use ISO 639-1 language with optional ISO 3166-1 region (en, en-GB) or x-default, with absolute URLs.

## Example

```ts
export const metadata: Metadata = {
  alternates: {
    canonical: '/en/pricing',
    languages: { en: '/en/pricing', 'de-DE': '/de/pricing', 'x-default': '/en/pricing' },
  },
}
```

## References

- https://developers.google.com/search/docs/specialty/international/localized-versions

## More seo rules

`void seo` reports 60 rules in this category. What search engines need from the raw response: status codes, titles and descriptions in <head>, self-referencing canonicals, one h1, crawlable links, Open Graph, icons, robots.txt and a sitemap with real dates.

- `links-not-crawlable` Navigation uses elements crawlers can't follow — [seo/links-not-crawlable](https://void-design.vercel.app/rules/seo/links-not-crawlable)
- `link-text` Links with generic or empty text — [seo/link-text](https://void-design.vercel.app/rules/seo/link-text)
- `broken-links` Internal links return 4xx/5xx (or go through redirects) — [seo/broken-links](https://void-design.vercel.app/rules/seo/broken-links)
- `trailing-slash` Both trailing-slash and non-slash URLs serve 200 — [seo/trailing-slash](https://void-design.vercel.app/rules/seo/trailing-slash)
- `hreflang-not-reciprocal` hreflang set isn't self-referencing and reciprocal — [seo/hreflang-not-reciprocal](https://void-design.vercel.app/rules/seo/hreflang-not-reciprocal)
- `og-missing` Required Open Graph tags missing (og:title, og:type, og:image, og:url) — [seo/og-missing](https://void-design.vercel.app/rules/seo/og-missing)
- `og-incomplete` og:description / og:site_name missing, or og:url ≠ canonical — [seo/og-incomplete](https://void-design.vercel.app/rules/seo/og-incomplete)
- `og-image-invalid` og:image isn't a reachable, absolute, raster image within size limits — [seo/og-image-invalid](https://void-design.vercel.app/rules/seo/og-image-invalid)

Detected by `void seo` and `void audit`. Explain it in a terminal: `void rules seo/hreflang-invalid`
