Page Is Not Indexed: Every “Why Pages Aren’t Indexed” Reason in Search Console, Explained
Some of these reasons are real errors, some are settings working as intended, and some are Google's own judgement calls. Here's how to tell which is which, and what to fix first.
The short answer
“Page is not indexed” in Google Search Console always comes with a reason, and the reason tells you whether to act. Roughly a third of the reasons are real errors you should fix (server errors, redirect errors, 403s, soft 404s). Another third are exclusions you set up yourself and are usually fine (noindex, robots.txt, canonicals, redirects). The rest are Google’s own choices about what to crawl and index, where the fix is better content and links rather than a setting. Google’s help page for the report says not to expect every URL on your site to be indexed — the goal is that the pages you care about are, not that the “not indexed” number reaches zero.
Where to find the reasons
Open Indexing → Pages in Search Console. Under the chart, the Why pages aren’t indexed table lists one row per reason with the number of affected pages. Two columns matter:
- Source — Website means something on your site caused it (a status code, a tag, a robots rule); Google’s help page says these are generally the only issues you can fix directly. Google systems means Google decided, with nothing technically blocking it, so the row changes only when Google re-evaluates the pages.
- Validation — whether you’ve asked Google to recheck the row after a fix, and how that’s going.
Click any row to see a trend and up to 1,000 example URLs. For a single URL, paste it into URL Inspection at the top of the page; the result there is more current than the report.
Every reason at a glance
| Reason | What it means | Worry? |
|---|---|---|
| Server error (5xx) | Your server returned a 500-level error to Googlebot | Fix now |
| Redirect error | Redirect loop, chain too long, or a bad URL in the chain | Fix now |
| Blocked due to access forbidden (403) | Your server refused Googlebot | Fix if the page should be public |
| Blocked due to unauthorized request (401) | The page asks for a login | Fine for private pages |
| URL blocked due to other 4xx issue | Some other 4xx code, e.g. 410 or 429 | Check |
| Soft 404 | A 200 page that looks empty or like an error page | Fix |
| Not found (404) | The URL returns 404 | Fine if the page is gone on purpose |
| URL blocked by robots.txt | A robots.txt rule stops crawling | Fine if intended |
| Excluded by ‘noindex’ tag | The page asks not to be indexed | Fine if intended |
| Blocked by page removal tool | A removal request in Search Console is hiding it | Check who filed it |
| Page with redirect | The URL redirects; Google indexes the target instead | Usually fine |
| Alternate page with proper canonical tag | Your canonical points elsewhere and Google agreed | Usually fine |
| Duplicate without user-selected canonical | A duplicate with no canonical; Google picked another URL | Check |
| Duplicate, Google chose different canonical than user | Google overrode the canonical you declared | Check |
| Crawled – currently not indexed | Fetched, but Google chose not to index it (yet) | Improve the page |
| Discovered – currently not indexed | Known, but not crawled yet | Wait, then improve signals |
Errors to fix first
Server error (5xx)
Googlebot asked for the page and your server answered with a 500-level error. If it happens often, Google also crawls the whole site more slowly. Check your server or host logs for the time of the crawl, look at Settings → Crawl stats for the error rate, and watch for a firewall or bot-protection rule that returns 503 to crawlers. Once it’s stable, validate the fix.
Redirect error
Google’s definition covers four cases: a redirect chain that was too long, a redirect loop, a redirect URL that exceeded the maximum URL length, and a bad or empty URL in the chain. The fix is to make every redirect go straight to the final URL in one hop, and to update internal links to point there directly. The 301 vs 302 guide covers which redirect to use.
Blocked due to access forbidden (403)
Your server returned 403 to Googlebot. Google notes that Googlebot never sends credentials, so a 403 on a public page is a server mistake — often a security plugin, a WAF rule or a CDN bot setting that treats crawlers as attackers. Allow verified Googlebot, or remove the restriction from pages that should be public.
Blocked due to unauthorized request (401)
The page sits behind a login. That’s expected for account pages and staging sites. If a public page shows up here, something put it behind authentication by mistake — commonly a password-protected staging setting that was carried over to production.
URL blocked due to other 4xx issue
A 4xx code that isn’t 401, 403 or 404 — 410 (gone) and 429 (too many requests) are the usual ones. A 410 on a deleted page is fine. A 429 means your server or CDN is rate-limiting Googlebot, which slows crawling of everything; raise the limit for verified crawlers. Inspect a URL to see the exact code.
Soft 404
The page returns 200 OK but looks like an error or an empty page — “no products found”, an empty category, a search page with zero results, or a page that renders blank. Google’s advice: if the page is really gone, return a 404 or 410; if it isn’t, add enough real content that it no longer looks like a missing page. Don’t redirect every missing page to the homepage — Google treats that as a soft 404 too. The custom 404 page guide shows how to set up a proper one.
Not found (404)
Google’s position is that a 404 isn’t a problem when the page was removed and has no replacement. Act only when a URL in the list should exist (fix it) or has a clear new home (301-redirect it there). If the 404s come from your own links, fix those links.
The Redirect Chain Checker follows a URL hop by hop and shows each status code, so loops, long chains and a 403 or 5xx at the end of a redirect are easy to spot. No signup.
Check a URL’s redirects and statusExclusions you probably set yourself
URL blocked by robots.txt
A Disallow rule stops Google from crawling the URL. That’s right for admin areas, cart pages and infinite filter URLs. But robots.txt controls crawling, not indexing: to keep a page out of search, Google says to allow crawling and use noindex instead, because it can’t see a noindex on a page it isn’t allowed to fetch. The robots.txt guide covers the rules that block more than intended.
Excluded by ‘noindex’ tag
The page has <meta name="robots" content="noindex"> or an X-Robots-Tag: noindex header. If you meant it, ignore the row. If important pages are listed, look for a CMS setting (“discourage search engines”), an SEO plugin default on a post type, or a noindex added during development that was never removed.
Blocked by page removal tool
Someone with access to the property filed a removal request under Indexing → Removals. A temporary removal hides a URL from results for about six months; it doesn’t delete the page from Google’s index. If you didn’t intend it, cancel the request there.
Page with redirect
The URL redirects, so Google indexes the destination instead. That’s exactly what should happen for old URLs, http:// versions and non-www variants. It needs attention only if the listed URLs are ones you expect to rank — which usually means a redirect you didn’t intend — or if they’re still in your sitemap. A sitemap should list final URLs only.
Alternate page with proper canonical tag
Your page says another URL is canonical and Google accepted it. Google’s help page says there is nothing you need to do. The full guide to this status explains the one case where it is a problem: a page you want ranked whose canonical points somewhere else.
Google’s choices: duplicates and “currently not indexed”
Duplicate without user-selected canonical
Google found the page to be a duplicate of another URL, and the page doesn’t declare a canonical, so Google picked one itself. Inspect the URL to see which page Google chose. If the choice is wrong, add a self-referencing canonical to the page you prefer and point the duplicates at it; if the pages aren’t meant to be duplicates, make their content substantially different. Typical causes are parameter URLs, trailing-slash and www variants, and printer or AMP versions.
Duplicate, Google chose different canonical than user
You declared a canonical, but Google picked another URL. Google’s advice is to check whether the canonical you declared is actually similar to the page; if it isn’t, Google won’t use it. More often, other signals disagree with the tag — internal links, the sitemap, hreflang or redirects point at a different version. Make them all agree on one URL. The duplicate content guide covers how to find the overlap.
Crawled – currently not indexed
Googlebot fetched the page and decided not to index it, with nothing technical in the way. It’s the most common reason on content sites and the hardest to “fix” with a setting, because it’s a judgement about the page’s value. Make it unique, merge it with a stronger twin, and link to it from pages Google already ranks. The full guide to Crawled – currently not indexed walks through it step by step.
Discovered – currently not indexed
Google knows the URL but hasn’t crawled it. On big sites that’s often crawl capacity; on small sites it’s usually priority — the page has few links and Google sees no reason to hurry. Clean up the sitemap, cut URL bloat and link to the page from indexed ones. The full guide to Discovered – currently not indexed covers when to wait and when to act.
Two warnings on indexed pages
These don’t appear under Why pages aren’t indexed. They’re warnings about pages that are indexed, listed in the report’s Improve page experience table:
- Indexed, though blocked by robots.txt — Google indexed the URL without crawling it, because other pages link to it. The result usually shows without a description. To remove it from search, unblock it in robots.txt and add
noindex; to keep it, unblock it so Google can read the content. - Page indexed without content — the URL is indexed but Google couldn’t read its content. Common causes are content that only loads through JavaScript that fails to render, or a server sending Googlebot something different from what visitors get. Use URL Inspection’s live test to see what Google receives.
Which to fix first
- Errors on pages you want indexed — 5xx, redirect errors, 403s and soft 404s. They stop good pages from being considered at all.
- Exclusions that hit important pages by mistake — a stray noindex, a robots.txt rule or a wrong canonical on a page you want ranked.
- “Crawled” and “Discovered” on pages that matter — the slow, content-and-links work.
- Everything else — usually leave it. 404s for deleted pages, redirects, noindexed utility pages and correct canonicals are signs your site is set up properly.
Checks you can run in a minute
# Status code of every hop, plus noindex and canonical signals
curl -sIL "https://example.com/some-page" | grep -iE "^http|^location|^x-robots-tag|^link"
# Is the path blocked in robots.txt?
curl -s https://example.com/robots.txt
# Fetch as Googlebot's user agent (servers that block it often show a 403 here)
curl -sI -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "https://example.com/some-page"In the browser, the Robots.txt Checker shows which rules apply, the Canonical URL Analyzer shows the canonical a page declares, the HTTP Header Checker reveals an X-Robots-Tag header, and the Custom 404 Checker tells you whether missing pages return a real 404.
After you fix something: Validate fix
Each row has a Validate fix button. Press it after you’ve fixed every instance of that reason — Google rechecks the affected URLs and reports Started, Looking good, Passed or Failed. Google says validation typically takes up to about two weeks and sometimes much longer. Don’t validate rows that describe intended behaviour (noindex, redirects, correct canonicals); they’ll “fail” because nothing changed, which tells you nothing new.
Want to know how many of your pages have these problems? The free site scan finds your site’s pages, checks a sample for noindex tags, missing canonicals, thin content, duplicate titles and unreachable URLs, and estimates how many pages across the site share each problem.
Scan your whole site, freeFrequently asked questions
Why does Search Console say my page is not indexed?
Every non-indexed URL in the Page indexing report has a reason, such as a server error, a noindex tag, a redirect, a duplicate or crawled – currently not indexed. Open Indexing → Pages and click the reason, or paste the URL into URL Inspection to see its status and the reason for that page.
Do all my pages need to be indexed?
No. Google's help page for the report says not to expect every URL on your site to be indexed. Redirects, deleted pages, noindexed utility pages and alternate URLs with correct canonicals should stay out. What matters is that the pages you want people to find are indexed.
Which page indexing errors should I fix first?
Errors that affect pages you want indexed: server errors (5xx), redirect errors, 403 responses and soft 404s. Then exclusions that hit important pages by mistake, like a stray noindex or a wrong canonical. Crawled and discovered – currently not indexed come next; most other reasons can be left alone.
What is the difference between a 404 and a soft 404?
A 404 is the server correctly saying a page doesn't exist. A soft 404 is a page that returns 200 OK but looks empty or like an error. Return a real 404 or 410 for pages that are gone, and add real content to pages that should exist.
How long does Validate fix take in Search Console?
Google says validation typically takes up to about two weeks, and sometimes much longer. Only start it after fixing every instance of a reason; validating rows that describe intended behaviour, like noindex or redirects, will fail because nothing changed.
Does robots.txt stop a page from being indexed?
Not reliably. robots.txt stops crawling, but Google can still index a blocked URL if other pages link to it, which shows up as Indexed, though blocked by robots.txt. To keep a page out of search, allow crawling and add a noindex tag.
Check your own site with the Site Health Dashboard.
Open Site Health DashboardWant every check at once?
The free Full Audit runs 33 checks on any URL, most of them in seconds. Add your email afterwards and we send a detailed one-page report; the full-site report covers up to 1,000 pages.
More from the blog
Discovered – Currently Not Indexed: Why Google Hasn’t Crawled Your Page Yet
Discovered – currently not indexed means Google knows your URL but hasn't crawled it. When to wait, when to act, and the five fixes that move pages forward.
Crawled – Currently Not Indexed: What It Means and How to Fix It
Crawled – currently not indexed means Google fetched your page but chose not to index it. Why it happens, a 7-step fix, and when to leave the URL alone.