Page Not Indexed? How to Find the Exact Cause, Step by Step
Short answer
A page usually isn't indexed because it doesn't return 200, redirects elsewhere, is blocked by robots.txt, carries a noindex rule, has another URL chosen as canonical, or was not yet crawled or not selected for indexing. Inspect the URL in Search Console, then check those signals in that order.
Written by Miguel Santiago
Published · 12 min read

On this page
A step-by-step way to find why Google hasn't indexed a page: read the Search Console status, check the signals in the right order, fix the cause and confirm it.
You published a page, waited, and it still doesn't appear in Google. Search Console says URL is not on Google or gives a reason such as Crawled - currently not indexed, and the label alone rarely tells you what to change.
Almost every indexing problem comes down to a short list of signals: the HTTP status code, redirects, robots.txt, noindex rules, the canonical Google chooses, duplication and quality, and whether Google has found the URL at all. Checked in the right order, they lead to the cause quickly.
This guide walks through that order. You will learn what each status in Search Console's Page indexing report means, how to tell a technical block from a decision Google made, how to fix each cause and how to confirm the fix.
- Start with Search Console's URL Inspection tool for the exact URL. The Page indexing report shows patterns across a site, not the status of one page.
- Check the signals in dependency order: status code, redirects, robots.txt, noindex, canonical, then quality and discovery. An earlier block hides the later ones.
- robots.txt controls crawling, not indexing. To keep a page out of Google, use noindex and let Google crawl the page so it can see the rule.
- Crawled - currently not indexed and Discovered - currently not indexed are Google decisions, not switches you can flip. Improve the page and how it is linked instead of resubmitting it.
- Confirm a fix with a live test, then request indexing once. Repeated requests don't make Google crawl faster.
How indexing works, and where it can stop
Google describes Search in three stages: crawling, indexing and serving results (How Google Search works). Before any of that, Google has to discover the URL, usually through a link from a page it already knows or through a sitemap. During the crawl it also renders the page and runs its JavaScript in a recent version of Chrome.
- DiscoveryLinks from known pages, sitemaps
- Crawlingrobots.txt, server errors, HTTP status
- RenderingJavaScript run in a recent Chrome
- Indexingnoindex, duplicates and canonical choice, quality
- ServingRelevance to each query; indexed is not the same as ranked
A page can stall at any stage. Google is also explicit that indexing isn't guaranteed, and lists low content quality, robots meta rules that disallow indexing and a site design that makes indexing difficult as common issues. So the plan is simple: first rule out the blocks you control, then work on the decisions Google makes.
Step zero: ask Google about the exact URL
The Page indexing report summarizes every URL Google knows in your property, but Google says it isn't meant for investigating a specific page. For that, paste the full URL into the URL Inspection tool at the top of Search Console.
The verdict reads URL is on Google or URL is not on Google. Expand Page indexing; these fields map directly onto the checks in this guide:
- Sitemaps, Referring page
- How Google discovered the URL. URL is unknown to Google means it has never seen it.
- Last crawl, Crawled as
- When Google last fetched the page and with which crawler (mobile or desktop).
- Crawl allowed?
- Whether a robots.txt rule blocks the URL.
- Page fetch
- Whether your server actually delivered the page.
- Indexing allowed?
- Whether a noindex rule was found.
- User-declared canonical, Google-selected canonical
- The URL you named as canonical and the one Google chose.
The first screen shows the last indexed version of the page, not the live one. Click Test live URL to fetch it now. The live test can't check everything: Google lists duplicate and canonical conditions, Crawled - currently not indexed and Discovered - currently not indexed among the issues it does not test, because they are decided at indexing time.
For sites with fewer than 500 pages, Google suggests a quick site: search for the exact URL, such as site:https://www.example.com/pricing. Either way, "URL is on Google" means the page is eligible to appear, not that it will show for any particular search.
What each Page indexing status means
These are the exact status names from Google's documentation, what they mean and where to start. The report's Source column says whether an issue comes from your Website or from Google; as a rule, you can fix only the ones marked Website.
| Status | What it means | Start here |
|---|---|---|
| Server error (5xx) | The request failed with a 500-level error, timed out or the site was busy. | Server logs, the host status in Crawl Stats, firewalls or bot protection that block Googlebot. |
| Redirect error | A chain that was too long, a loop, a URL over the maximum length, or a bad or empty URL in the chain. | Trace the chain hop by hop and send the first URL straight to the final one. |
| URL blocked by robots.txt | A robots.txt rule stops Googlebot from crawling the URL. | Remove or narrow the rule if the page should be indexed. |
| URL marked ‘noindex’ | Google crawled the page and found a noindex rule. | Remove the meta tag or the X-Robots-Tag header. |
| Soft 404 | The page returns 200 but looks like a "not found" or empty page to Google. | Return a real 404 for missing pages; give valid pages real content. |
| Blocked due to unauthorized request (401) | The server asked Googlebot to authenticate. | Remove the login requirement from public pages. |
| Blocked due to access forbidden (403) | Access refused. Googlebot never provides credentials, so Google calls this response incorrect for public pages. | Allow anonymous access; review WAF and bot rules. |
| Not found (404) | The URL returned 404. | Fine if the page is gone for good; otherwise restore it or 301 it to its replacement. |
| URL blocked due to other 4xx issue | Another 4xx response. | Inspect the URL and correct the status code. |
| Crawled - currently not indexed | Google crawled the page and didn't index it. It may or may not be indexed later. | The page's unique value and internal links (see below). Resubmitting isn't needed. |
| Discovered - currently not indexed | Google knows the URL but rescheduled the crawl, typically because crawling then was expected to overload the site. | Internal links, sitemap listing, server capacity. |
| Alternate page with proper canonical tag | The page correctly points to a canonical that is indexed. | Nothing, if that canonical is the one you want. |
| Duplicate without user-selected canonical | Google sees a duplicate and chose another URL as canonical. | Declare your preferred canonical, or make the content clearly different. |
| Duplicate, Google chose different canonical than user | You declared this URL canonical; Google picked another URL. | Compare the pages in URL Inspection and align your signals. |
| Page with redirect | The URL redirects, so it isn't indexed itself. | Nothing, if the redirect is intended. Inspect the target. |
| Indexed, though blocked by robots.txt | A warning: indexed from links without Google reading the page. | To keep it out, unblock it and add noindex. To keep it in, unblock it. |
| Page indexed without content | A warning: indexed, but Google couldn't read the content. | Inspect the page; check for cloaking or a format Google can't index. |
"Not indexed" is not automatically bad. Google says it's fine for a URL not to be indexed for the right reasons, such as an expected robots.txt rule, a deliberate noindex, a duplicate URL or a removed page that returns 404. It adds that a page marked duplicate or alternate is usually a good thing: it means Google found the canonical and indexed that. Spend your time on the important URLs whose reason doesn't make sense.
The order of checks that finds the cause
Each signal depends on the ones before it. If robots.txt blocks a URL, Google never sees its noindex tag. If the URL redirects, you are inspecting the wrong page. A canonical only matters once the page can be crawled and indexed. Working top-down stops you fixing a symptom while the real block stays.
Status code. The page must answer
200. Google doesn't index URLs that return 4xx codes, and drops URLs that keep returning server errors (How HTTP status codes affect Google's crawlers). Watch for login walls, bot protection that blocks Googlebot, and error pages that return 200.Redirects. If the URL redirects, Google reports it as Page with redirect and indexes the target, if anything. Inspect the final URL and point internal links and sitemap entries straight at it.
robots.txt. If Crawl allowed? says No, find the matching rule. Search Console's robots.txt report shows the robots.txt files Google fetched, when, and any parsing errors.
noindex. If Indexing allowed? says No, look for a
robotsorgooglebotmeta tag in the<head>and anX-Robots-Tagresponse header. CMS settings, SEO plugins and server configuration are the usual sources.Canonical. Compare User-declared canonical with Google-selected canonical. If Google chose another URL, it treats your page as a duplicate and shows that URL instead.
Content and duplication. If everything technical is clean and the status is Crawled - currently not indexed, ask whether the page adds something your site, and the web, doesn't already offer.
Discovery. If the URL is unknown or Discovered - currently not indexed, give Google a route to it: links from pages it already crawls, a sitemap entry and a fast, stable server.
robots.txt or noindex? Don't mix them up
Google's introduction to robots.txt says the file mainly manages crawler traffic and "is not a mechanism for keeping a web page out of Google". A disallowed URL can still be indexed from links, without a description; that is what the Indexed, though blocked by robots.txt warning reports.
noindex works the other way round. Google's noindex documentation is direct: if robots.txt blocks the page or the crawler can't access it, Google never sees the rule, and the page can still appear in results.
Do
- Use robots.txt to keep crawlers out of areas that waste crawling, such as internal search results.
- Use
noindex(meta tag orX-Robots-Tag) for pages that must stay out of search. - Leave noindexed pages crawlable so Google can read the rule.
- Use the HTTP header for PDFs and other files that have no HTML
<head>.
Avoid
- Blocking a page in robots.txt and adding noindex to it at the same time.
- Writing
noindexin robots.txt: Google doesn't support it there. - Carrying a staging robots.txt or noindex setting over to production.
- Relying on robots.txt to hide private content: it is public and only a request.
The two places a noindex rule can hide look like this. Both have the same effect for Google:
<meta name="robots" content="noindex">
<!-- or only for Google's crawlers -->
<meta name="googlebot" content="noindex">HTTP/1.1 200 OK
Content-Type: application/pdf
X-Robots-Tag: noindexA header rule never appears in the page source, so it is easy to miss. Google's robots meta tag specification shows how it is set in server configuration; if a whole file type vanishes from Google, search your configuration for lines like these:
# Apache: every PDF gets noindex, nofollow
<Files ~ "\.pdf$">
Header set X-Robots-Tag "noindex, nofollow"
</Files>
# NGINX: the same rule
location ~* \.pdf$ {
add_header X-Robots-Tag "noindex, nofollow";
}Don't ship noindex in the HTML and remove it later with JavaScript. Google's JavaScript SEO basics warn that when Google encounters noindex it may skip rendering, so a script that changes or removes the tag may never run for Googlebot. If the page should be indexed, keep noindex out of the original HTML.
A new pricing page at https://www.example.com/pricing shows Indexed, though blocked by robots.txt. The robots.txt still contains Disallow: / from the staging site, so Google indexed the URL from links alone, without a description. Removing the staging rule fixes it. Had the team wanted the page out of Google, the first step would be the same, unblocking it, followed by adding noindex, because Google must crawl the page to read that rule.
When nothing is blocking the page
If the page returns 200, doesn't redirect, allows crawling and indexing and names itself as canonical, you are no longer looking at a technical block but at a decision Google made. The right response depends on the status.
Crawled - currently not indexed
Google fetched the page and chose not to index it for now. Its documentation says the page "may or may not be indexed in the future" and that there's no need to resubmit it. The URL Inspection help adds that a page must be high enough in quality to warrant indexing and must not duplicate another indexed page. So ask an editorial question: is this a thin variation of something else on the site, such as a tag archive repeating the same posts, a location page that only swaps the city name, or a product page built on a copied manufacturer description? If so, merge it into a stronger page, or give it content and a purpose nothing else on the site covers, and link to it from relevant pages.
Discovered - currently not indexed
Google knows the URL but hasn't crawled it yet. Its documentation says that typically Google wanted to crawl the URL, expected that doing so would overload the site, and rescheduled; that is why the last crawl date is empty. Check that your server responds quickly and without errors, and that the page is linked from pages Google crawls often, not only listed in a sitemap.
The duplicate statuses
Here the page isn't missing: Google indexed another URL in its place. Inspect the Google-selected canonical. If it really is the same content, accept it and link to it consistently. If it isn't, Google's advice is to make sure the content differs substantially, and your canonical tag, redirects, sitemap and internal links should all name the same preferred URL.
"Requesting indexing several times gets a page indexed faster." Google's recrawl documentation says requesting a recrawl multiple times for the same URL won't get it crawled any faster, and that a request doesn't guarantee inclusion at all. One request after a real change is enough.
Fix, request indexing and confirm
After a change, confirm it before you wait. The live test shows at once whether the block is gone; the indexed status follows later.
- Run Test live URL and confirm Page fetch is Successful, Crawl allowed? is Yes and Indexing allowed? is Yes.
- Open View tested page and check the screenshot and HTML: the main content Google receives should be there.
- Click Request indexing once. Google says indexing typically takes a day or so but can take much longer, and that you can't request indexing for a URL the live test considers non-indexable.
- For many fixed URLs, submit or resubmit a sitemap with accurate
<lastmod>values instead of requesting each URL; there is a daily request limit. - If the URLs appear under one reason in the Page indexing report, click Validate fix. Google says validation typically takes up to about two weeks and emails you when it passes or fails.
- Re-inspect the URL after the next crawl date and compare it with the live test.
Google is candid about timing: crawling can take from a few days to a few weeks, and not every page will be indexed. If the live test is clean and the status is still a "currently not indexed" decision, the remaining work is on the page and its links.
Check any URL with the Indexability Checker
Search Console only covers sites you have verified, and the live test shows one URL at a time. Backlnk's free Indexability Checker runs the technical part of this guide for one URL or a list of up to 50 URLs on the same website:
- It checks the HTTP status and redirects, robots.txt, meta robots,
X-Robots-Tag, the canonical and whether the URL is in the site's sitemap. - Each URL gets one verdict (indexable, not indexable or needs attention) naming the signal that decided it, with the evidence in a signal table.
- Under Options you can render the page in a browser, which matters when robots or canonical tags are added by JavaScript.
- Every verdict can be exported as CSV, handy for checking a batch of URLs after a release.
"Indexable" means nothing on the page or server blocks indexing; it doesn't mean Google has indexed the page or will rank it. Google's decision is only visible in Search Console, so use both: the checker finds technical blocks fast, URL Inspection tells you what Google did. For a whole site, the free full audit combines Backlnk's checks in one report sent by e-mail.
Next step
Take your most important unindexed URL, inspect it in Search Console and run it through the Indexability Checker. Work down the order (status, redirects, robots.txt, noindex, canonical, content, discovery) and stop at the first signal that fails. Fix it, confirm with a live test, request indexing once and give Google time to recrawl.
Frequently asked questions
- What does Crawled - currently not indexed mean?
- Google fetched the page and decided not to index it for now. Google says it may or may not be indexed later and that resubmitting is not needed. Check whether the page duplicates or thinly varies another page, give it unique value and link to it from relevant pages.
- Does blocking a page in robots.txt keep it out of Google?
- No. robots.txt controls crawling, not indexing, and Google can still index a blocked URL from links without a description. To keep a page out of Google, allow crawling and add a noindex meta tag or an X-Robots-Tag header.
- How long does indexing take after I request it?
- Google says indexing typically takes a day or so after a request but can take much longer, and that crawling can take from a few days to a few weeks. A request does not guarantee indexing, and repeating it does not speed anything up.
- Why does the live test pass when the page is still not indexed?
- The live test only checks whether Google can fetch and index the page right now. It does not test duplicate and canonical conditions or the crawled and discovered statuses, which are decided at indexing time, and it does not judge quality.
- Is it a problem that many of my URLs are not indexed?
- Not necessarily. Redirecting URLs, duplicates, pages with a deliberate noindex and removed pages should not be indexed. Make sure your important canonical pages are indexed and that each reason for the others makes sense.
How this article was produced
- Byline
- Miguel Santiago
- First published
- Evidence
- External research (cited below)
- Editorial interpretation
- Hypothetical, illustrative examples (marked “Illustrative example”) — not real customer results
Sources
- Page indexing report, Google Search Console Help (accessed Oct 31, 2026)
- URL Inspection tool, Google Search Console Help (accessed Oct 31, 2026)
- robots.txt report, Google Search Console Help (accessed Oct 31, 2026)
- In-depth guide to how Google Search works, Google Search Central (accessed Oct 31, 2026)
- How HTTP status codes affect Google's crawlers, Google Crawling Infrastructure (accessed Oct 31, 2026)
- Introduction to robots.txt, Google Search Central (accessed Oct 31, 2026)
- Block Search indexing with noindex, Google Search Central (accessed Oct 31, 2026)
- Robots meta tag, data-nosnippet, and X-Robots-Tag specifications, Google Search Central (accessed Oct 31, 2026)
- Understand the JavaScript SEO basics, Google Search Central (accessed Oct 31, 2026)
- Ask Google to recrawl your URLs, Google Search Central (accessed Oct 31, 2026)
