Free tool

Hreflang Tags Validator

Paste a list of URLs and check their hreflang tags in one pass. It also fetches the declared alternates, so reciprocity is genuinely verified.

Tip: add all URLs from your hreflang group to also detect bidirectionality errors (broken return tags).

0/10 URLs
0 / 100 URLs usadas

What this validator checks

The validator downloads the HTML of every URL you give it, finds the hreflang attribute on all '<link rel="alternate">' tags in the '<head>' and runs six checks. It also downloads the alternates those attributes declare, even ones you did not submit: reciprocity cannot be verified without them. Nothing to install, no access to your site required.

1

Return tag

Fetches each declared alternate and checks that it links back. If A points to B but B does not point to A, Google discards the entire group. Error.

2

Self-reference

Verifies the URL includes itself in its group. If the URL you submit redirects, the final one is analysed and the redirect is reported. Error.

3

Hreflang attribute values

Validates each attribute value against the full BCP 47 shape: language, optional script (zh-Hant) and region, whether ISO 3166-1 or UN M49 (es-419). Catches codes that do not exist and retired ones Google no longer processes, such as “uk” instead of “GB”. Error.

4

Broken or redirecting alternates

Checks the HTTP status of every alternate. A 404 or 5xx invalidates the group and is flagged as an error; a redirect is a warning, since Google follows it but the final URL should be declared.

5

Canonical conflict

Reads the page canonical and warns when it points elsewhere. The canonical outranks hreflang, so a conflict voids the whole group even when the tags are correct. Error.

6

x-default

Warns when the x-default tag is missing. It is not mandatory, so this is a warning rather than an error.

How to check your site’s hreflang step by step

The checker needs no access to your site and nothing to install: it works on the public HTML of the URLs you give it. The only requirement is handing them over as a group.

  1. 1

    Gather the URLs of one group. These are the language versions of a single page — the product page in English, in Spanish and in French — not different pages.

  2. 2

    Paste them into the field, one per line. If they live in a spreadsheet or your sitemap, use “Paste list” and it splits them for you.

  3. 3

    Hit “Validate hreflang”. Every URL is downloaded and compared against the rest of the group. If one declares in its attributes an alternate you did not include, that gets downloaded too so reciprocity can be checked.

  4. 4

    Fix the errors first and the warnings after. A single error is enough for Google to discard the whole group, so the order matters: while it stands, fixing anything else achieves nothing.

You can check a single URL and the validator will still fetch its alternates on its own. But handing it the full group is faster and gives every URL its own diagnosis, instead of only appearing as somebody else’s alternate.

How to read the result

Every analysed URL gets one of these three states. The state comes from the most serious issue found: a single error turns the whole URL red.

No errors

All four checks passed. The hreflang group for that URL is consistent and Google can process it. Nothing to do.

Warnings

Nothing is broken, but something recommended is missing — usually x-default. Google will still process the group; fixing it gives you more control over which version is served to users who match none of the declared languages.

Errors found

At least one fault makes Google ignore the hreflang group, fully or in part. Fix it before going further: while the error stands, the remaining tags do nothing for you.

Validate several URLs at once

Hreflang is reciprocal by definition: a fault only shows up when you compare the pages in a group against each other. That is why the validator takes a list of URLs rather than a single one. Paste one URL per line — usually every language version of the same page — and it analyses them in one pass.

https://example.com/product
https://example.com/es/producto
https://example.com/fr/produit
https://example.com/de/produkt

Always use the final canonical URLs exactly as they appear in your tags: same protocol, same www or lack of it, same trailing-slash convention. One formatting difference is enough for Google to fail to pair the versions.

Can I use hreflang and canonical together?

Yes, and it is actually the recommended setup. The key is that each version has a self-referential canonical (pointing to itself). The error occurs when the canonical points to a different version while hreflang tries to declare the page as a valid alternate.

Correct setup

The es-ES page has a canonical pointing to itself AND hreflang declaring the full group. Google understands it is a legitimate, independent version.

Incorrect setup

The es-ES page has a canonical pointing to en-US (incorrect consolidation). Google will ignore the hreflang because the canonical tells it that es-ES is a duplicate of en-US.

Frequently asked questions about hreflang

Guides on hreflang

The validator tells you what is broken. These guides explain why it breaks and how to fix it.

What Is Hreflang and How to Implement It Correctly

Hreflang tells Google which version of your content to show based on the user's language and country. Learn how to implement it, the correct attributes, and the mistakes that can invalidate your entire configuration.

Read guide

The 7 Most Common Hreflang Errors and How to Fix Them

Poorly implemented hreflang can cause Google to show the wrong version of your site in every country. These are the most frequent errors, how to detect them, and how to correct them.

Read guide

Hreflang in XML Sitemaps: Implementation for Large Sites

For sites with thousands of pages, adding hreflang to every HTML file is impractical. The XML sitemap centralizes all configuration in one place. Learn the correct structure and how to avoid the most common mistakes.

Read guide

International SEO: ccTLD vs Subdomain vs Subfolder

URL structure is the first international SEO decision you will make and the hardest to change. We compare ccTLD, subdomain, and subfolder in terms of domain authority, cost, geographic signals, and maintenance overhead.

Read guide

How to Implement Hreflang in WordPress: WPML, Polylang and Without a Plugin

A practical guide to hreflang in WordPress. When WPML is worth it, when Polylang is enough, how to do it without a multilingual plugin, and the errors each method produces.

Read guide

How to Implement Hreflang in Shopify: Markets, theme.liquid and Separate Stores

Shopify generates hreflang automatically with Markets, but not always correctly. How to configure it, fix what the platform leaves out, and write it by hand for country-specific stores.

Read guide

How to Implement Hreflang in Next.js with the App Router

Hreflang in Next.js is declared with alternates.languages inside generateMetadata, no SEO library needed. App Router, next-intl, translated routes and the unprefixed default locale.

Read guide

How to Implement Hreflang in PrestaShop: Multilanguage, Multistore and head.tpl

PrestaShop generates hreflang across languages within one shop, but not across shops in a multistore setup. How to configure it, cover multi-domain with head.tpl and avoid id_lang errors.

Read guide

How to Implement Hreflang in Magento 2: Store Views, Extensions and XML

Magento 2 does not generate hreflang natively. How to implement it with an extension or your own layout XML, and how to avoid store code URL errors and catalogue gaps between store views.

Read guide