How to Diagnose Why Google Is Not Indexing Your Pages
On this page
- The pipeline: each stage fails independently
- The pivotal split: Discovered versus Crawled
- The first-five-minutes checks
- A coverage-state reference for routing
- Diagnosing each side in practice
- The strategic reality
- Frequently Asked Questions
- What is the difference between “Discovered – currently not indexed” and “Crawled – currently not indexed”?
- Does requesting indexing in URL Inspection force a page into the index?
- Why is my page indexed in my browser’s view but showing not indexed in Search Console?
- Sources
- Related posts:
“Not indexed” is a symptom, not a diagnosis, and the methodology that actually resolves it is to read which Page indexing state a URL is in before doing anything, because the states sit at different points in the discover-to-crawl-to-index pipeline and each one fails for a different reason with a different fix. The pivotal distinction is between “Discovered – currently not indexed,” which means Google knows the URL exists but has not crawled it, a crawl-priority problem, and “Crawled – currently not indexed,” which means Google crawled the page and decided it was not worth indexing, a value problem.
These two look identical on the surface and share the same surface complaint, but the first is fixed with internal linking and architecture and the second is fixed with content. Conflating them is why months of “various fixes” change nothing.
This post owns the diagnostic method and the coverage-state reference: how to read one page’s state and act on it. The systemic question of why Google deliberately skips a fraction of pages on a large site, and the crawl-budget economics behind that, is a separate scale question and is not covered here.
The pipeline: each stage fails independently
Indexing is a sequence: Google discovers a URL, crawls it, decides whether to index it, and only then can it rank. A page can stall at any stage, and the Page indexing report tells you which stage it stalled at. That is the whole point of reading the state first. “Not indexed” with no further detail is useless; “Discovered – currently not indexed” versus “Crawled – currently not indexed” versus “Excluded by noindex tag” each points at a completely different lever. Note that the report is called Page indexing in current Search Console; the older “Coverage” name refers to the same family of states but is no longer the report’s name.
The pivotal split: Discovered versus Crawled
Read this distinction carefully, because it determines your entire course of action.
“Discovered – currently not indexed” means Google found the URL, usually via a sitemap or a link, but has not crawled it yet. The page never got fetched, so its content played no part in the decision. This is a crawl-priority problem: Google has decided this URL is not worth its limited crawl attention right now.
The causes are structural. Weak internal linking leaves the page poorly connected, so Google sees little signal that it matters. High click depth, a page buried many clicks from the homepage, signals low importance. Crawl waste elsewhere on the site, sprawling parameter URLs or thin templated pages, spends the crawl budget that this page needed. And a URL known only from the sitemap has the weakest possible discovery signal, because a sitemap entry alone, with no internal links pointing at it, tells Google almost nothing about the page’s importance. The fix is architectural: link to the page from relevant, well-crawled pages, reduce its click depth, and cut the crawl waste competing with it.
“Crawled – currently not indexed” means the opposite: Google did fetch the page, evaluated it, and chose not to index it. The content was the input to a “no” decision. This is a value problem, not a discovery one, and no amount of internal linking forces it in. The page is thin, duplicative, or carries no unique signal that distinguishes it from what Google already indexes. The fix is to make the page genuinely worth indexing: add firsthand value, resolve duplication through consolidation or canonicalization, and sharpen it to fully satisfy a real query rather than restating what hundreds of other pages already say.
The trap is treating these the same. Building internal links to a “Crawled – currently not indexed” page does nothing if the page is thin, and rewriting the content of a “Discovered – currently not indexed” page does nothing if Google never crawls it to see the rewrite. Read the state, then act on its actual cause.
The first-five-minutes checks
For any single non-indexed URL, three checks establish ground truth fast.
URL Inspection reads the exact current state straight from Google’s index, so you start from fact rather than guesswork about which of the states applies. Then run Test Live URL on the same page; this fetches and renders the page as Googlebot would right now, catching rendering failures, content that depends on JavaScript Google is not executing, or a resource block that leaves the rendered page effectively empty. A page that looks full in your browser but renders blank to Googlebot will sit in a not-indexed state no matter what else you do. Finally, scan robots.txt for a forgotten Disallow covering the URL’s path, a frequent and silent cause that blocks crawling entirely.
A coverage-state reference for routing
Each Page indexing state routes to a fix direction. The current strings, verify them against your own report since wording is what you act on, and what each implies:
| State | What it means | Fix direction |
|---|---|---|
| Discovered – currently not indexed | Known, not yet crawled | Internal links, reduce click depth, cut crawl waste |
| Crawled – currently not indexed | Crawled, judged not worth indexing | Content value and uniqueness, or consolidate |
| Duplicate without user-selected canonical | Near-duplicate, you set no canonical | Set a canonical to the clean URL |
| Alternate page with proper canonical tag | Google is obeying your canonical | Usually intended; only worry if you wanted this page indexed |
| Excluded by noindex tag | Your own noindex told Google to stay out | Find and remove the noindex source |
| Blocked by robots.txt | Crawling is blocked | Decide whether the block is intended |
| Page with redirect | Redirecting URL, destination indexed | Usually intended; cut old-URL sources if it grows |
| Soft 404 | Looks empty or error-like to Google | Add real content or return a proper status |
| Not found (404) | URL returns 404 | Restore or redirect if it should exist |
The states owning their own dedicated GSC string fixes (the canonical, robots, noindex, and redirect statuses) each have a deeper treatment of their own; this table is the routing layer, telling you which direction a given non-indexed page belongs in.
Diagnosing each side in practice
For a “Discovered” page, sample the affected URLs and check how they are linked. Are they reachable from the main navigation or a hub page, or only from the sitemap? Count clicks from the homepage. If they are deep and weakly linked, the architecture is the cause, and adding contextual internal links from strong pages plus flattening depth is the fix.
For a “Crawled – currently not indexed” page, compare the thin survivors against your indexed peers. Take a page that did get indexed in the same template or topic and ask what it has that the rejected one lacks: genuine unique content, firsthand detail, a real reason to exist separately. The gap is your fix. If the honest answer is that the page duplicates another or adds nothing, consolidation or removal is the correct move, not a forced re-index.
The strategic reality
Not every page deserves to be indexed, and chasing 100% indexation on a site with thin or duplicative pages is the wrong goal. “Request indexing” in URL Inspection triggers a crawl, not an index decision; it asks Google to look again, but Google still applies the same value judgment. For an unchanged thin page, requesting indexing mostly just confirms the rejection faster. Use it for pages you have genuinely improved or for a small number of high-priority URLs, and let natural recrawl handle scale. Mass-requesting indexing on pages you have not changed accomplishes nothing and signals nothing.
Frequently Asked Questions
What is the difference between “Discovered – currently not indexed” and “Crawled – currently not indexed”?
“Discovered” means Google knows the URL but has not crawled it, a crawl-priority problem fixed with internal linking, reduced click depth, and less crawl waste. “Crawled – currently not indexed” means Google fetched the page and judged it not worth indexing, a content-value problem fixed by adding unique value or consolidating. The fixes do not transfer between the two.
Does requesting indexing in URL Inspection force a page into the index?
No. Request indexing triggers a crawl, not an index decision. Google still applies its value judgment, so for an unchanged thin page it usually just confirms the rejection sooner. Use it after genuinely improving a page or for a few high-priority URLs, not as a mass workaround.
Why is my page indexed in my browser’s view but showing not indexed in Search Console?
Run Test Live URL in URL Inspection to see how Googlebot renders it. A page that looks complete in your browser can render blank or partial to Googlebot if key content depends on JavaScript Google is not executing or if a blocked resource breaks rendering. Also scan robots.txt for a Disallow on that path.
Sources
Page indexing report – Search Console Help: https://support.google.com/webmasters/answer/7440203
URL Inspection Tool – Search Console Help: https://support.google.com/webmasters/answer/9012289
Crawling and indexing topics – Google Search Central: https://developers.google.com/search/docs/crawling-indexing