Page Indexability Checker
Enter any URL to find out whether Google is allowed to index it. The tool checks the status code, both places a noindex can hide, robots.txt, the canonical, sitemap membership and how much text is in the server HTML.
Short answer
A page is indexable when nothing stops Google storing it: it returns a 200, carries no noindex in its meta robots tag or its X-Robots-Tag header, is not disallowed in robots.txt, and its canonical points at itself. Those four account for nearly every page that is technically blocked. Being indexable is permission rather than a promise, so a page can pass every check here and still not be indexed, which is Google declining on quality grounds rather than obeying an instruction. The distinction matters because the two problems have completely different fixes: a blocked page needs a tag changed, and an unindexed but indexable page needs better content, more internal links, or both.
Why pages are not indexed, in the order to check
Indexing failures fall into two groups that look identical in Search Console and need opposite responses. Something is blocking the page, or nothing is blocking it and Google decided against it anyway.
- A noindex tag in the page head, most often left behind after a staging site went live
- A noindex in the X-Robots-Tag response header, which does not appear in the page source
- A robots.txt rule disallowing the path, which stops the crawl rather than the index
- A canonical tag naming a different URL, which points indexing at that address instead
- A status code that is not a 200, including redirect chains that never resolve
- No sitemap entry and no internal links, so the URL is known but never prioritised
- Thin, duplicated, or JavaScript-only content that Google crawled and judged not worth storing
The first five are mechanical and this tool tests them directly. The last two are judgement calls, and the checker reports the evidence rather than a verdict: whether the URL appears in a sitemap, and how many words are in the HTML your server returns before any JavaScript runs.
The one that catches everyone
A noindex in an X-Robots-Tag header is invisible when you view source. Teams stare at a clean page head for weeks while the server quietly tells every crawler to skip the page. If a page looks perfect and still will not index, this is the first thing to rule out.
What each Search Console status actually means
The Page Indexing report names the symptom rather than the cause, and several of its labels are read backwards routinely. This is what each one is telling you.
| Search Console status | What it means | What to do |
|---|---|---|
| Excluded by 'noindex' tag | An explicit noindex was found, in the head or in a response header | Deliberate on a thank-you or internal search page. Anywhere else, remove it |
| Discovered - currently not indexed | Google knows the URL exists but has not crawled it yet | Add it to a sitemap and link to it from pages that already get crawled |
| Crawled - currently not indexed | Google read the page and chose not to store it | A quality problem, not a tag problem. Thicken the content or merge it into a stronger page |
| Page with redirect | The URL redirects, so the destination is what gets indexed | Expected on a moved page. Update internal links to point at the destination |
| Alternate page with proper canonical tag | The canonical names another URL and Google honoured it | Correct on a duplicate. A bug if this page was meant to rank on its own |
| Duplicate without user-selected canonical | No canonical was declared, so Google picked one itself | Add a self-referencing canonical so the choice is yours |
| Duplicate, Google chose different canonical than user | You declared a canonical and Google overruled it | Your other signals disagree with the tag. Align internal links and sitemap entries |
| Indexed, though blocked by robots.txt | The URL is in the index but Google was never allowed to read it | Allow the crawl and add a noindex, or accept a listing with no description |
| Blocked by robots.txt | A disallow rule stops the crawl of this path | Intentional on admin paths. Check the rule is not wider than you meant |
| Not found (404) | The page reports that it does not exist | Restore the page or redirect the URL to its closest replacement |
| Soft 404 | The page returns a 200 while looking empty or saying nothing was found | Return a real 404 status, or add the content the page promises |
| Server error (5xx) | The server failed while Google was fetching | Check for timeouts under crawl load. Sustained 5xxs slow crawling site-wide |
The full report is worth understanding in depth, and we walk through every status, the validation flow and how to read the graph in the guide to the Page Indexing report.
Crawling and indexing are different, and the fixes are opposite
Almost every expensive indexing mistake comes from treating these as one thing. They fail independently, and the instrument that controls one has no authority over the other.
robots.txt controls crawling
A disallow rule stops Google fetching the page. It does not remove the URL from the index. When other sites link to a blocked address, Google can list it on the strength of those links alone, which is how a URL ends up ranking with no description under it.
A noindex tag controls indexing
It asks Google to keep the page out of the index, and Google honours it reliably. The catch is that the tag has to be read to be obeyed, which means the page must be crawlable. Test the rules that govern the crawl with the robots.txt tester.
The combination that never works
Adding a noindex and then blocking the same path in robots.txt is the most common self-defeating fix in technical SEO. Google cannot crawl the page, so it never sees the noindex, and the page stays indexed indefinitely. Allow the crawl, wait for the page to drop out, then block it if you still want to.
How to check whether a page can be indexed
Six checks, ordered so the ones that make everything below them irrelevant come first. The tool runs all six at once, but the sequence is what matters when you are diagnosing by hand.
- 01
Confirm the page returns a 200
A page that answers with a 404, a 410, a 500 or an unresolved redirect cannot be indexed no matter what the rest of the head says. Check the status first, because everything below it is irrelevant until this passes.
- 02
Look for a noindex in both places it can hide
A noindex can sit in a meta robots tag in the page head or in an X-Robots-Tag response header. The header version is invisible when you view source, which is why it survives so long undetected.
- 03
Check robots.txt allows the crawl
A disallowed path stops Google fetching the page at all. This blocks crawling rather than indexing, so a blocked URL with inbound links can still surface in results with no description under it.
- 04
Read the canonical tag
A canonical naming a different URL tells Google to index that address instead of this one. On a genuine duplicate that is correct. Everywhere else it quietly removes the page from consideration.
- 05
Verify the page is in a sitemap
A sitemap is the clearest discovery signal you can send. A page missing from every sitemap and linked from nowhere is the usual explanation behind 'Discovered, currently not indexed'.
- 06
Judge whether the content earns a place in the index
Once nothing technical is blocking it, indexing becomes a quality decision. Thin pages, near-duplicates and pages whose text only appears after JavaScript runs are the ones Google crawls and then declines to index.
If all six pass and the page is still absent from search weeks after publishing, stop looking for a technical cause. At that point the page is competing on merit and losing, and the work is content and internal linking rather than tags.
Indexable is not the same as indexed
This tool answers whether a page is allowed to be indexed. It cannot tell you whether Google has actually indexed it, and neither can any other third-party tool, whatever its marketing claims.
- Indexable: nothing your server sends stops Google storing the page. This is what the checker tests
- Indexed: Google has stored the page and it can rank. Only Search Console's URL Inspection tool reports this, and only for a property you have verified
- Ranking: the page is indexed and competing for queries, which is a further question again
Most pages people describe as not indexed are perfectly indexable. Knowing which of the three you are actually dealing with saves days of changing tags that were never the problem.
What this tool checks
HTTP status
Whether the URL resolves with a 200, and the full redirect chain if it does not
Meta robots tag
noindex and none directives in the page head, including the Googlebot-specific variant
X-Robots-Tag header
The noindex that never appears in the page source
robots.txt rule
Whether Googlebot is allowed to crawl this specific path
Canonical tag
Whether the page canonicalises to itself or hands indexing to another URL
Sitemap membership
Whether the URL appears in the sitemaps declared in robots.txt
Rendered word count
How much text is in the server HTML before any JavaScript runs
Search Console mapping
Which Page Indexing status each finding corresponds to
One URL at a time will not find a site-wide indexing problem
Frequently asked questions
What does indexable mean?
A page is indexable when nothing stops Google from storing it in the search index: it returns a 200, carries no noindex in either its meta robots tag or its X-Robots-Tag header, is not disallowed in robots.txt, and its canonical points at itself. Indexable is permission, not a promise. Google can still decline to index a page it is allowed to index, usually on quality grounds.
Why is my page not indexed?
In rough order of how often each one turns out to be the cause: a noindex tag left behind after a staging deploy, a canonical pointing at a different URL, a robots.txt disallow, a redirect that means the URL you checked is not the one being indexed, the page missing from every sitemap and internal link, and thin or duplicate content that Google crawled and judged not worth storing. This tool tests the first five directly.
What is the difference between crawling and indexing?
Crawling is Google fetching the page. Indexing is Google deciding to store it and let it rank. They fail separately and the fixes are different. robots.txt blocks crawling; a noindex tag blocks indexing. Blocking a page in robots.txt does not remove it from the index, and it can leave a URL ranking with no description because Google was never allowed to read the page it is showing.
What does 'Discovered - currently not indexed' mean?
Google knows the URL exists but has not crawled it yet. It usually means Google is rationing crawl budget on your site, often because there are many low-value URLs competing for it, or because the page has almost no internal links pointing at it. Adding the page to a sitemap and linking to it from pages that already get crawled is the practical fix.
What does 'Crawled - currently not indexed' mean?
Google fetched the page, read it, and decided not to index it. This is a quality judgement rather than a technical block, which is why no tag change fixes it. The common causes are thin content, a page that duplicates another one closely, or content that only appears after JavaScript runs so the crawler saw an empty shell. Our checker reports the rendered word count in the server HTML, which tells you whether the third case applies.
What does 'Excluded by noindex tag' mean?
Google found an explicit instruction not to index the page, either a meta robots noindex in the head or a noindex in the X-Robots-Tag response header. If that is deliberate, on a thank-you page or an internal search result, nothing needs fixing. If it is not, it is usually a staging configuration that shipped to production, and it is the single most common reason a page silently disappears from search.
Can a page be indexed if it is blocked by robots.txt?
Yes, which surprises people. robots.txt stops Google fetching the page, not listing it. When other sites link to a blocked URL, Google can index the address on the strength of those links while never seeing the content, and the result appears in search with no description. Search Console reports this as 'Indexed, though blocked by robots.txt'. To remove a page from the index you need a noindex tag, which means the crawl has to be allowed so Google can see it.
Why does a noindex tag combined with a robots.txt block not work?
Because the two instructions defeat each other. Google has to crawl the page to see the noindex, and robots.txt forbids the crawl, so the noindex is never read and the page can stay indexed indefinitely. The correct sequence is to allow crawling, let Google re-crawl and honour the noindex, confirm the page has dropped out, and only then block the path in robots.txt if you still want to.
What does 'limited' status mean in Search Console?
It is a data-quality notice, not an indexing problem. Search Console shows a limited or partial status when it does not have complete data for the period you are looking at, usually because processing is still catching up or the property was verified recently. It says nothing about whether individual pages are indexable.
Does this tool tell me if Google has indexed my page?
No, and no third-party tool can do it reliably. This checker tests whether a page is allowed to be indexed by inspecting the signals your server sends. Whether Google has actually indexed it is a question only Google can answer, through the URL Inspection tool in Search Console for a property you have verified. The two questions get conflated constantly, and the distinction matters: most pages that are not indexed are perfectly indexable.
How long does it take for a page to get indexed?
Anywhere from hours to never. A frequently crawled site publishing to an established section can see indexing the same day. A new site with few inbound links can wait weeks, and a thin page may never be indexed at all. If a page has been live for more than a few weeks, is technically indexable and still absent, treat it as a content and internal-linking problem rather than a technical one.
Why does the checker say my page has almost no words?
Because it reads the HTML your server returns, which is exactly what a crawler sees first. If your content is rendered by JavaScript in the browser, the server HTML is close to empty. Google can render JavaScript, but rendering is queued and can lag the initial crawl by days, and it fails often enough to matter. Content that appears in the initial HTML is indexed faster and more reliably.
Other crawl and indexing tools
Website URL Extractor
Crawl any website and download every URL it links to as CSV, TXT, or JSON. Works straight from the live site, no sitemap required.
Use toolRedirect Chain Checker
Trace every redirect hop with status codes and response times. Detect loops, long chains, protocol downgrades, and 302 misuse.
Use toolBroken Link Checker
Find broken internal and external links on any page. Checks up to 50 links for 404 errors, redirects, and timeouts.
Use toolRobots.txt Tester
Analyze robots.txt to see which AI crawlers and search engines are blocked, find sitemaps, and identify access issues.
Use toolRobots.txt Generator
Build a correct robots.txt from presets for WordPress, ecommerce, and AI crawlers. Decide which bots to allow, add your sitemap, copy the file.
Use toolFind every unindexable page in one crawl
A noindex in a template blocks a hundred pages as easily as one. CrawlRaven crawls the whole site, flags every page that cannot be indexed, joins the result to your Search Console data, and ranks the fixes by the traffic each page already earns.