Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Hreflang and international SEO audit, validation, and generation. Detects common mistakes, validates language/region codes, and generates correct hreflang implementations. Use when user says "hreflang", "i18n SEO", "international SEO", "multi-language", "multi-region", or "language tags".
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | 176% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 208% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 140% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 199% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 119% | 0% |
Validate existing hreflang implementations or generate correct hreflang tags for multi-language and multi-region sites. Supports HTML, HTTP header, and XML sitemap implementations.
en, fr, de, ja)for script: zh-Hant (Traditional) / zh-Hans (Simplified). Script may combine with a region, e.g. zh-Hans-US is valid (language + script + region).
eng instead of en (ISO 639-2, not valid for hreflang)jp instead of ja (incorrect code for Japanese)zh is valid but ambiguous for script-specific pages; prefer zh-Hans or zh-Hant when targeting a scripten-US, en-GB, pt-BR)language-REGION (lowercase language, uppercase region)language (Google's own bad example is be, which is actually the Belarusian language code, not Belgium).
en-uk instead of en-GB (UK is not a valid ISO 3166-1 region code)EU / UN as a region (not valid ISO 3166-1 values)es-LA (Latin America is not a country; use specific countries)server location/IP > addresses/language/currency/Business Profile. Do not present this as a confirmed Google ranking order. hreflang is a hint, not a directive. Google ignores locational meta tags and HTML geotargeting attributes.
country-targeting setting were removed in 2022, do not recommend setting country targeting in GSC; hreflang is the remaining lever.
rel=canonical pointing elsewhere, hreflang on that page is ignored| Issue | Severity | Fix | |-------|----------|-----| | Missing self-referencing tag | Critical | Add hreflang pointing to same page URL | | Missing return tags (A→B but no B→A) | Critical | Add matching return tags on all alternates | | Missing x-default when fallback behavior is required | Medium | Add x-default pointing to fallback/selector page | | Invalid language code (e.g., eng) | High | Use ISO 639-1 two-letter codes | | Invalid region code (e.g., en-uk) | High | Use ISO 3166-1 Alpha-2 codes | | Hreflang on non-canonical URL | High | Move hreflang to canonical URL only | | HTTP/HTTPS mismatch in URLs | Medium | Standardize all URLs to HTTPS | | Trailing slash inconsistency | Medium | Match canonical URL format exactly | | Hreflang in both HTML and sitemap | Low | Choose one method (sitemap preferred for large sites) | | Language without region when needed | Low | Add region qualifier for geo-targeted content |
Best for: Sites with <50 language/region variants per page.
html<link rel="alternate" hreflang="en-US" href="https://example.com/page" /> <link rel="alternate" hreflang="en-GB" href="https://example.co.uk/page" /> <link rel="alternate" hreflang="fr" href="https://example.com/fr/page" /> <link rel="alternate" hreflang="x-default" href="https://example.com/page" />
Place in <head> section. Every page must include all alternates including itself.
Best for: Non-HTML files (PDFs, documents).
Link: <https://example.com/page>; rel="alternate"; hreflang="en-US",
<https://example.com/fr/page>; rel="alternate"; hreflang="fr",
<https://example.com/page>; rel="alternate"; hreflang="x-default"Set via server configuration or CDN rules.
Best for: Sites with many language variants, cross-domain setups, or 50+ pages.
See Hreflang Sitemap Generation section below.
| Method | Best For | Pros | Cons | |--------|----------|------|------| | HTML link tags | Small sites (<50 variants) | Easy to implement, visible in source | Bloats <head>, hard to maintain at scale | | HTTP headers | Non-HTML files | Works for PDFs, images | Complex server config, not visible in HTML | | XML sitemap | Large sites, cross-domain | Scalable, centralized management | Not visible on page, requires sitemap maintenance |
xml<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"> <url> <loc>https://example.com/page</loc> <xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/page" /> <xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/page" /> <xhtml:link rel="alternate" hreflang="de" href="https://example.de/page" /> <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page" /> </url> <url> <loc>https://example.com/fr/page</loc> <xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/page" /> <xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/page" /> <xhtml:link rel="alternate" hreflang="de" href="https://example.de/page" /> <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page" /> </url> </urlset>
Key rules:
xmlns:xhtml namespace declaration<url> entry must include ALL language alternates (including itself)<url> entry with its own full set| Language | URL | Self-Ref | Return Tags | x-default | Status | |----------|-----|----------|-------------|-----------|--------| | en-US | https://... | ✅ | ✅ | ✅ | ✅ | | fr | https://... | ❌ | ⚠️ | ✅ | ❌ | | de | https://... | ✅ | ❌ | ✅ | ❌ |
<link> tags (if HTML method chosen)hreflang-sitemap.xml (if sitemap method chosen)When analyzing a multi-language site, go beyond technical hreflang validation to assess whether the content is culturally adapted for each target market.
Load references/cultural-profiles.md for pre-built profiles (DACH, Francophone, Hispanic, Japanese).
Assessment steps:
Output: Cultural Adaptation Score per language version (0-100) with specific findings.
Command: /seo hreflang audit <directory-or-url>
Audit content parity across all language versions of a site or local content directory.
Load references/content-parity.md for the full parity matrix and scoring methodology.
What it checks:
Output: Parity matrix table with per-page scores and prioritized action items.
Load references/locale-formats.md for number, date, currency, address, and phone format reference tables per locale.
Checks:
Load on-demand as needed (do NOT load all at startup):
references/cultural-profiles.md: DACH, Francophone, Hispanic, Japanese cultural adaptation profilesreferences/locale-formats.md: Number, date, currency, address, phone format tables per localereferences/content-parity.md: Content parity audit methodology and scoring| Scenario | Action | |----------|--------| | URL unreachable (DNS failure, connection refused) | Report the error clearly. Do not guess site structure. Suggest the user verify the URL and try again. | | No hreflang tags found | Report the absence. Check for other internationalization signals (subdirectories, subdomains, ccTLDs) and recommend the appropriate hreflang implementation method. | | Invalid language/region codes detected | List each invalid code with the correct replacement. Provide a corrected hreflang tag set ready to implement. | | Cultural profile not available for language | Use the Default Profile checklist from cultural-profiles.md. Note that assessment is based on general guidelines, not a pre-built profile. | | Content parity directory empty | Report that no content files were found. Suggest verifying the directory path or providing a URL for live site analysis. |
Other measured skills in the registry, with their headline benchmark lift.