Search Console "Not Indexed" — Decoded by State

The 7 most common "not indexed" reasons and the right fix for each.

“Not indexed” in Search Console’s “Pages” report is an umbrella term — there are 10+ specific statuses under it, and each has a completely different fix. Treating them as one bucket wastes time. This is the cheat sheet for the 7 most common, each with “how to identify + how to fix + how long it takes to take effect.”

Common causes (7 statuses)

1. Discovered – currently not indexed

Meaning: Google knows the URL exists but hasn’t sent a crawler yet.

Fix:

  • Lift site authority (backlinks + traffic)
  • Free crawl budget from junk URLs (params / tag / search)
  • Add 5+ internal links pointing to the target URL

Time to effect: 4-8 weeks

Deep dive: Discovered - currently not indexed

2. Crawled – currently not indexed

Meaning: Google fetched the page but decided “not worth indexing.” This is a quality issue.

Fix:

  • Thicken content (≥800 words, add unique data / cases / screenshots)
  • Delete or merge highly similar sibling pages
  • Build authority via backlinks
  • Rewrite the first paragraph to deliver unique information density

Time to effect: 8-12 weeks

Deep dive: Crawled - currently not indexed

3. Duplicate without user-selected canonical

Meaning: Google found this page similar to others, but you didn’t declare a canonical, so Google picked one.

Fix:

  • Add explicit <link rel="canonical" href="..." /> in head
  • Default to self-canonical
  • If truly duplicate, 301 one to the other

Time to effect: 2-4 weeks

4. Duplicate, Google chose different canonical than user

Meaning: You set a canonical but Google disagreed and picked another URL.

Fix:

  • Make your preferred URL the strongest signal (more internal links, more backlinks, longer content)
  • Or surrender: 301 the loser to Google’s pick
  • Align sitemap / internal links / canonical to the master

Time to effect: 4-8 weeks

Deep dive: Duplicate, Google chose different canonical

5. Alternate page with proper canonical tag (informational)

Meaning: This is a pagination / param variant / hreflang alternate, and Google is respecting your canonical by skipping it. Normal.

Fix: Usually no action needed. Verify:

curl -sL https://yourdomain.com/that-url | grep -oE '<link rel="canonical" href="[^"]+"'

If the canonical points to the master version you actually want indexed, mark “OK” and move on.

Deep dive: Alternate page with proper canonical tag

6. Excluded by ‘noindex’ tag

Meaning: The page head contains <meta name="robots" content="noindex">. Google respects your instruction.

Fix:

  • Intentional noindex (admin / preview / draft): keep, but make sure those pages aren’t in the sitemap
  • Accidental noindex: delete the meta tag, redeploy, Request indexing in URL Inspection

How to check if it’s intentional:

curl -sL https://yourdomain.com/page | grep -i noindex
# Found means the tag is really there

Time to effect: 1-2 weeks after removing noindex

7. Blocked by robots.txt

Meaning: robots.txt blocks the crawler. Google can’t reach the page, so indexing is impossible.

Fix:

curl -s https://yourdomain.com/robots.txt
# Find the matching Disallow rule

If the block is correct: keep, but remove those URLs from the sitemap. If the block is wrong: edit robots.txt to drop the Disallow, redeploy, Search Console → robots.txt tester → verify → Request indexing.

Time to effect: 1-2 weeks after unblock

Shortest path to fix

Step 1: Group by status, prioritize by impact

Open Search Console → Pages → scroll to “Why pages aren’t indexed.” Note each status’s URL count:

Crawled - currently not indexed: 320  ← quality issue, highest ROI to fix
Discovered - currently not indexed: 180  ← crawl budget / authority
Alternate page with proper canonical: 95  ← informational, skip
Duplicate, Google chose different canonical: 12  ← weak canonical signal
Excluded by 'noindex': 4  ← check if intentional
Blocked by robots.txt: 2  ← same

Sort by total × importance. Hit the most valuable first.

Step 2: One status at a time so you can attribute results

Don’t simultaneously change canonical + content + robots.txt — you can’t attribute outcomes. Suggested:

  • Week 1: clear accidental Excluded by noindex / robots.txt
  • Week 2-3: handle Duplicate (canonical alignment + 301s)
  • Week 4-8: thicken content (resolves Crawled - not indexed)
  • After week 4: pursue backlinks + internal link optimization (resolves Discovered - not indexed)

After each batch, wait 2-4 weeks before evaluating.

Step 3: Track long-term trend with a single table

| Week | Discovered | Crawled | Duplicate | Excluded noindex | Total not indexed |
|------|------------|---------|-----------|------------------|-------------------|
| W1   | 180        | 320     | 12        | 4                | 516               |
| W3   | 175        | 318     | 8         | 0                | 501               |
| W5   | 165        | 290     | 5         | 0                | 460               |
| W8   | 140        | 240     | 2         | 0                | 382               |

Downward trend = you’re fixing the right things. Flat = re-diagnose.

Step 4: Verify each status separately

After clearing Excluded by noindex, pick 1-2 URLs and Request indexing in URL Inspection. Re-check 1-2 weeks later for “URL on Google.”

Don’t wait for the Search Console report to refresh on its own — data lags 2-3 days and only samples.

Prevention

  • Don’t publish thin or duplicate content (avoids Crawled - not indexed)
  • Pre-launch crawl every template to verify canonical / noindex / robots.txt
  • Comment every Disallow in robots.txt with why, so future devs don’t break it accidentally
  • Intentional noindex pages stay OUT of the sitemap, otherwise Excluded by noindex perma-flags
  • Monthly scan of “not indexed” statuses — problems caught early are cheap to fix

Tags: #SEO #Google #Search Console #Indexing