Skip to content
New: free AI crawler checker. See if ChatGPT and Claude can read your site. Check now
Get a free audit
Get a free audit Contact us +91 96211 05242

Popular

  • Free, no sign-up
  • Every alternate opened
  • Checker and generator

Free Hreflang Checker and Generator

Paste a page or a sitemap and the checker opens every language version it names: does each one link back, use a valid code, return 200, keep its own canonical and stay indexable? Each version gets its own card, so a missing return link shows at a glance, each problem comes with the fix, and Google's rules are kept apart from best practice. The generator writes the tags for you as HTML, a sitemap block or an HTTP header, x-default included. No sign-up.

Hreflang Checker · We fetch the page and each version it lists from our server, as Googlebot would see the raw HTML. Nothing you enter is stored.

How useful was this tool?

Be the first to rate it.

How to use it

Check the set, fix it, write the tags

  1. Paste a page or a sitemap

    One language version is enough: we read its head and HTTP Link header, then open every version it lists. Or paste a sitemap and we check its hreflang sets.

  2. Read the cards and the problems

    One card per version: what it lists, whether each one links back, its status, canonical and own code. Every problem comes with the fix, Google's rules first.

  3. Fix the tags, or let the generator write them

    The set is filled into the generator with the codes and final URLs corrected. Copy it for every page as HTML, a sitemap block or an HTTP header.

Built forEnglish and Hindi sitesSites selling abroadMigrationsAudits

Quick answer

What does a hreflang checker do?

A hreflang checker reads a page's hreflang annotations, from the HTML head, the HTTP Link header or the sitemap, and then opens each alternate URL to confirm it lists the first page back, because Google ignores any pair that does not confirm each other. It also checks that every code is an ISO 639-1 language with an optional ISO 3166-1 region (en-GB, not en-UK; hi-IN, not IN), that every URL is absolute, and that each version returns 200, is indexable and canonicalises to itself. A generator does the reverse: list your URLs and languages and it writes the full set for every page, including x-default.

What really breaks

Google's rules vs best practice

Google's rules (from its page on localized versions; break one and Google ignores the tag or the pair):

  • Return links: if page A lists page B, page B must list page A.
  • Fully qualified URLs with https:// and the domain; not /hi/page or //example.com/hi/page.
  • Valid codes: an ISO 639-1 language, then an optional ISO 15924 script and ISO 3166-1 region. es-419 is not supported, and UK, EU and UN have no effect.
  • The tags sit in the head, and hreflang is not combined with media in one tag.

Best practice (what crawlers such as Screaming Frog flag; worth fixing, but Google does not drop the set for them):

  • Every alternate returns 200, not a redirect or an error.
  • Every version canonicalises to itself, never to another language.
  • Every version lists itself, and no version carries noindex.
  • An x-default for everyone whose language matches none of the versions.

The three methods (head tags, the HTTP Link header, the sitemap) are equal to Google. Pick one; using two gives no extra benefit and can disagree.

Codes

Codes that look right but are not

WrittenWhy it failsWrite
en-UKUK is a reserved code; the United Kingdom is GBen-GB
INA country alone, with no languageen-IN or hi-IN
inThe old code for Indonesian, not Indiaid (Indonesian) or en-IN
hi-HIHI is not a country codehi-IN
en_INAn underscore instead of a dashen-IN
en-UAEThree letters; the UAE's code is AEen-AE
es-419Area codes (Latin America) are not supportedes, or es-MX, es-AR...
englishThe name, not the codeen

Scripts are fine where a language has more than one: zh-Hans and zh-Hant, sr-Latn. Case does not matter (EN-in works), but en-IN is the usual way to write it.

India

English and Hindi in India

Use en-IN and hi-IN only when the pages are meant for India; plain en and hi reach English and Hindi speakers anywhere. Point x-default at the main version or at a language picker. Keep each Hindi page's canonical on the Hindi page itself: a Hindi page that canonicalises to the English one asks Google to show the English page instead. Hinglish, written in Latin script, needs no hreflang of its own; an English page serves it.

Other engines

Bing and Yandex

Bing calls hreflang a far weaker signal than content-language and reads the html lang attribute, the content-language meta and the Content-Language header. The checker shows a Bing note when a page's html lang does not match its hreflang. Yandex supports hreflang.

FAQ

Questions people ask

What is hreflang?

An annotation that tells Google which URLs are language or country versions of each other, so it shows searchers the right one.

Does every page need a self-referencing hreflang?

Google's guide says each version lists itself and every other version. The checker flags a missing self entry.

What is x-default and do I need it?

The version for everyone whose language matches none of the others. It is recommended, not required.

What happens if return links are missing?

Google ignores that pair of pages.

Should I use en-IN or just en?

en-IN only if the page is meant for India specifically; en for English speakers anywhere.

Can hreflang and canonical be used together?

Yes. Each version canonicalises to itself, never to the other language.

HTML tags, sitemap or HTTP header?

All three are equal to Google. Sitemaps suit large sites; the header suits PDFs and other files without a head.

Can hreflang point to another domain?

Yes, the versions can sit on different domains.

Does hreflang help rankings?

No. It swaps in the right version where the site already ranks.

Does the checker run JavaScript?

No. It reads the raw HTML, which is where hreflang must be right.

Keep going

More free tools and guides

Did this tool help you?

Tap a star. It takes a second, no sign-up.

–

No ratings yet.

5★0% 4★0% 3★0% 2★0% 1★0%

Every version, both ways

Return links, codes and canonicals checked, the tags written. Free.

Check my hreflang ↑