What the Page indexing report shows
The report splits every URL Google knows on your site into two groups:
- Indexed: Google stored the page and it can appear in results. Indexed does not mean ranking.
- Not indexed: Google knows the URL but left it out. The "Why pages aren't indexed" table gives one row per reason.
Each row has a Source column. Google says: "In general, you can fix only issues where the source is listed as 'Website'." It also says: "Don't expect every URL on your site to be indexed... Just be sure that the key pages on your site are indexed."
So a big "Not indexed" number is normal. Most sites have more excluded URLs than indexed ones: tag pages, filter URLs, old redirects, tracking-tag URLs. What matters is whether the pages you care about are in the indexed group.
Read the report the right way first
Three settings change what you see, and getting them wrong wastes hours.
| Trap | What happens | What to do |
|---|---|---|
| The default filter | The report opens on "All known pages", which includes URLs Google found on its own | Switch to All submitted pages to see only the URLs in your sitemaps |
| The 1,000-row sample | Each reason shows up to 1,000 example URLs, and Google says the list is not guaranteed to be complete | Fix the pattern behind the examples, not just the rows you see |
| Old data | A row stays the same until Google crawls the URL again | Use URL Inspection > Test live URL to see the page now, and Validate Fix to clear the row |
A fictional example: brightsmile-dental.com shows 212 pages not indexed. On "All submitted pages" that drops to 6. The other 206 are tag pages, tracking-tag URLs and old redirects. The real to-do list is 6 URLs.
Every Page indexing reason: fix, check or ignore
Here is the usual call for each reason, as it appears in Search Console. "Fix if wanted" means fix it only when the URL is a page you want in Google.
| Reason | Usual call | What it means in plain words |
|---|---|---|
| Server error (5xx) | Fix | Your server crashed or timed out when Google visited |
| Redirect error | Fix | Redirect loop, chain too long (Google follows up to 10 hops), or a bad URL in the chain |
| URL blocked by robots.txt | Fix if wanted | A Disallow rule stops Google from crawling the URL |
| URL marked 'noindex' | Fix if wanted | The page tells Google not to index it |
| Soft 404 | Fix | The page loads but looks empty or like an error page |
| Blocked due to unauthorized request (401) | Fix if wanted | The page needs a password |
| Not found (404) | Check | The URL does not exist; fine if you deleted it on purpose |
| Blocked due to access forbidden (403) | Fix | A firewall, CDN or security plugin refused Googlebot |
| URL blocked due to other 4xx issue | Check | Another 4xx code, such as 410 or 429 |
| Crawled - currently not indexed | Check | Google read the page and chose not to index it for now |
| Discovered - currently not indexed | Check | Google knows the URL but has not crawled it yet |
| Alternate page with proper canonical tag | Ignore | This URL points to the main version, and Google agrees |
| Duplicate without user-selected canonical | Check | Duplicates with no canonical tag; Google picked one |
| Duplicate, Google chose different canonical than user | Fix if key page | You picked one URL as main; Google kept another |
| Page with redirect | Ignore | The URL redirects, so Google indexes the target |
| Indexed, though blocked by robots.txt (warning) | Check | Indexed from links even though Google cannot crawl it |
| Page indexed without content (warning) | Fix | Google indexed the page but could not read its content |
Older reports may also show Blocked by page removal tool. Google's current help page no longer lists it. It means someone used Indexing > Removals, which hides a URL for "about six months" (source).
Which reasons matter for my site? A 4-question triage
Take one sample URL from a reason and answer these in order. Stop at the first match.
- Do you want this URL in Google? No: ignore it, and keep it out of your sitemap and menus.
- Is it a hard block (5xx, redirect error, 401, 403, 4xx, 404, soft 404, robots.txt, noindex)? Yes: fix it now. Google cannot index the page until you do.
- Is it a canonical or duplicate reason? Run URL Inspection and read "Google-selected canonical". If that is the URL you want, ignore the row. If not, fix your canonical signals.
- Is it Crawled or Discovered - currently not indexed? No setting is blocking the page. Make it more useful, link to it from indexed pages, then wait.
The full guide prints this as a one-page decision tree.
How to fix the most common Page indexing issues
URL marked 'noindex'
The page carries a "do not index" tag. One forgotten checkbox is the usual cause.
- WordPress: Settings > Reading, untick "Discourage search engines from indexing this site". In Yoast, open the post's Advanced tab and set "Allow search engines to show this content in search results?" to Yes. In Rank Math, Advanced tab > Robots Meta, untick No Index.
- Shopify: look for a noindex tag in theme.liquid or one added by an SEO app.
- Webflow: check page and site custom code in the head for a robots meta tag.
- Wix: in the page's SEO settings, turn on "Let search engines index this page".
Soft 404
The server says "200 OK" but the page looks empty. Empty Shopify collections, sold-out products with no details and empty search pages are common causes. If the page is truly gone, return a real 404 or 410, or redirect it to a close match. If it should stay, add real content.
Crawled - currently not indexed
Google says: "It may or may not be indexed in the future; no need to resubmit this URL for crawling." Usually the page is thin, too close to another page, or has few links pointing to it. Merge or remove pages you do not need, add what the top result has that yours lacks, and add 2 or 3 links from related indexed pages.
Duplicate, Google chose different canonical than user
Your signals disagree. If the two pages are the same, 301 one to the other: Google calls redirects "a strong signal". Then point your canonical tag, internal links and sitemap at the same URL (Google canonical doc).
The guide has a card like this for every reason, with WordPress, Shopify, Webflow and Wix steps where they differ. Deeper pages: Crawled - currently not indexed, Discovered - currently not indexed, soft 404, page with redirect, alternate page with proper canonical tag and duplicate without user-selected canonical.
How to validate a fix and request indexing
- Test live URL in URL Inspection. If the live test still shows the problem, the fix did not work.
- Fix every affected URL, then click Validate Fix on the reason. Google: "If you missed a fix, validation will stop when Google finds a single remaining instance."
- Wait. Google says validation "typically takes up to about two weeks, but in some cases can take much longer."
- For a few key pages, click Request Indexing. Google says there is "a daily limit" and that a request "does not guarantee that the page will appear in the Google Index." For many URLs, resubmit your sitemap instead.
| Validation state | What it means |
|---|---|
| Not started | Some URLs were never in a validation request |
| Started | Validation is running, no remaining issue found yet |
| Looking good | Every URL checked so far is fixed |
| Passed | All known instances are gone |
| Failed | Enough pages still have the issue; fix and start a new validation |
Source: URL Inspection tool help, Page indexing report help.
Who this guide is for
- Site owners who opened Search Console and saw "Why pages aren't indexed" with no idea which rows matter
- Marketers and freelancers who fix indexing on WordPress, Shopify, Webflow or Wix sites for clients
- Anyone whose new pages or products are not showing up in Google
How to use this with an AI assistant
You can run this guide with ChatGPT, Claude or any assistant that supports MCP. Connect SEOmatic at https://seomatic.ai/mcp, then paste the prompt below.
No SEOmatic tool reads the Page indexing report's reason list in bulk, so export it first (Indexing > Pages > click a reason > Export) and paste the URLs. The assistant inspects them, sorts them into Fix, Check and Ignore, and stages fixes for your approval. Nothing changes on your site until you approve it.
Connect SEOmatic: https://seomatic.ai/mcp
Works in any MCP client (ChatGPT, Claude, Cursor and others). The free check needs no sign-in. Reading your Search Console data is free after you sign in. Staging fixes needs the 14-day trial, and nothing goes live until you approve it.
Before you start: no SEOmatic tool reads the Page indexing report's reason list in bulk. Either export it (Search Console > Indexing > Pages > click a reason > Export) and paste the URLs, or let the assistant inspect the URLs from your sitemap.
Copy-paste prompt
Use SEOmatic to run the page indexing fix guide on mysite.com.
1. Run check_site on mysite.com for a quick first look (homepage status, redirects, noindex, canonical, robots.txt, a sample of sitemap pages).
2. Sign me in with connect_seomatic so you can read my Search Console data.
3. Check my sitemaps with gsc_insights (action: sitemaps).
4. Here are URLs I exported from Search Console > Indexing > Pages, grouped by reason: [PASTE URLS HERE]. If I did not paste any, take my most important sitemap URLs instead. Inspect them with gsc_indexing (action: batch_inspect), up to 50 URLs per call. Google's URL Inspection quota applies, so start with the pages that matter most.
5. Group the results by coverage state. For each URL, give the call from the guide:
- Fix: 5xx, redirect error, 401, 403, 404 on a page that should exist, soft 404, blocked by robots.txt or noindex on a page I want indexed, page indexed without content, Google chose a different canonical on a key page.
- Check: crawled or discovered - currently not indexed, duplicate without user-selected canonical, other 4xx, indexed though blocked by robots.txt.
- Ignore: alternate page with proper canonical tag, page with redirect, and any URL I would not want in Google anyway. For canonical rows, show user-declared vs Google-selected canonical.
6. Run site_audit to catch noindex leaks, canonicals pointing elsewhere, near-empty pages, dead pages and broken internal links.
7. For every Fix item, stage the fix for my approval with task_manage (action: create) using the matching type: noindex, canonical, broken_link_fix, technical, sitemap_submit, or index_request for key pages once they are fixed. Then show_approval_cards so I can approve or dismiss each one.
8. Do not change anything live without my approval. If I approve something and want it back, use task_manage (action: rollback).
End with a short table: reason, URLs affected, call (Fix/Check/Ignore), task staged (yes/no).Tools this prompt uses
| MCP tool (action) | Raw name | What it does |
|---|---|---|
| check_site | check_site | Free first check, no sign-in: homepage indexability and up to 10 sitemap pages. No Search Console data. Rate limited. |
| connect_seomatic | connect_seomatic | Shows the free sign-in prompt |
| gsc_insights (sitemaps) | get_sitemaps_status | Health of every submitted sitemap |
| gsc_indexing (inspect) | inspect_url_indexing | URL Inspection for one URL: verdict, coverage state, robots, crawl, Google vs user canonical, last crawl |
| gsc_indexing (batch_inspect) | batch_inspect_urls | Same for up to 50 URLs per call; Google's quota applies |
| site_audit | site_audit | Crawl of up to 30 pages: noindex leaks, canonicals pointing elsewhere, near-empty and dead pages, broken internal links |
| task_manage (create) | create_seo_tasks | Stages fixes as proposals; never executes |
| show_approval_cards | show_approval_cards | Approve or Dismiss cards in the chat |
| task_manage (rollback) | rollback_seo_task | Undoes an executed change |
What it cannot do
- Read the Page indexing report's reason list or counts in bulk (export them from Search Console).
- Click Validate Fix in Search Console for you. Do that in Indexing > Pages once fixes are live.
- Make Google index a page. A request is a request; Google decides.
Go deeper
- GuideCrawled - currently not indexed: what it means and how to fix it
- GuideDiscovered - currently not indexed: why it happens and how to fix it
- GuideSoft 404: what it is and how to fix it
- Guide"Page with redirect" in Search Console: is it a problem?
- GuideAlternate page with proper canonical tag: what it means
- GuideDuplicate without user-selected canonical: how to fix it
Sources (8)
- support.google.com/webmasters/answer/7440203
- support.google.com/webmasters/answer/9012289
- support.google.com/webmasters/answer/9689846
- developers.google.com/search/docs/crawling-indexing/http-network-errors
- developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls
- developers.google.com/search/docs/crawling-indexing/block-indexing
- developers.google.com/search/docs/crawling-indexing/robots/intro
- developers.google.com/search/docs/crawling-indexing/large-site-managing-crawl-budget


