GuideIndexing
Page indexing report: every 'not indexed' reason and its fix
The page indexing report shows which URLs Google left out and why. Every reason, whether it needs fixing, and the exact fix for each one.

The page indexing report in Google Search Console shows how many of the URLs Google knows on your site are indexed, and gives a reason for every URL that is not. Most sites have some not-indexed URLs for good reasons, so the job is to find the reasons that hit pages you want in search results and fix only those.
Below is every reason the report can show, in Search Console's own wording, with the fix and whether it needs one at all. Each reason links to a full guide.
What is page indexing in Search Console?
Indexing is the step after crawling: Google fetches a page, processes its content and stores it in the Google index, where it becomes eligible to appear in Search and Discover. The page indexing report is the site-wide view of that step. It counts your indexed and not-indexed URLs and groups the not-indexed ones by reason.
To open it, select your property, then click Pages in the Indexing section of the left menu. The summary page has four parts:
- A chart of indexed and not-indexed totals. Each bar is the running total as of that date, not the number of pages Google processed on that day.
- The "Why pages aren't indexed" table. Every row has a Reason, a Source (Website or Google) and a Validation state. Google's help says that, in general, you can fix only the issues whose source is Website.
- The "Improve page experience" table, for warnings that did not stop indexing. "Indexed, though blocked by robots.txt" lives here: Google indexed the URL from links alone because the block stopped it reading the page. The indexed though blocked by robots.txt guide covers that case.
- The "View data about indexed pages" link, with the history of your indexed count and up to 1,000 example indexed URLs.
A sitemap filter above the chart switches between All known pages (the default), All submitted pages, Unsubmitted pages only and one specific sitemap. Filtering to All submitted pages shows only the URLs you asked Google to index, which is usually the list you care about.
Google's help is blunt about small sites: with fewer than 500 pages you probably do not need this report. Search site:yourdomain.com, then inspect your homepage and key pages in URL Inspection.
Why are pages not indexed in Search Console?
Search Console files every not-indexed URL under a reason in the "Why pages aren't indexed" table. Fifteen reasons can appear there, from server errors and robots.txt blocks to duplicates and redirects. Several of them describe a site working as intended. The table maps each reason to its cause, whether you should act, and the fix.
| Reason, as the report words it | What Google is telling you | Act? | The fix | Full guide |
|---|---|---|---|---|
| Server error (5xx) | Your server returned a 500-level status or the request timed out, so Googlebot abandoned it. | Yes, on pages you want indexed | Check the host status in the Crawl Stats report, then look for a firewall or DoS rule that blocks Googlebot. URLs that keep returning 5xx are eventually removed from the index. | Server error (5xx) fixes |
| Redirect error | The chain was too long, looped, grew past the maximum URL length, or held a bad or empty URL. Googlebot follows up to 10 hops. | Yes | Redirect the old URL straight to the final URL in one 301 or 308 hop. | Redirect error fixes |
| URL blocked by robots.txt | A robots.txt rule stops Googlebot fetching the page. | Only if you want it indexed | Remove the Disallow rule. To keep a page out of Google, remove the block and add noindex, because a blocked URL can still be indexed from links. | Blocked by robots.txt |
| Excluded by 'noindex' tag | Google found noindex in a <meta name="robots"> tag or an X-Robots-Tag header. Google's help page calls this "URL marked 'noindex'". | Only if the noindex is a mistake | Remove the tag or header, confirm in Test live URL that "Indexing allowed?" no longer reports noindex, then click Request indexing. | Excluded by noindex tag |
| Not found (404) | The URL returned 404. Google found it through a link, or the page used to exist. | Only if you link to it or list it in a sitemap | Restore the page, or 301 it to its replacement if it moved. A removed page with no replacement can stay 404. | Not found (404) in Search Console |
| Soft 404 | The page shows a "not found" message or next to no content but returns 200. | Yes | Return a real 404 or 410 for pages that are gone. If the page is real, open View tested page in a live test to see what Google rendered, and fix what it missed. | Soft 404 errors |
| Blocked due to unauthorized request (401) | The page demanded authorization, and Googlebot sends no credentials. | Only for pages meant to be public | Remove the login requirement, or let verified Googlebot requests through. Loading the URL in an incognito window reproduces it. | No separate guide |
| Blocked due to access forbidden (403) | The server refused access. Googlebot never provides credentials, so Google treats a 403 to Googlebot as your server answering wrongly. | Yes, if the page should rank | Find the firewall or bot-protection rule returning 403 to Googlebot and allow requests you have verified as Googlebot (a reverse DNS lookup that ends in googlebot.com, google.com or googleusercontent.com, confirmed by a forward lookup). | Access forbidden (403) |
| Blocked due to other 4xx issue | Another 4xx status, not 401, 403 or 404. | Yes, if the page should rank | Inspect the URL, read the status under Page fetch, and fix the handler that returns it. | No separate guide |
| Crawled - currently not indexed | Google fetched the page and chose not to index it for now. | Yes, if you need the page in search | Do not resubmit it; Google says there is no need. Check the page is not thin or a near copy of another URL, and link to it from pages that are indexed. | Crawled - currently not indexed |
| Discovered - currently not indexed | Google knows the URL but has not crawled it, usually because crawling was expected to overload the site. The last crawl date is empty. | Yes, if it lasts on key pages | Check the host status in the Crawl Stats report, link to the URL from crawled pages, and keep it in your sitemap. | Discovered - currently not indexed |
| Alternate page with proper canonical tag | This URL points to a canonical that is indexed. | No | Nothing. | Alternate page with proper canonical tag |
| Duplicate without user-selected canonical | Google judged the page a duplicate and picked another URL as canonical, and you declared no canonical of your own. | Only if Google picked the wrong URL | Add <link rel="canonical"> naming the URL you want, or make the pages differ substantially if they are not duplicates. | Duplicate without user-selected canonical |
| Duplicate, Google chose different canonical than user | You declared a canonical, and Google chose a different URL. | Yes, if Google's choice is wrong | Compare the inspected page, the User-declared canonical and the Google-selected canonical, then make redirects, canonical tags, the sitemap and internal links all name one URL. | Google chose a different canonical |
| Page with redirect | A non-canonical URL that redirects, so only its target can be indexed. | No, for URLs you retired on purpose | Nothing, unless the URL should not redirect. Point internal links and the sitemap at the target. | Page with redirect |
Which not-indexed reasons need no action?
Page with redirect and Alternate page with proper canonical tag are usually the report working as intended. Old http:// URLs, retired slugs and parameter URLs such as ?utm_source= or ?sort=price that point at a clean canonical belong in those rows. So do noindex, robots.txt and 404 rows on pages you meant to hide or remove.
Google's help says it directly: having a page marked duplicate or alternate "is usually a good thing; it means that we've found the canonical page and indexed it." For Duplicate without user-selected canonical it goes further and calls the status "not an error, but is working as intended."
Judge each row by its example URLs rather than its count. Open the row and read them. If none of them is a page you want a searcher to land on, leave the row alone. If even one is, find the cause in the template or rule that produced it, because one bad robots.txt line or one layout carrying a stray noindex often explains the whole row.
Two patterns deserve attention even when every row looks expected. Google says a drop in indexed pages without a matching rise in errors can mean you are blocking existing pages with robots.txt, noindex or a required login. And a Not found (404) row only lists URLs that returned 404 in the past month, so a URL leaves that row once a month passes without it returning 404 to Google.
How do you read the report without being misled?
Treat the report as a delayed sample of your site. Each example list stops at 1,000 URLs and is not guaranteed to show every affected URL even below that number. Google's short guide adds that changes take a few days to reach the report, and each URL's status comes from Google's last crawl, not from your live page.
That lag explains a lot of confusing rows. If a row still lists a URL you already fixed, check its crawl date in the URL details before assuming the fix failed; the crawl probably came before your change. Google's help notes the reverse case too: a URL that URL Inspection lists as indexed but the report does not was probably indexed recently and will show up in the report soon.
A few more rules keep you from chasing ghosts:
- You cannot search or filter the report by URL. For one URL, use URL Inspection.
- The totals will not exactly match your own page count, and Google says small discrepancies can occur.
- An issue stays in the table until 90 days after its last instance disappears. If it comes back within those 90 days, it reopens with its original "First detected" date.
- You do not need to watch it daily. Google suggests checking monthly, or after large changes, and emails you when errors spike.
How does Validate fix work?
Validate fix asks Google to recrawl every URL known to have an issue and confirm it is gone. Google says it typically takes up to about two weeks, and in some cases much longer, because only the affected URLs are queued and each needs a fresh crawl. You get an email when it passes or fails.
Run it in this order:
- Fix every instance first. Validation stops as soon as Google finds a single remaining instance.
- Run Test live URL on two or three affected pages to confirm the fix is live.
- Open the issue's details page and click Validate fix, once. Google asks you not to click it again until validation has passed or failed.
- Search Console immediately checks a few pages. If the issue is still on any of them, validation ends and the state does not change.
- Follow progress from See details on the issue page, which lists every URL queued and its result.
To finish faster, submit a sitemap that holds only your important pages, filter the report by that sitemap, then validate. A request against that subset can complete sooner than one covering every affected URL.
| Validation state | What it means | Your next step |
|---|---|---|
| Not started | Some instances have never been in a validation request. | Fix them, then click Validate fix. |
| Started | Validation is running and no remaining instance has been found yet. | Wait for the emails. |
| Looking good | Every instance checked so far is fixed. | Wait. |
| Passed | All known instances are gone. You only reach this state by clicking Validate fix. | Nothing. |
| N/A | Google found the issue fixed everywhere without a validation request. | Nothing. |
| Failed | Pages still contain the issue after you clicked Validate fix. | Fix the URLs listed under See details, then click Start new validation. |
Each URL also gets its own state: Pending, Passed, Failed, or Other when Google could not reach it (Other counts as passed). A new validation rechecks only Pending and Failed URLs, plus any new instances found since.
URL Inspection: indexed result or Test live URL?
URL Inspection opens on Google's indexed result: what Google saw at its last crawl and why the URL is or is not on Google. Test live URL fetches the page now. Use the indexed result to learn Google's current decision, and the live test to confirm a fix before you request indexing.
| Your question | Use | Where to look |
|---|---|---|
| Is this URL in the index, and if not, why? | Indexed result | Page indexing section, Last crawl |
| Which URL did Google pick as canonical? | Indexed result only | User-declared canonical and Google-selected canonical |
| How did Google find this URL? | Indexed result only | Sitemaps and Referring page |
| Is my noindex or robots.txt fix live? | Test live URL | Crawl allowed? and Indexing allowed? |
| What does Googlebot actually render? | Test live URL | View tested page (the screenshot exists only in a live test) |
| Can I reproduce a 5xx? | Test live URL | Page fetch, though a server error can be transient |
The live test does not check duplicates or canonical choice, sitemaps, referring pages, quality, manual actions or removals, so a clean live test does not mean the page will be indexed. For redirects, the indexed result describes the URL you entered, while the live test follows the redirect and tests the target without saying so.
URL Inspection has a daily limit per property, Request indexing has its own quota, and asking twice for the same URL does not get it crawled any faster. Google says crawling can take anywhere from a few days to a few weeks.
Check what your pages send before Google's next crawl
The report shows what Google found days ago. To check what your pages send right now, run the free scan on LaunchScaler: you give it a URL, it needs no account, and it runs 156 checks across 6 of its 7 categories at no cost. Its search checks read the same signals this report reacts to: robots.txt rules that block a page, noindex in the meta robots tag or the X-Robots-Tag header, a noindex hidden behind a robots.txt block, canonicals that point at redirected or 404 URLs, soft 404s, long redirect chains, and a sitemap that is missing or lists non-canonical URLs. It reads your live site rather than Google's index, so fix what it flags, run Test live URL on one affected page, then click Validate fix on the matching row.
Questions, answered
What people ask about this
01What is the page indexing report in Google Search Console?
- It is the Search Console report that counts how many of your known URLs Google has indexed and gives a reason for each URL it did not index. Open it from the Indexing section of the left menu, where it is labelled Pages.
02Why are my pages not indexed in Search Console?
- Each not-indexed URL is listed under a reason in the 'Why pages aren't indexed' table, such as a noindex tag, a robots.txt block, a redirect or a duplicate. Many of those reasons are expected. Fix the rows where the Source column says Website and the example URLs are pages you want people to find.
03How long does Validate fix take in Search Console?
- Google says validation typically takes up to about two weeks and in some cases much longer, because it recrawls every URL known to have the issue. Do not click Validate fix again until the current validation has passed or failed.
04Does the page indexing report show every URL on my site?
- No. The example list for each reason stops at 1,000 URLs and is not guaranteed to include every affected URL even below that. To check one specific URL, use the URL Inspection tool, because the report cannot be searched by URL.
05Is 'Crawled - currently not indexed' an error?
- It is not a crawl failure. Google fetched the page and decided not to index it for now, and its documentation says the page may or may not be indexed later and that there is no need to resubmit the URL.
06Do small sites need the page indexing report?
- Google's help says a site with fewer than 500 pages probably does not need it. Search site:yourdomain.com and inspect your homepage and key pages in URL Inspection instead.
Sources
- Search Console Help: Page indexing reportsupport.google.com
- Search Console Help: Has Google found all your pages?support.google.com
- Search Console Help: URL Inspection toolsupport.google.com
- Google Crawling Infrastructure: How HTTP status codes affect Google's crawlersdevelopers.google.com
- Google Search Central: Block Search indexing with noindexdevelopers.google.com
- Google Search Central: How to specify a canonical URLdevelopers.google.com
- Google Search Central: Ask Google to recrawl your URLsdevelopers.google.com
- Google Crawling Infrastructure: Verify requests from Google crawlers and fetchersdevelopers.google.com
- Carrot Help Center: Understanding Google Search Console's Page Indexing Reporthelp.carrot.com


