How to Diagnose Why Google Is Not Indexing Your Pages

On this page

Search Console’s Page indexing report gives every non-indexed URL a reason and a source, and the source column answers the first question before you touch anything: is this yours to fix? Google says that, in general, you can fix only issues whose source is listed as “Website”. The rest of the diagnosis runs in order. Read the reason Google reports, place it in the chain from discovery to crawl to index, fix what that reason points to, and then ask Google to check.

Read the reason before you act

“Not indexed” names a status; the diagnosis is in the reason. The report splits URLs into Indexed and Not indexed, and for each non-indexed group gives:

  • a reason;
  • a source (Google or Website);
  • a validation state for any fix you have asked Google to confirm.

Google’s own note on the reasons should be read literally: pages in the Not indexed group are “not necessarily” there because of an error. Several reasons describe the site working as intended.

Two limits of the report shape how you use it:

  • The examples are a sample. The examples table for each reason shows up to 1,000 URLs and does not necessarily list all of them.
  • You cannot search by URL. For the state of one URL, Google points you to the URL Inspection tool.

Place the problem in the pipeline

A URL has to be discovered, then crawled, then selected for the index. Each reason in the report belongs to one of those stages, and so does its fix.

  • Not in the report at all. Google may not know the page exists. It learns about a URL from a sitemap, a crawl request or a link. Google says it can take up to a few weeks after a URL is known before it is crawled, that indexing is never instant, and that it doesn’t guarantee every page will make it into the index.
  • Stopped before or during the crawl. “Discovered – currently not indexed”, “URL blocked by robots.txt”, server errors (5xx), redirect errors, and the 401, 403 and 404 reasons.
  • Crawled, then not indexed. “Crawled – currently not indexed”, the duplicate and canonical reasons, “URL marked ‘noindex'” and “Soft 404”.

The pivotal split: Discovered versus Crawled

These two reasons look alike in a report and call for different work.

“Discovered – currently not indexed.” Google’s definition: the page was found but not crawled yet. “Typically, Google wanted to crawl the URL but this was expected to overload the site; therefore Google rescheduled the crawl.” That is why the last crawl date is empty. The content played no part, because Google has not fetched it.

  • Start with the server. For site availability, the Page indexing help points to the host status in the Crawl Stats report. If the server struggles to answer requests, that fits the cause Google describes.
  • At scale, it can be a crawl budget signal. Google’s crawl budget guide is written for very large or fast-changing sites, and for “sites with a large portion of their total URLs classified by Search Console as Discovered – currently not indexed.”
  • Check how the URL is found. On a healthy server, look at how Google reaches the page. A URL known only from the sitemap has no link path to prompt a crawl, and one several clicks from any page Google revisits has only a long one. Links from well-crawled pages, and removing crawl waste such as endless parameter URLs, give it a better claim.

“Crawled – currently not indexed.” Google’s definition: the page was crawled but not indexed. “It may or may not be indexed in the future; no need to resubmit this URL for crawling.” Google gives no reason. The content was fetched and the answer, for now, was no.

  • In practice, compare it with an indexed peer. Take a page from the same template or topic that did get indexed and ask what it has that this one lacks: content only this page carries, detail from first-hand experience, a case for existing separately. If the honest answer is that the page duplicates another or adds nothing, consolidation or removal is the fix.
  • Think about the site, not just the page. Google’s ranking systems guide says its systems use page-level and site-wide signals. The thin pages you keep are part of the site those signals describe.

The trap is treating the two alike. Building internal links to a “Crawled – currently not indexed” page does little if the page is thin. Rewriting the content of a “Discovered – currently not indexed” page does nothing if Google never crawls it to see the rewrite.

First checks for a single URL

For one URL that should be indexed and is not, four checks come first:

  1. Inspect the indexed version. URL Inspection shows the state Google last recorded, the crawl date, and the user-declared and Google-selected canonicals.
  2. Test the live URL, then click View tested page. The live test fetches the page as Googlebot now would and shows the rendered screenshot and the HTML returned. A page that looks complete in your browser can arrive empty to Google when its content depends on something Google does not do. Google’s JavaScript SEO basics describes rendering as its own stage after crawling, and its lazy-loading guidance says Google Search does not interact with the page. Content that appears only after a click never loads for Google. Google also uses the mobile version of a site’s content for indexing, so check what the mobile page carries.
  3. Know what the live test skips. Google says the live test doesn’t test all the issues in the Page indexing report. Among them, duplicate and canonical conditions are not tested. It also follows redirects and tests the final URL without saying it did.
  4. Check the directives. Under Indexing allowed, the inspection shows whether a noindex directive is preventing indexing. Search the page source and response headers for it too. Then read robots.txt for a rule that covers the path.

Both inspections have per-property daily limits, so on a large site sample by template instead of inspecting page by page.

A routing table for the reasons

Reason names follow Google’s help page for the report; the report itself may word a reason slightly differently. What Google says each means, and where to look:

Reason in the report What Google says Where to look
Discovered – currently not indexed Found, not crawled yet; typically rescheduled because crawling was expected to overload the site Server health in Crawl Stats; at scale, crawl budget; how the URL is linked
Crawled – currently not indexed Crawled, not indexed; may or may not be indexed later; no need to resubmit What the page adds compared with indexed peers; duplication
URL marked 'noindex' Google found a <!–INLINECODE1–> directive Remove the tag or HTTP header if the page should be indexed
URL blocked by robots.txt Crawling is blocked; Google says there is a very small chance the page is still indexed through other means Whether the block is intended
Soft 404 Returns a "not found" style page without a 404 status Return a real 404, or add content that shows the page is not empty
Duplicate without user-selected canonical A duplicate with no declared canonical; Google chose another page Declare the canonical, or make the content differ substantially
Duplicate, Google chose different canonical than user Google thinks another URL is the better canonical Compare the page, your declared canonical and Google's choice
Alternate page with proper canonical tag An alternate version pointing to an indexed canonical Nothing, if that is the intent
Page with redirect A non-canonical URL that redirects; not indexed itself Nothing, unless the redirect is a mistake
Server error (5xx), Redirect error Google could not get a usable response Hosting, timeouts, firewall rules, redirect chains and loops
Blocked due to access forbidden (403) Googlebot never provides credentials, so this response is an error Allow access, verifying Googlebot's identity if needed
Not found (404) The URL returned 404; not necessarily a problem if the page was removed without a replacement Redirect it with a 301 if the page moved

Two warnings sit outside the table. “Indexed, though blocked by robots.txt” means Google indexed a URL it was not allowed to crawl, from links pointing at it. “Page indexed without content” means Google could not read the page, possibly because it is cloaked or in a format Google can’t index.

Server errors deserve one more check. Google’s help notes that firewalls and DoS protection systems, set to block unusually high request rates, can block Googlebot, which makes more requests than a human visitor. A security rule can produce an indexing problem.

Thin page patterns that can end up not indexed

Certain page types can land in the Crawled, Duplicate and Soft 404 rows because of how they are built. These examples use catering pages, and the same shapes can appear in other industries.

  • The bare price list. A menu or rate card with names and prices and nothing else. Add what a buyer needs to decide: descriptions, what each package suits, quantities, lead times.
  • The image-only gallery. Photos with no text give Google little to index. Turn it into case studies: what the event or project was, what was delivered, what constraint was solved.
  • Location pages that differ only by the city name. When they barely differ, they can land in the Duplicate rows. Give each page real local substance (the venues served, local specifics, service details) or merge them into one service-area page.
  • Year-stamped URLs for recurring content. /holiday-catering-2025 goes stale and starts over every year. An evergreen URL updated in place keeps its history. This is an editorial choice, not a Google rule.

A stub such as “menu coming soon” returns a 200 status while looking empty, which is one way a Soft 404 happens.

After the fix: validation and recrawl

Validate fix. Fix every instance of a reason, open that reason’s details page and click Validate fix. Google checks a few pages first. If it finds a single remaining instance, validation stops. Validation typically takes up to about two weeks and can take longer. Google offers a way to speed it up: submit a sitemap of your priority affected pages, filter the report to that sitemap, and validate against the subset. An issue stays in the report until 90 days after its last instance is gone.

Request indexing. URL Inspection can ask Google to crawl a URL. Google says submitting a request does not guarantee the page will appear in the index, and there is a daily limit on requests. For a “Crawled – currently not indexed” page, Google’s definition says there is no need to resubmit. Request a crawl after you have changed something Google needs to see.

Shortcuts that don’t apply. The Indexing API can only be used for pages with JobPosting, or BroadcastEvent embedded in a VideoObject. It is not a route for ordinary pages.

Pages that should stay out

Not every URL on a site deserves to be indexed, and a report full of excluded parameter URLs and redirects can be a sign that things are working. For a page you want kept out of search, Google points to two options: a noindex directive, explained in its guidance on blocking indexing, or requiring a login. A robots.txt rule is the wrong tool for this job. Google says it is not recommended for blocking a page and “will actually prevent noindex from being seen.” A page blocked that way can still be indexed from links pointing at it.

Frequently asked questions

What is the difference between “Discovered – currently not indexed” and “Crawled – currently not indexed”?

Discovered means Google found the URL and has not crawled it yet; Google says this is typically because crawling was expected to overload the site. Crawled means Google fetched the page and did not index it, without giving a reason, and says there is no need to resubmit it. The first calls for server and crawl checks, the second for work on the page itself.

Does requesting indexing in URL Inspection force a page into the index?

No. Google says a request does not guarantee the page will appear in the index, and requests are subject to a daily limit. Use it after a change Google needs to see.

Why does the live test look fine when the report shows a problem?

The report reflects the last crawl, and the live test checks the page now, so you may have fixed the issue since. The live test also skips duplicate and canonical conditions. Compare the crawl date with the date of your fix.

How do I keep a page out of Google’s index?

Use a noindex directive, or require a login. Don’t rely on robots.txt: it stops Google from crawling the page, including seeing any noindex on it, and the page can still be indexed from links.

Leave a comment

Your email address will not be published. Required fields are marked *