← Back to blog
Technical SEO

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.

By Rajhussain Kanani10 min read

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

ReasonWhat it meansWorry?
Server error (5xx)Your server returned a 500-level error to GooglebotFix now
Redirect errorRedirect loop, chain too long, or a bad URL in the chainFix now
Blocked due to access forbidden (403)Your server refused GooglebotFix if the page should be public
Blocked due to unauthorized request (401)The page asks for a loginFine for private pages
URL blocked due to other 4xx issueSome other 4xx code, e.g. 410 or 429Check
Soft 404A 200 page that looks empty or like an error pageFix
Not found (404)The URL returns 404Fine if the page is gone on purpose
URL blocked by robots.txtA robots.txt rule stops crawlingFine if intended
Excluded by ‘noindex’ tagThe page asks not to be indexedFine if intended
Blocked by page removal toolA removal request in Search Console is hiding itCheck who filed it
Page with redirectThe URL redirects; Google indexes the target insteadUsually fine
Alternate page with proper canonical tagYour canonical points elsewhere and Google agreedUsually fine
Duplicate without user-selected canonicalA duplicate with no canonical; Google picked another URLCheck
Duplicate, Google chose different canonical than userGoogle overrode the canonical you declaredCheck
Crawled – currently not indexedFetched, but Google chose not to index it (yet)Improve the page
Discovered – currently not indexedKnown, but not crawled yetWait, 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 status

Exclusions 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

  1. Errors on pages you want indexed — 5xx, redirect errors, 403s and soft 404s. They stop good pages from being considered at all.
  2. Exclusions that hit important pages by mistake — a stray noindex, a robots.txt rule or a wrong canonical on a page you want ranked.
  3. “Crawled” and “Discovered” on pages that matter — the slow, content-and-links work.
  4. 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, free

Frequently 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 Dashboard

Want 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

We use cookies to analyze site usage and improve your experience. You can decline non-essential cookies. Privacy Policy