Every status in Google's Page Indexing report, translated

Sources: Google Search Console Help; Google Search Central. First-hand counts from this site's own build output, 2026-09-01.

The short version

  • Google's Page Indexing report sorts every URL it knows about into 18 statuses across three tiers, and most of the 15 not-indexed ones describe a site working correctly.
  • On this site, 105 of the 245 URLs a crawler can discover carry an X-Robots-Tag noindex header on purpose, so 43% of what Google can find here was built never to be indexed.
  • Google's own documentation answers the noindex status with "If you do not want this page indexed, congratulations!", which is the plainest evidence that the not-indexed count is not a health score.
  • Google has changed some status labels and kept others, so match on meaning instead of on the exact string. One article here is a punctuation behind; another I wrongly assumed was outdated turned out to be current.
Watch: Google's Page Indexing report, read the right way

Google’s Page Indexing report sorts every URL it knows about on your site into 18 named statuses across three tiers: 15 reasons a URL is not indexed, 2 warnings for pages that are indexed but that Google struggled to read, and 1 for a page that simply worked.1 Most guides read that first tier as a queue of defects to work through, which is where the trouble starts. On this site it is mostly a record of decisions I made deliberately, and I can put a number on it. Of the 245 URLs a crawler can discover here, meaning an automated program like Googlebot that visits and reads pages, 105 were built so they can never be indexed. If you read your own report as a fault list, you will spend your week fixing things that were never broken.

105 of the 245 URLs a crawler can find on this site are engineered never to be indexed. That is 43%, and it is correct.

What does the Page Indexing report actually count?

The Page Indexing report counts URLs, not pages, and sorts them into three tiers. The largest holds 15 reasons a URL is not indexed, ranging from a server error to a canonical tag. A second tier holds 2 warnings, where the page is indexed but Google had trouble reading it. The third says the page worked.1

Two terms carry the rest of this piece. Being indexed means a page sits in Google’s database of results it can show. A canonical tag is a line of markup naming a different page as the real version among near-duplicates.

The 15 arrive under a heading that reads like a fault list, and that presentation is what misleads people. A status describes what happened when Google met your URL. It carries no opinion about whether what happened was good.

Why are most “not indexed” URLs supposed to be there?

Most not-indexed URLs are excluded because a site instructed Google to exclude them. A canonical tag naming a different page, a redirect to somewhere better, a noindex header on a duplicate, each one is an instruction someone wrote on purpose, and Google obeying it produces a row in the not-indexed list.

Google is direct about this in its own documentation. Its entry for the noindex status reads, in full seriousness, “If you do not want this page indexed, congratulations!”1

I call this pattern engineered exclusion: a URL a site deliberately publishes in a state that guarantees it can never be indexed. Naming it matters because the report gives you no way to separate it from failure. A 500 error and a working canonical tag both land in the same not-indexed bucket. One of them cost you a page and the other one saved you from a duplicate.

How many URLs does this site deliberately keep out of the index?

This site publishes 140 HTML pages and 105 plain-markdown twins, counted from the built output on September 1, 2026, and every twin is engineered exclusion. Each article and pulse page ships a second copy at /<path>/index.md so AI assistants can read clean text without parsing HTML. All 105 return X-Robots-Tag: noindex, pinned in public/_headers.

That noindex arrives as a header, an instruction the server attaches to its response. It never appears in the page itself, so viewing source will not show it to you.

Those twins are linked from their HTML pages, so Google finds them by ordinary crawling, and none appear in the sitemap, the file that lists a site’s pages for search engines.

The 140 HTML pages and 105 twins together give 245 discoverable URLs, of which 105 can never be indexed. Every one lands under the status Google now labels “URL marked ‘noindex’”.1 A stranger opening this property’s report would see a not-indexed count covering roughly 43% of the site and reasonably assume something had gone wrong.

The exact figures moved while I wrote this, which is the point in miniature. Publishing this article added one HTML page and one twin, so the counts above already include it. The ratio is the durable part, because the architecture guarantees it: every article ships exactly one twin, so the excluded share climbs toward half the site and stays there by design.

Which statuses mean you should do nothing?

Three statuses describe a site working correctly, and all three are common. “URL marked ‘noindex’” means Google found your instruction and obeyed it. Naming a different page as the real one gets you “Alternate page with proper canonical tag”, with Google agreeing to the swap. A “Page with redirect” simply forwards elsewhere, so the destination is what gets indexed.1

Each of these grows as a site matures. Every redirect you have ever set up eventually appears in that third bucket. Watching the number climb and treating the climb as decay gets the causation backwards, since a site with no redirects is usually a site that has never reorganized anything.

Which statuses are worth a second look?

Six statuses are ambiguous, and they are the ones worth your attention. “Crawled - currently not indexed” means Google read the page and declined to index it, which is a judgment about quality or demand and not a technical fault you can patch.1 “Discovered - currently not indexed” is different and more useful.

“Discovered - currently not indexed” means Google knows the URL exists and has not fetched it yet. Google’s own explanation is that it wanted to crawl the URL but expected the request to overload the site, so it rescheduled.1 A jump in this status is a capacity signal, and it belongs next to your server response times, which is the ground the crawl budget piece covers in depth.

The other four in this tier are “URL blocked by robots.txt”, the two duplicate statuses, and “Not found (404)”. Robots.txt is the text file at a site’s root that lists which paths crawlers may request. None of the four is automatically wrong. A robots.txt block on an admin path is correct, whereas the same block across a whole product section is a catastrophe wearing the same label. The status cannot tell you which you have, so you have to know your own intent before you open the report.

Which statuses need fixing today?

Six statuses are close to unambiguous faults, and each is named after an HTTP status code. “Server error (5xx)” and “Redirect error” mean Google could not complete the request. Your server reported success on a “Soft 404” while the page itself apologized for being missing, and Google recommends a real 404 for pages that are genuinely gone.1 Refusal covers the last three, where 401, 403 and other 4xx responses all mean Google was turned away.

A status code is the three-digit number a server sends back with every page it serves. The 200 in the challenge-screen case below is the one that says everything worked.

The 403 case deserves singling out, because Google’s documentation on it is unusually blunt. Googlebot, Google’s own crawler, never provides credentials, so a server returning 403 to it is responding incorrectly.1

Bot management is where that goes wrong, and it can fail in either direction. A rule that refuses Googlebot outright produces the 403 status above. A rule that serves Googlebot a challenge page with a 200 status instead produces no status at all in this report. Google simply indexes the challenge page as though it were your real content, a failure I covered in the piece on challenge screens. The first failure is loud in this report and the second one is invisible in it, so the report alone will never tell you your bot rules are wrong.

Which statuses mean a page is indexed and still broken?

Two statuses sit in a separate warning tier, and they are the mirror image of a URL that is correctly absent from the index. “Indexed, though blocked by robots.txt” means Google indexed a page it was never allowed to fetch, using only the text of links pointing at it, so the result carries almost no useful snippet. “Page indexed without content” means Google reached the page and could not read what was on it.1

Both are easy to miss because they never appear in the not-indexed count anyone watches. Google files them in a different table on the summary page, under “Improve page experience”.1 A site can therefore run a clean not-indexed number while quietly serving Google pages it cannot read, which is the failure the fault-list reading is least equipped to catch.

Why do the status names in most guides not match your report?

Google has changed the wording of several statuses, and published advice lags behind. I found the drift in my own back catalogue while writing this, in two different forms. The crawl budget piece writes the status as “Discovered, currently not indexed” with a comma, six times, while Google’s live documentation on September 1, 2026 punctuates it “Discovered - currently not indexed” with a hyphen.1

Do not over-correct from that, which I nearly did. While checking the same drift against the robots piece, I concluded its “Indexed, though blocked by robots.txt” was another retired label. It is not. The phrase is live and current, sitting in the warning tier, and my search missed it because the page renders a space before that comma. So one article here is a punctuation version behind and the other is exactly right, which is the useful lesson: check the label against the page rather than against your memory of the page, and make sure your check would survive the page’s own markup.

Match on meaning instead of on the string. A guide that tells you to filter your report for an exact label will send you hunting a row that no longer carries that name, and the behavior underneath it has not changed at all.

What does a noindex actually require to work?

A noindex instruction only works if Google can fetch the page and read it. Google states the condition directly, saying that for the noindex rule to be effective, the page or resource must not be blocked by a robots.txt file, and it has to be otherwise accessible to the crawler.2 Blocking a URL in robots.txt and adding a noindex to it accomplishes nothing, because the crawler never arrives to see the second instruction.

Blocking a URL and then adding a noindex to it is the single most common way a deliberate exclusion turns into an accidental indexation, and it has its own piece here on why a robots.txt Disallow is not a noindex.

How do you read your own report in ten minutes?

Open the Page Indexing report and sort every status into three tiers before you look at a single count. Tier one is work already finished, meaning the noindex, canonical and redirect statuses, so record the number and move on. Tier three is server errors, redirect errors, soft 404s and the access refusals, and every one of those gets a URL inspection today. Tier two is everything else, and it needs one question answered.

URL inspection is Search Console’s tool for checking how Google sees one specific address.

That question is whether you meant it.

Once you have actually fixed something in tier three, the button you want is Validate Fix rather than Request Indexing, and the difference between them is its own piece here on what validation actually does.

Then do the part almost nobody does. Write down, before you look, roughly how many URLs your site publishes on purpose that can never be indexed. Count your redirects, your canonicalized variants, your parameter URLs, and any machine-readable twins like the ones here. Compare that estimate against your not-indexed total. If the two are close, your report is healthy and its scary heading was the only problem. If your not-indexed count is far larger than anything you can account for, the gap is the actual finding, and it is worth more than any individual status ever will be.

Look up any status

By design

3 statuses

Working as intended. There is nothing here to fix.

What it meansGoogle fetched the page, found an instruction telling it not to index, and obeyed.

Common causeA noindex tag in the HTML head, or an X-Robots-Tag noindex in the HTTP response headers.

The fixNothing, if you meant it. Google's own documentation answers this status with: If you do not want this page indexed, congratulations!

On this siteYes, 105 URLs. Every article and pulse page on this site ships a plain-markdown twin at /<path>/index.md for AI assistants, and public/_headers pins X-Robots-Tag: noindex on all of them. They are linked from their HTML pages, so Google finds them, fetches them, and files all 105 here.

Read the deeper piece on this

What it meansThis page told Google that a different page is the real one, and Google agreed.

Common causeA deliberate canonical tag pointing elsewhere. Common on paginated, filtered, or mobile-variant URLs.

The fixNothing. This is the canonical tag working exactly as designed.

On this siteNo. The markdown twins would be the obvious candidates, but they carry only Content-Type and X-Robots-Tag, with no rel=canonical header, so they land under noindex instead.

Read the deeper piece on this

What it meansThe URL redirects somewhere else, so it is not the page that gets indexed.

Common causeAny 301, 302, 307 or 308. Every redirect you have ever deliberately set up appears here.

The fixNothing, if the redirect is intentional. Check the target is the page you meant.

On this siteYes. Every redirect in public/_redirects reports here once Google has seen the old URL.

Read the deeper piece on this

Worth checking

6 statuses

Confirm this is the outcome you actually meant.

What it meansGoogle wanted to fetch the page and your robots.txt told it not to.

Common causeA Disallow rule matching the URL. Often correct for admin paths and search-result pages, often accidental for whole sections.

The fixConfirm the block is intentional. A blocked page can still get indexed from external links, because Google never sees the noindex it cannot fetch.

On this siteNo. This site's robots.txt allows every crawler, deliberately, as an AI-citation decision.

Read the deeper piece on this

What it meansGoogle decided this page duplicates another one, and you never told it which to prefer.

Common causeNear-identical pages with no canonical tag. Parameters, sort orders, and print views are the usual sources.

The fixPick a canonical yourself. Leaving the choice to Google means it can change without warning.

On this siteNo.

What it meansYou named a canonical and Google overruled you.

Common causeTwo pages similar enough that Google trusts its own judgment over your tag. Currency-only or locale-only differences are a classic trigger.

The fixMake the pages genuinely different, or accept Google's pick. The canonical tag is a hint, never a directive.

On this siteNo.

Read the deeper piece on this

What it meansGoogle fetched the page, read it, and decided not to index it.

Common causeUsually a quality or demand judgment rather than a technical fault. There is no error to fix here.

The fixNothing mechanical. Improve the page or accept it. Resubmitting does not change the judgment.

On this siteExpected on a site this size. Any page can sit here.

Read the deeper piece on this

What it meansGoogle knows the URL exists but has not fetched it yet.

Common causeGoogle's own words: it wanted to crawl but expected that to overload the site, so it rescheduled.

The fixCheck server response times. A large jump in this status on a big site is a crawl-capacity signal.

On this siteExpected during a publishing run.

Read the deeper piece on this

What it meansThe URL returned a 404 when Google asked for it.

Common causeA deleted page, or a URL Google found as a link somewhere and tried anyway.

The fixRedirect it if the content moved. Leave it if the page genuinely should not exist. Google notes there is no way to make it permanently forget a URL.

On this siteYes, and mostly not by choice. This site's own bot logs show a large share of requests asking for paths that never existed.

Fix now

6 statuses

A real defect. Google is telling you something is broken.

What it meansThe page says it is missing but the server says everything is fine.

Common causeA friendly not-found message returned with a 200 status code. Also common on thin or empty pages.

The fixReturn a real 404 status. A human-readable apology is not a status code.

On this siteNo. A missing slug here returns a hard 404, confirmed by request.

Read the deeper piece on this

What it meansYour server broke when Google asked for the page.

Common causeAn application error, a timeout, or an overloaded origin.

The fixFix the server. Sustained 5xx responses reduce how much Google crawls you at all.

On this siteNo.

What it meansThe redirect was broken enough that Google gave up following it.

Common causeGoogle names four: a chain that ran too long, a loop, a URL that grew past the maximum length, and a bad or empty URL in the chain.

The fixCollapse chains to a single hop and fix the loop.

On this siteNo.

Read the deeper piece on this

What it meansYour server refused Google access.

Common causeGoogle's documentation is blunt about this one: Googlebot never provides credentials, so a 403 to Googlebot is almost always the server responding incorrectly.

The fixTreat it as a misconfiguration. Bot-management rules are the usual culprit.

On this siteNo, and this is the status most worth watching if you ever add a WAF rule.

Read the deeper piece on this

What it meansThe page asked Google to log in.

Common causeAn authentication requirement on a URL that should be public. Staging environments leak into this status constantly.

The fixRemove the auth requirement, or confirm the URL should not be public at all.

On this siteNo.

What it meansA client error Google could not sort into any of the other buckets.

Common causeAnything from a 410 to a 429 to a malformed request.

The fixInspect the URL directly, since this status deliberately does not tell you which error it was.

On this siteNo.

Terms defined here

  • Engineered exclusion. A URL a site deliberately publishes in a state that guarantees it will never be indexed, so its appearance in the Page Indexing report's not-indexed list is the system working as designed rather than a fault to clear.

Sources

  1. Google Search Console Help: Page indexing report
  2. Google Search Central: Block Search indexing with noindex