hreflang Tags Tester
Crawl a live page's hreflang annotations and catch what breaks international SEO silently: invalid locale codes, duplicate values, a missing self-reference, a missing x-default — and alternates that don't link back (hreflang must be reciprocal, or search engines ignore it).
Input
The page is fetched server-side and its hreflang <link> tags are extracted and validated.
Output
| Severity | hreflang | Issue |
|---|---|---|
| No data yet | ||
| hreflang | URL | Self | Links back? |
|---|---|---|---|
| No data yet | |||
Guides
What the hreflang Tags Tester does
Enter a live URL and this tool fetches the page, extracts every <link rel="alternate" hreflang="…"> tag in its <head>, and checks it against the rules search engines actually enforce: valid locale codes, no duplicates, a self-reference, an x-default fallback — and, by fetching each alternate URL too, whether it links back. hreflang only works when it's reciprocal: if page A points to page B, B must point to A, or the pair is ignored.
How to use it
- Enter the full URL of the page you want to audit.
- Click Test hreflang tags. The page — and every alternate URL it lists, up to 15 — is fetched server-side (cross-origin HTML can't be read in the browser).
- Review the Issues table for anything to fix, and the Tags found table to see each declared locale, its URL, and whether it links back.
What gets flagged
- Invalid locale codes — a country code used where a language belongs (e.g.
ukinstead ofen-GB), or a value that isn't valid BCP 47. - Duplicate hreflang values — the same locale declared twice, which can invalidate the whole set.
- Missing self-reference — the page should list itself among its own alternates.
- Missing x-default — recommended as a fallback for visitors whose locale matches none of the alternates.
- Non-reciprocal alternates — an alternate URL that doesn't point back to this page. This is the check a tag list alone can't catch, because it requires fetching the other page.
Why hreflang breaks silently
A malformed or one-way hreflang tag doesn't throw an error or fail validation anywhere visible — search engines just ignore it, and the wrong language version keeps showing up in search results for the wrong locale. Because there's no feedback loop, these mistakes often ship and stay live for months. Auditing the deployed page, rather than trusting the markup you meant to publish, is the only way to catch what's actually there.
Building hreflang tags instead of testing them?
Use the hreflang Tag Generator to build a correct set of <link>, XML sitemap, or HTTP header tags from a list of locale/URL pairs — then come back here once it's deployed to confirm it's reciprocal in the wild.
Privacy
URLs are fetched by our server only to read their hreflang tags and aren't stored. Requests to private or local network addresses are blocked.
Use it from code
From 3 credits per callREST API
curl -X POST https://api.iotools.cloud/v1/tool/hreflang-tags-tester \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://developers.google.com/search/docs/specia…"
}'Swap in your own key from your account. The tool's fields are the body — no wrapper.
Ask an AI agent
Use the IOTools `hreflang-tags-tester` tool (hreflang Tags Tester) on this input:
YOUR_INPUT_HEREPaste this at any agent connected to the IOTools MCP server, then add your input.