“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
Related
Tags: #SEO #Google #Search Console #Indexing