Home/Free SEO tools/Indexability Checker
Free tool · step 01 of 04 · Reachable & indexable

Indexability CheckerCan Google put this page in its index?

Find out exactly why a page can or can’t be indexed: noindex tags, robots.txt blocks, canonical conflicts and HTTP status, checked together.

Last reviewed · 1 Oct 202613 primary sources →Kalenux engineering
https://
HTTP statusmeta robotsX-Robots-Tagrobots.txtCanonicalSitemap consistency
indexability checker · example.com
75/ 100
1 to fix · 1 to review
4 passed · 1 warning · 1 failed
HTTP status200 OKPASS
meta robotsnoindex, followFAIL
X-Robots-Tagnot setPASS
robots.txtallowedPASS
Canonicalself-referencingPASS
In sitemapyes: conflicts with noindexWARN
illustrative result
fetched as crawler · 0.4s
5gates to the indexone no stops the page
13Google sourcesevery claim linked
240+checks in the auditon every URL you have
0signups neededpaste a URL and run it
the path from URL to index

Five gates decide whether a page is indexed at all.

Every one has to be open. The checker above tests all five in order on the URL you enter, stops at the first that is shut, and names it — free, and in a few seconds.

Those five are properties of one URL, which is why a single fetch settles them. Across a whole site another 68 checks apply that no single fetch can see, because they are relationships between URLs: which page duplicates which, what the sitemap claims, where a canonical eventually lands, what nothing links to.

checks made on a single page
  1. 1robots.txtIs the crawler allowed to fetch it?Disallow: /blog/ would stop it here✓ PASS
  2. 2HTTP statusDoes the URL return 200?A 404, 410 or 5xx stops it here✓ PASS
  3. 3Meta robotsAny noindex in the HTML?<meta name="robots" content="noindex">✕ BLOCKED
  4. 4X-Robots-TagAny noindex in the headers?Not reachedNOT REACHED
  5. 5CanonicalDoes the page point at itself?Not reachedNOT REACHED

Gate 3 is shut, so gates 4 and 5 are never reached. One blocked gate is enough.

    Canonical conflicts

    21

    Which URL Google keeps when several carry the same content.

    • canonical pointing at a redirect, a 404 or a noindex page
    • canonical chains, and several canonicals on one page
    • the sitemap and the canonical naming different URLs
    • Google choosing a canonical you did not nominate

    Sitemap conflicts

    19

    A sitemap that contradicts the pages it lists.

    • noindex, 3xx, 4xx or 5xx URLs listed as crawlable
    • indexable pages missing from the sitemap entirely
    • one page listed in several sitemaps at once
    • lastmod dated in the future, or absent

    Index directives

    18

    Every way a page can be told not to be stored.

    • noindex in the HTML, and X-Robots-Tag in the headers
    • noindex arriving only after JavaScript runs
    • pages that became non-indexable since the last crawl
    • Search Console reporting crawled, currently not indexed

    Redirects

    12

    Where a URL actually ends up, not where it claims to.

    • chains, loops, and redirects that end at an error
    • meta-refresh used in place of a real 3xx
    • 302 where a 301 was intended
    • internal links pointing at redirects rather than targets

    robots.txt

    6

    The file that decides what gets fetched at all.

    • rules blocking pages you want indexed
    • rules blocking the CSS and JS the page needs to render
    • the sitemap itself disallowed
    • a missing file, or one naming no sitemap

    Orphans and reachability

    5

    Pages nothing links to, which Google reaches late or never.

    • pages in the sitemap that no internal link reaches
    • pages with no incoming internal links at all
    • assets nothing references
    • pagination that breaks its own rel chain

    Duplicate content

    4

    Near-identical pages competing with one another.

    • near-duplicate body content, by shingle similarity
    • duplicate titles across pages
    • duplicate meta descriptions
    • duplicate H1s
the most common self-inflicted mistake

Blocking a page in robots.txt does not remove it.

robots.txt controls crawling, not indexing. Disallow a URL and Google stops fetching it — which also stops it reading the very tag that would have taken the page out. The URL can then stay in results, listed from its inbound links alone.

  1. 01

    You disallow the URL

    # robots.txt
    User-agent: *
    Disallow: /old/

    The intent is to get the page out of Google.

  2. 02

    The crawler stops at the door

    GET /old/page
    → blocked by robots.txt
    → noindex never seen

    The page is never fetched, so the noindex on it is never read.

  3. 03

    The URL stays in results

    example.com/old/page
    No information is available for this page.

    Indexed from inbound links, with no title or description because nothing was ever read.

do this instead

Let it be crawled until the noindex has been seen.

Allow the URL, serve noindex, and wait for Google to recrawl it. Once the page has dropped out of the index you may disallow it, if you also want to save the crawl budget. The order matters: noindex first, disallow second, never both at once.

# robots.txt
User-agent: *
# no rule for /old/

# /old/page returns
<meta name="robots" content="noindex">
two places, one effect

Noindex can hide where you are not looking.

The same directive travels two ways. One is in the HTML, where anyone can see it. The other rides in the response headers, invisible in view-source, and is usually set by something nobody remembers configuring.

In the HTML

VISIBLE
<head>
<meta name="robots" content="noindex, follow">
</head>

Shows up in view-source and in any browser inspector. Normally set deliberately, by a CMS toggle or an SEO plugin.

In the HTTP headers

EASY TO MISS
HTTP/1.1 200 OK
Content-Type: text/html
X-Robots-Tag: noindex

Nowhere in the page source. You only see it if you look at the response itself, which is why it survives redesigns and migrations unnoticed.

how to see it

Read the response, not the page.

One request shows every header the server sends. If x-robots-tag comes back at all, that page is carrying a directive no amount of reading the HTML would reveal.

$ curl -sI https://example.com/page
HTTP/1.1 200 OK
x-robots-tag: noindex
what sets one without being asked
  • a staging rule shipped to production with the deploy
  • a CDN or edge worker adding headers to a whole path
  • a server block copied between environments
  • a security or caching plugin with its own defaults
  • PDFs and images served from a directory-wide rule
don't mix them up

Crawlable, indexable, ranked.

This tool answers the first two. If both pass and the page still doesn't appear, the problem is relevance or quality, not access.

01THIS TOOLCrawlableA search engine is allowed to fetch itrobots.txt · status
02THIS TOOLIndexableIt's allowed to be stored and shownnoindex · canonical
03BEYOND ITRankedIt's chosen for a querycontent · links · speed
in depth · 13 primary sources

What Google documents about indexability.

What the search engines document about each check this tool runs, with every claim linked to its source.

01Two ways to block indexing

Excluded by ‘noindex’ tag
WHAT IT MEANS“noindex”A directive that lets Google crawl the page and then refuse to store it. Not the same as blocking access: the page is fetched, read, and deliberately left out.

Both forms say the same thing [1][2]. They differ only in where the directive travels, which decides whether it works at all for a given file type.

THE FIXList the URLs that should never be indexed (internal search results, filtered listings, staging, thank-you pages) and serve noindex there. Then confirm none of them is disallowed in robots.txt, or the directive is never seen [1].
IN THE HTML, INSIDE <head>
<meta name="robots" content="noindex">
<!-- or addressed to Google alone -->
<meta name="googlebot" content="noindex">
Only read inside <head>. A tag written into the body by a script is ignored.
IN THE RESPONSE HEADERS
HTTP/1.1 200 OK
Content-Type: application/pdf
X-Robots-Tag: noindex
The only option for PDFs, images and other non-HTML files, which have no <head> to hold a tag [2].

02robots.txt blocks crawling, not indexing

Blocked by robots.txt
WHAT IT MEANS“disallow”An instruction not to fetch the URL. It says nothing about indexing, so Google can still list a page it has never read, using only the links that point at it.

A disallowed URL can still appear in results if something links to it, shown with no description [3]. This is the most common way the two rules get confused.

THE FIXChoose the one that matches your intent. To keep a page out of the index, allow crawling and serve noindex. Use Disallow only to save crawl budget on pages already excluded another way. Applying both cancels the first: a disallowed page is never fetched, so its noindex is never read [1].
WHAT YOU WROTE
User-agent: *
Disallow: /private/
Intended to keep the whole section out of Google.
WHAT GOOGLE MAY SHOW
example.com/private/page
No information is available for this page.
Indexed from inbound links alone. Google never fetched it, so there is no title or description to display.

03Status codes and redirect chains

Redirect error · Not found (404)
WHAT IT MEANS“only 2XX is eligible”Google indexes the content of a successful response. A redirect is not content: what counts is the status at the end of the chain, not the one you requested.

4XX content is ignored, and URLs already indexed that begin returning 4XX are dropped over time [4].

THE FIXFollow the URL yourself and read the final status, not the first. Fix chains at the source so each old URL points straight at the live one, and never redirect a removed page to the homepage: Google treats that as a soft 404 [4].
A CHAIN THAT LOSES THE PAGE
GET /product → 301
GET /produkt → 302
GET /p/123 → 404
The destination is what counts. A chain ending at a 404 removes the page as surely as serving the 404 directly [4].
WHAT IT SHOULD LOOK LIKE
GET /product → 301
GET /p/123 → 200 OK
One hop to a page that returns 200. Keep redirects short; every extra hop is another chance to break [8].

04Canonicals decide which URL survives

Alternate page with proper canonical tag
WHAT IT MEANS“canonical”Which URL Google treats as the real one when several show the same content. Your rel="canonical" is a strong hint, not an order, and Google may pick a different URL [5].

When this status appears the page is working correctly and is simply not the version chosen. That is fine when deliberate, and a silent loss when not [9].

THE FIXCheck that the canonical is absolute, self-referencing on every page you want indexed, and that its target returns 200 rather than redirecting onward. Where variants genuinely duplicate, point them all at one chosen URL deliberately [5].
A CANONICAL POINTING AWAY
<!-- on /blue-widget -->
<link rel="canonical"
href="https://site.com/widget">
This page asks Google to index a different URL. Copied templates are the usual cause: every variant names one page, and only that page is indexed.
SELF-REFERENCING, WHICH IS WHAT YOU WANT
<!-- on /blue-widget -->
<link rel="canonical"
href="https://site.com/blue-widget">
Absolute URL, naming itself, matching the URL you want to appear in results [9].

05Google knows the URL, but has not fetched it

Discovered — currently not indexed
WHAT IT MEANS“discovered, not crawled”Google knows the URL exists, from a sitemap or a link, but has not fetched it yet. Nothing on the page is blocking anything: it is waiting in a queue.

This is a crawl-capacity decision, not a verdict on the page. Google limits how much it fetches from a site based on how quickly the server responds and how much it judges the site is worth crawling [10].

THE FIXReduce the number of low-value URLs competing for the crawl: block filter and sort parameters, drop dead URLs from the sitemap, and speed up server response. Then link the pages you care about from somewhere Google crawls often, so they are reached sooner [10].
WHAT THE STATUS IS TELLING YOU
URL in sitemap → yes
Fetched by Google → no
Blocked / noindex → no
Verdict → queued
No tag will clear this. The page has never been read, so there is nothing on it to fix.
WHAT USUALLY CAUSES IT
• slow server responses
• thousands of near-identical URLs
• filters generating endless paths
• a new site with few inbound links
Each one spends the same crawl capacity on pages that do not deserve it [10].

06Google read the page and passed on it

Crawled — currently not indexed
WHAT IT MEANS“crawled, not indexed”Google fetched the page, found nothing blocking it, and still chose not to store it. A judgement about value, which is why no tag or header explains it and none will fix it.

This is the hardest status to act on, because it is the only one that is not a setting. Google documents that it indexes pages it considers useful and distinct, not every page it can reach [11].

THE FIXTreat it as a content and structure problem. Merge near-duplicates into one stronger page, give the page real internal links from pages that are indexed, and remove auto-generated pages nobody should land on. If the page genuinely has no audience, noindex it deliberately rather than leaving it in limbo [11].
WHAT IT IS NOT
Blocked by robots.txt → no
noindex present → no
Bad status code → no
Canonical elsewhere → no
Every technical gate passed. Re-checking tags will not move it.
WHAT IT USUALLY IS
• thin or templated pages
• near-duplicates of a stronger page
• auto-generated tag and filter pages
• no internal links pointing to it
The page is reachable but not distinct enough, or not important enough on your own site, to earn a slot.

07Rendering: what the crawler actually sees

WHAT IT MEANS“the indexed content”What is present after Google runs your JavaScript, not what is in the HTML you serve. Rendering happens on a delay, and anything that fails at that moment simply does not exist.

Google crawls the HTML, queues the page, then renders it and indexes the result [12]. A page can pass every check above and still be indexed nearly empty.

THE FIXCompare the rendered DOM with the HTML you serve, and never disallow the JS and CSS the page needs to build itself. Where content matters for search, render it server-side so it does not depend on a second fetch succeeding [12].
WHAT YOU SERVE
<div id="root"></div>
<script src="/app.js"></script>
No content in the initial HTML. Everything depends on the script running successfully.
WHAT GETS INDEXED IF IT FAILS
<div id="root"></div>
<!-- nothing else -->
A blocked resource, a script error or a request that times out leaves the page empty at render time [12].

08Sitemaps say what to crawl, not what to index

WHAT IT MEANS“a strong signal”A sitemap tells Google which URLs you consider worth crawling. It is a hint about discovery, never a guarantee of indexing, and listing a URL does not make it eligible.

Google uses sitemaps to find URLs it might otherwise miss, especially on large or poorly linked sites [13]. Inclusion settles nothing on its own.

THE FIXGenerate the sitemap from the same rule that decides indexability, so a page carrying noindex or a redirect can never appear in it. Keep lastmod honest, and submit it in Search Console so the Page indexing report can be read per sitemap [7].
A SITEMAP WORKING AGAINST YOU
<loc>https://site.com/old</loc>
<!-- /old returns 301 -->
<loc>https://site.com/tag/x</loc>
<!-- /tag/x carries noindex -->
Every contradictory entry spends crawl capacity and weakens the signal the file is meant to carry.
WHAT BELONGS IN IT
• returns 200
• self-referencing canonical
• no noindex
• a page you would link to yourself
A sitemap listing only indexable URLs is a far stronger signal than one listing everything [13].

References

  1. [1]Block Search indexing with noindex · Google Search Centraldevelopers.google.com/search/docs/crawling-indexing/block-indexing
  2. [2]Robots meta tag, data-nosnippet and X-Robots-Tag specifications · Google Search Centraldevelopers.google.com/search/docs/crawling-indexing/robots-meta-tag
  3. [3]Introduction to robots.txt · Google Search Centraldevelopers.google.com/search/docs/crawling-indexing/robots/intro
  4. [4]How HTTP status codes and network errors affect Google Search · Google Search Centraldevelopers.google.com/search/docs/crawling-indexing/http-network-errors
  5. [5]What is URL canonicalization · Google Search Centraldevelopers.google.com/search/docs/crawling-indexing/canonicalization
  6. [6]URL Inspection tool · Search Console Helpsupport.google.com/webmasters/answer/9012289
  7. [7]Page indexing report · Search Console Helpsupport.google.com/webmasters/answer/7440203
  8. [8]Redirects and Google Search · Google Search Centraldevelopers.google.com/search/docs/crawling-indexing/301-redirects
  9. [9]How to specify a canonical with rel="canonical" and other methods · Google Search Centraldevelopers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls
  10. [10]Crawl budget management for large sites · Google Search Centraldevelopers.google.com/crawling/docs/crawl-budget
  11. [11]Google Search Essentials · Google Search Centraldevelopers.google.com/search/docs/essentials
  12. [12]Understand the JavaScript SEO basics · Google Search Centraldevelopers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics
  13. [13]Learn about sitemaps · Google Search Centraldevelopers.google.com/search/docs/crawling-indexing/sitemaps/overview
CITE THIS PAGEKalenux. (2026). Indexability checker: can Google index this page?. Kalenux SEO Guide. Last reviewed 1 Oct 2026. kalenux.com.tr/seo-indexability-checker
other free tools

Keep checking.

All tools →
one setting, every page

Indexing problems are never one page wide.

A stray noindex, a robots.txt line or a canonical pointing the wrong way sits in a template, and the template renders thousands of URLs. Checking one page tells you the fault exists. The full audit runs these five gates plus 240+ checks across eight areas on every URL you have, then groups the failures by the setting that caused them.

01

Grouped by cause, not by URL

Four thousand pages excluded by one noindex is a single finding with one fix, not four thousand rows to read through.

02

Before Search Console says so

Search Console reports what Google already crawled, on a delay of days or weeks. The audit crawls on demand, so a bad deploy surfaces now rather than after the pages have dropped out.

03

The change, in plain terms

Each finding names the gate it fails, the Google documentation behind it and the edit that clears it, so nothing sends you back to search for what the status meant.

Run the full auditCreate an account and your first audit is free, up to 500 pages. No card needed.