Hreflang checker

Which language versions does this page name, and does each of them name it back?

Baca dalam bahasa Indonesia

For example yourbusiness.com/services

The checker runs in your browser with JavaScript, which is off here. To have a person look at the page instead: Request a Search Presence Review

The report is kept for 24 hours, and only this browser can open it. How scans are handled

Want a person to read it? Request a Search Presence Review Know what needs changing? Discuss your project

What it checks

The checker reads the hreflang links in the page, its HTTP Link header and its sitemaps, then fetches each version they name, robots.txt first, as a crawler would: 19 checks in three groups. The report names each one with what it found, why it matters and how to check it yourself.

All 19 checks

Surface

How the address answers, and where it leads.

  • The answer the address gives If the page answers with an error, Google can drop it from its search results.
  • Redirects before the page Each redirect is a detour on the way to the page, and too many make Google give up.
  • The answer each version gives Each language version must open as itself; an error or a redirect makes Google skip it.

Structure

The tags and headers a crawler reads.

  • Content added by scripts Content that scripts add later may be read late, or not at all, by some search engines.
  • The language versions declared Language tags tell Google which version of the page to show to people in each language.
  • Language and region codes Google ignores language versions marked with codes it does not support.
  • Full addresses for the versions Each language version must be named by its full web address, or Google cannot use it.
  • This page among its versions Each page should also name itself among its language versions, as Google asks.
  • One address for each code One language with two addresses leaves Google unsure which one to show.
  • A version for every other language A default version tells Google what to show people whose language you do not cover.
  • hreflang links in the head Google ignores language tags that stand outside the head, the top part of the page’s code.
  • The same set on every version Every language version should name the same set of versions, so Google sees one clear group.

Presence

Permission to crawl and index, and the sitemap.

  • robots.txt for Googlebot If robots.txt blocks Google’s crawler, Google cannot read this page.
  • The robots meta tag A noindex tag asks Google not to show the page in its search results at all.
  • The X-Robots-Tag header A noindex in the page’s headers asks Google not to show it in its search results at all.
  • Links back from the other versions Language versions must point back to each other, or Google ignores the pair.
  • Versions that are their own canonical A language version that names another page as its main one asks Google to show that page instead.
  • Versions Google may crawl and index A language version that is blocked from Google, or marked noindex, cannot be shown to its readers.
  • This page as its own canonical If this page names another page as its main one, Google may show that page instead.

Example

A real check of tulus.studio, made on 15 October 2026.

The example report

Report: https://tulus.studio/tools/indexability-checker

Checked
15 October 2026, 04:24 WIB

2 pages inspected: the page and the language versions it names. 17 applicable checks ran; 1 not tested.

Nothing to fix.

The checks in each group
  • Surface:

    3 passed

    How the address answers, and where it leads.

  • Structure:

    7 passed

    The tags and headers a crawler reads.

  • Presence:

    7 passed

    Permission to crawl and index, and the sitemap.

Each piece of a ring is one check.

  • Passed
  • Warning
  • Error
The language versions

What this page declares

  • id https://tulus.studio/id/tools/cek-indexability HTML, line 1
  • en https://tulus.studio/tools/indexability-checker HTML, line 1
  • x-default https://tulus.studio/tools/indexability-checker HTML, line 1

Which versions name this page back

This page in the middle: 1 of 1 versions names it back.

Version Answer Names this page back Canonical May be indexed
en, x-default This page https://tulus.studio/tools/indexability-checker Answer 200 Names this page back Not applicable Canonical Itself May be indexed Yes
id https://tulus.studio/id/tools/cek-indexability Answer 200 Names this page back Yes Canonical Itself May be indexed Yes

Surface

3 of 3 applicable checks passed

How the address answers, and where it leads.

3 checks with nothing to fix
The answer the address gives

Passed Observed

The address, after any redirects, answered with a success status (2xx).

More about this check
Why it matters
Google considers a page for indexing when it answers 2xx, though indexing is not certain even then. Google does not index an address that answers 4xx, and drops one that keeps answering 5xx.
How to check it
Run curl -IL with the address and read the status of the last answer. In Search Console, a live test of the final address in URL Inspection shows whether Google could fetch it.

Official documentation: How HTTP status codes affect Google’s crawlers

Evidence

  1. Answer https://tulus.studio/tools/indexability-checker

    200 OK
The answer each version gives

Passed Observed

Every version asked answered itself, with a success status (2xx). Versions asked: 1.

More about this check
Why it matters
Each version named should answer with the page itself. Google ignores the content of an address that redirects and processes the target instead, and does not index an address that answers 4xx. Google also advises against automatically redirecting visitors from one language version to another.
How to check it
Run curl -I with each version’s address: it should answer 200, with no Location header.

Official documentation: Tell Google about localized versions of your page

Evidence

  1. Answer https://tulus.studio/id/tools/cek-indexability

    200 OK
Redirects before the page

Passed Observed

The address led to the page directly or through no more than three redirects.

More about this check
Why it matters
Google advises redirecting straight to the final address; failing that, ideally no more than 3 hops and fewer than 5. Its crawlers follow up to 10; Search Console reports a chain too long, or a loop, as a redirect error.
How to check it
Run curl -IL with the address: it prints each answer in turn, and only the last should be 200.

Official documentation: Redirects and Google Search

Evidence

  1. Answer https://tulus.studio/tools/indexability-checker

    200 OK

Structure

7 of 7 applicable checks passed

The tags and headers a crawler reads.

8 checks with nothing to fix
The language versions declared

Information Observed

Language versions declared in link elements: 3. In the HTTP Link header: 0.

More about this check
Why it matters
When a page has versions in other languages or for other regions, hreflang tells Google about each one, so that Google Search can link people to the right version. A page that exists in one language needs none.
How to check it
View the page source and search for hreflang. Run curl -I with the address to read any Link header.

Official documentation: Tell Google about localized versions of your page

Evidence

  1. HTML https://tulus.studio/tools/indexability-checker line 1, column 556

    <link rel="alternate" hreflang="id" href="https://tulus.studio/id/tools/cek-indexability">
  2. HTML https://tulus.studio/tools/indexability-checker line 1, column 646

    <link rel="alternate" hreflang="en" href="https://tulus.studio/tools/indexability-checker">
  3. HTML https://tulus.studio/tools/indexability-checker line 1, column 737

    <link rel="alternate" hreflang="x-default" href="https://tulus.studio/tools/indexability-checker">
Language and region codes

Passed Observed

Every hreflang value is a code Google supports: a language, optionally with a script and a region, or x-default.

More about this check
Why it matters
Google reads a language code from ISO 639-1, optionally followed by a region code from ISO 3166-1 alpha-2, such as en-GB. A region alone is not valid. Codes outside those lists, such as es-419, are not supported, and Google ignores a region code that is reserved for something else, such as UK or EU.
How to check it
Look each language up in ISO 639-1 and each region in ISO 3166-1 alpha-2, the two lists Google names.

Official documentation: Tell Google about localized versions of your page

Evidence

Nothing to show: the finding rests on what is absent from the page.

Full addresses for the versions

Passed Observed

Every version is named by a full address that starts with http:// or https://.

More about this check
Why it matters
Google asks for every alternate address to be fully qualified, including http or https: https://example.com/foo, not //example.com/foo or /foo.
How to check it
In the page source, check that the address of every hreflang link starts with https://.

Official documentation: Tell Google about localized versions of your page

Evidence

Nothing to show: the finding rests on what is absent from the page.

This page among its versions

Passed Observed

The page names itself among its language versions.

More about this check
Why it matters
Google asks that each language version list itself as well as all the other language versions.
How to check it
In the page source, find an hreflang link whose address is the page’s own full address.

Official documentation: Tell Google about localized versions of your page

Evidence

  1. HTML https://tulus.studio/tools/indexability-checker line 1, column 646

    <link rel="alternate" hreflang="en" href="https://tulus.studio/tools/indexability-checker">
  2. HTML https://tulus.studio/tools/indexability-checker line 1, column 737

    <link rel="alternate" hreflang="x-default" href="https://tulus.studio/tools/indexability-checker">
hreflang links in the head

Passed Observed

Every link element with hreflang stands in the head of the page.

More about this check
Why it matters
Google asks for hreflang link elements inside a well-formed head. An element that does not belong in the head, such as an img or an iframe, ends it early for Google, which ignores the elements after it.
How to check it
In the page source, check that the hreflang links sit inside the head, with no img, iframe or other body element above them.

Official documentation: Tell Google about localized versions of your page

Evidence

  1. HTML https://tulus.studio/tools/indexability-checker line 1, column 556

    <link rel="alternate" hreflang="id" href="https://tulus.studio/id/tools/cek-indexability">
  2. HTML https://tulus.studio/tools/indexability-checker line 1, column 646

    <link rel="alternate" hreflang="en" href="https://tulus.studio/tools/indexability-checker">
  3. HTML https://tulus.studio/tools/indexability-checker line 1, column 737

    <link rel="alternate" hreflang="x-default" href="https://tulus.studio/tools/indexability-checker">
One address for each code

Passed Observed

Each hreflang value names one address.

More about this check
Why it matters
Google describes one link for each version of the page. When one code names two addresses, the declaration does not say which of them is the version for that language or region.
How to check it
In the page source and any Link header, check that no hreflang value appears twice with different addresses.

Official documentation: Tell Google about localized versions of your page

Evidence

Nothing to show: the finding rests on what is absent from the page.

A version for every other language

Passed Observed

An x-default names the version for visitors whose language matches none of the others: https://tulus.studio/tools/indexability-checker.

More about this check
Why it matters
The reserved value x-default names the page for visitors whose language settings match none of your versions. Google recommends it, and says it was designed for language selector pages and works best with those.
How to check it
In the page source, search for x-default.

Official documentation: Tell Google about localized versions of your page

Evidence

  1. HTML https://tulus.studio/tools/indexability-checker line 1, column 737

    <link rel="alternate" hreflang="x-default" href="https://tulus.studio/tools/indexability-checker">
The same set on every version

Passed Inferred

The versions read name the same set of versions as this page.

More about this check
Why it matters
Google asks that the set of hreflang links be identical on every version of the page. If a complete set is hard to keep, Google allows leaving some languages out on some pages, and still uses the pairs that point to each other.
How to check it
Compare the hreflang links in the source of each version listed with those of this page.

Official documentation: Tell Google about localized versions of your page

Evidence

Nothing to show: the finding rests on what is absent from the page.

Not tested (1)
  • Content added by scripts Not tested This needs a browser that runs the page’s scripts. The checker reads the HTML the server sends and runs nothing.

Presence

7 of 7 applicable checks passed

Permission to crawl and index, and the sitemap.

7 checks with nothing to fix
robots.txt for Googlebot

Passed Observed

Nothing in robots.txt forbids Googlebot to fetch this address.

More about this check
Why it matters
Google does not crawl or index content that robots.txt blocks. The address itself can still appear in search results, without a description, when other pages link to it.
How to check it
In Search Console, URL Inspection reports whether crawling is allowed for this address, and the robots.txt report shows the file Google last fetched.

Official documentation: How Google interprets the robots.txt specification

Evidence

  1. robots.txt https://tulus.studio/robots.txt line 1

    User-agent: *
  2. robots.txt https://tulus.studio/robots.txt line 2

    Allow: /
The robots meta tag

Passed Observed

No robots or googlebot meta tag in the page carries noindex or none.

More about this check
Why it matters
When Googlebot crawls a page and finds noindex, Google drops the page from its search results, even when other sites link to it. The rule none means noindex, nofollow.
How to check it
View the page source and search for noindex. URL Inspection in Search Console shows whether indexing is allowed.

Official documentation: Block Search indexing with noindex

Evidence

  1. HTML https://tulus.studio/tools/indexability-checker line 1, column 835

    <meta name="robots" content="index, follow, max-image-preview:large">
The X-Robots-Tag header

Passed Observed

No X-Robots-Tag header in the answer carries noindex or none for all crawlers or for Googlebot.

More about this check
Why it matters
The X-Robots-Tag header has the same effect as a robots meta tag, and it also covers files such as PDFs. When Googlebot finds noindex or none in it, Google drops the address from its search results.
How to check it
Run curl -I with the address and read any X-Robots-Tag lines. URL Inspection in Search Console shows whether indexing is allowed.

Official documentation: Robots meta tag, data-nosnippet, and X-Robots-Tag specifications

Evidence

Nothing to show: the finding rests on what is absent from the page.

Versions that are their own canonical

Passed Observed

Every version read names itself as canonical, or names none.

More about this check
Why it matters
A canonical asks Google to show another address in place of the page, and Google uses the canonical page as the main source to evaluate content. With hreflang, Google advises naming a canonical in the same language, or the best substitute language when there is none.
How to check it
Open each version listed, view its source, and check that its canonical is its own full address.

Official documentation: How to specify a canonical URL with rel="canonical" and other methods

Evidence

Nothing to show: the finding rests on what is absent from the page.

Versions Google may crawl and index

Passed Observed

Every version read may be fetched by Googlebot and carries no noindex.

More about this check
Why it matters
Google does not crawl content that robots.txt blocks, so it cannot read a blocked version or its links back. A noindex makes Google drop the page from its search results.
How to check it
In Search Console, inspect each version with URL Inspection: it shows whether crawling and indexing are allowed.

Official documentation: Tell Google about localized versions of your page

Evidence

Nothing to show: the finding rests on what is absent from the page.

This page as its own canonical

Passed Observed

The page names itself as canonical, or names none.

More about this check
Why it matters
A canonical asks Google to show another address in place of this page, and Google uses the canonical page as the main source to evaluate content. With hreflang, Google advises naming a canonical in the same language, or the best substitute language when there is none.
How to check it
View the page source, search for canonical, and compare its address with the page’s own.

Official documentation: How to specify a canonical URL with rel="canonical" and other methods

Evidence

Nothing to show: the finding rests on what is absent from the page.

Checked in 2.5 s with 5 requests, 62 kB received.

What this check cannot see

Two things about this page stay out of a public check’s reach:

  • Which version Google shows to which searcher. Hreflang helps Google choose; the choice is Google’s.
  • Language versions the page’s own scripts add after it loads. The checker reads the HTML and the headers the server sends.

Everything a public scan cannot see