Key takeaways
- Most unindexed pages have a noindex, a canonical pointing elsewhere, an error status or a robots.txt block.
- The seogeoaeo.ai Indexing & Canonical Checker names which of those signals blocks a public URL, for 8 credits a run.
- Crawled - currently not indexed is Google's own decision, so it needs better content and links rather than a tag change.
Why is Google not indexing my pages? The answer is usually one of a short list: a noindex rule, a canonical that points elsewhere, an error status, a robots.txt block, or Google choosing not to keep the page. The first four you can find in under a minute with the seogeoaeo.ai indexability checker; the last one only Search Console can tell you about.
Here are the causes in the order worth checking, with the fix for each.
A noindex you forgot about
Staging sites, CMS plugins and page templates add noindex more often than anyone admits. It can sit in a meta robots tag in the HTML or in an X-Robots-Tag HTTP header, where nobody looks. Google's documentation says that when it finds noindex, it drops the page from results.
Fix: remove the directive from the template or the server config, then ask Google to recrawl.
A canonical pointing somewhere else
If page A says its canonical is page B, you have asked Google to index B instead. This happens with copied templates, tracking parameters and trailing-slash mixups. Google treats the canonical as a strong hint rather than an order, so it may also pick a different URL than you set.
Fix: make the canonical point at the page itself, and make sure the target returns a 200 and is indexable.
An error or redirect status
A 404, a 5xx or a redirect means Google never sees an indexable page at that URL.
Fix: return a 200 for pages that should rank, and link to the final URL instead of a redirect.
A robots.txt block
robots.txt stops crawling, not indexing. That has an odd side effect: Google cannot read a noindex on a page it is not allowed to fetch, so a blocked URL can still show up in results when other sites link to it.
Fix: if you want the page indexed, remove the Disallow rule. If you want it gone, allow crawling and add noindex.
Google crawled it and passed
Search Console's Page indexing report has a status called "Crawled - currently not indexed". Google's description is short: it crawled the page, did not index it, and may or may not index it later. "Discovered - currently not indexed" means Google found the URL but has not crawled it yet.
Fix: there is no tag to flip. Improve the page, link to it from pages that are indexed, and include it in your sitemap.
Find which one it is
| Cause | Where to see it |
|---|---|
| noindex, canonical, status, robots.txt | seogeoaeo.ai Indexing & Canonical Checker |
| Google crawled but chose not to index | Search Console Page indexing report |
| Google's current index status for a URL | Search Console URL Inspection |
The seogeoaeo.ai checker takes any public URL, reads the status, robots.txt rules for Google and Bing, meta robots, X-Robots-Tag, canonical and snippet controls, and names the signal that blocks the page with the tag or header to change. It costs 8 credits a run. It does not confirm what is in Google's index and it does not render JavaScript, so a page that only builds its content in the browser needs a separate test.
If you own the site and only need one URL looked at, Search Console's URL Inspection may be all you need: it shows Google's stored view and offers a live test. The seogeoaeo.ai check is quicker when you want the reason in plain terms or are checking a page you cannot open in Search Console.
A note on requesting indexing
Once the fix is live, you can request indexing in URL Inspection. Google says this does not guarantee the page gets indexed, and that a sitemap is better when many URLs changed.
Frequently asked questions
Does blocking a page in robots.txt keep it out of Google?
Not reliably. robots.txt stops crawling, and Google cannot see a noindex on a page it may not fetch, so the URL can still appear when other pages link to it.
Will requesting indexing fix it?
Only if nothing blocks the page. Google says a request does not guarantee indexing, and you cannot request it when the live test shows the page is not indexable.
Sources
- Indexing & Canonical Checkerseogeoaeo.ai
- Block search indexing with noindexGoogle Search Central
- Page indexing reportGoogle Search Console Help
- URL Inspection toolGoogle Search Console Help