URL Marked 'noindex' (GSC Status)

What the Google Search Console "URL marked 'noindex'" status means — and the "Submitted URL marked 'noindex'" variant and legacy "Excluded by 'noindex' tag" name. When it's intentional vs. a mistake, where the noindex lives (meta tag vs. X-Robots-Tag header), the robots.txt conflict, phantom/CDN noindex, and how to fix and validate.

First published: Jun 23, 2026 · Last updated: Jul 18, 2026 · Advanced
demand #18 in Indexing#53 in How Search Works#285 in Technical SEO#381 on the site
1 evidence signal on this page

"URL marked 'noindex'" is the Google Search Console Page Indexing status for a page Google crawled and found a noindex directive on (a meta robots tag or an X-Robots-Tag header), so it kept it out of the index. Same condition, multiple names: the current "URL marked 'noindex'", the sharper sitemap-submitted wording "Submitted URL marked 'noindex'" that reports and tools commonly use, and the legacy "Excluded by 'noindex' tag." It's usually intentional and fine — validate the URL list before you "fix" anything. The real red flag is a noindexed page still sitting in your sitemap — sitemap submission is a hint to Google, not a guarantee, and the two directives contradict each other. Because noindex is crawl-dependent, don't pair it with a robots.txt disallow — Google can't see a noindex it can't crawl. Check two places (the meta tag and the X-Robots-Tag header), debug phantom/CDN noindex with a live Googlebot fetch, then remove the directive, Validate Fix, and expect reprocessing to take longer than a day or two.

TL;DR — “URL marked ‘noindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed.’” is the GSCA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. Page IndexingThe Google Search Console report (formerly Index Coverage) showing how many of your URLs are indexed vs. not indexed, and grouping the not-indexed ones by reason. status for a page Google crawled and foundA 302 (\"Found\") is a temporary redirect: it forwards users to a new URL while telling search engines the original URL should stay in the index. It's a weak canonicalization signal, not the zero-equity dead end of SEO folklore. a noindex onmeta robotsThe robots meta tag is an HTML element in a page's head — <meta name=\"robots\" content=\"noindex\"> — that tells search engines how to index and serve that page. It's crawl-then-obey: a page blocked in robots.txt is never fetched, so the tag is never seen. tag or X-Robots-TagThe X-Robots-Tag is an HTTP response header that carries the same indexing and serving directives as the robots meta tag (noindex, nofollow, nosnippet, and the rest). Because it lives in the header rather than the HTML, it's how you control indexing for non-HTML files like PDFs, images, and videos. header, and Google also honors a robots meta tagThe robots meta tag is an HTML element in a page's head — <meta name=\"robots\" content=\"noindex\"> — that tells search engines how to index and serve that page. It's crawl-then-obey: a page blocked in robots.txt is never fetched, so the tag is never seen. placed in the page body, not just the <head>. Multiple names, one state: the current “URL marked ‘noindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed.’,” the sharper sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing.-submitted wording “Submitted URL marked ‘noindex’” that reports and tools commonly use, and the legacy “Excluded by ‘noindex’ tag.” It’s distinct from robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere.-blocked (never crawled) and from “Crawled — currently not indexed” (no directive). Usually intentional — validate the URL list first. A noindexed URL still sitting in your sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. is the real flag (sitemap submission is a hint, not a guarantee). noindex is crawl-dependent: pair it with a robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere. disallow and Google can’t see it, so the page can stay indexed. When rules conflict, Google applies the more restrictive one. Check two sources (the rendered HTML and the HTTP header), debug phantom/CDN noindex with a live GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer. fetch (URL Inspection / Rich Results Test), then remove the directive, Validate Fix, and expect reprocessing to take longer than a day or two — Google says it can run to months for lower-priority pages.

What the status actually means

The report describes Google’s observed directive, not why a CMSA content management system (CMS) is software that lets users create, manage, and publish digital content — like blog posts and pages — without writing raw code. WordPress, Drupal, and Joomla are the most common open-source CMS platforms., template, or CDN added it. Evidence for this claim Google reports URL marked noindex when it encounters a noindex directive and does not index the page. Scope: Google Search Console report terminology and documented Search behavior; the label alone may not prove the underlying root cause. Confidence: high · Verified: Google: Page indexing report Google must be able to crawl the page to observe and apply noindex. Evidence for this claim Google supports noindex through a robots meta tag or X-Robots-Tag header and must crawl the page to observe it. Scope: Google Search Console report terminology and documented Search behavior; the label alone may not prove the underlying root cause. Confidence: high · Verified: Google: Block indexing with noindex

Google’s own definition is precise: when Google tried to index the page, it encountered a noindex directive and therefore did not index it. The key word is encountered — Google had to crawl the page to see the directive. So this status carries two facts at once: Google reached the page, and the page told it not to be indexed.

That’s the whole accuracy spine here, and it’s what separates this status from its neighbors:

  • Robots.txt-blocked → Google was never allowed to crawl, so it didn’t read any content or any directive.
  • “Crawled — currently not indexed” → Google crawled, found no directive, and chose not to index anyway.
  • “URL marked ‘noindex’” → Google crawled, found a noindex, and obeyed it.

The three names are one condition

This trips people up because the label has changed over time and shifts based on how the URL was found:

  • “URL marked ‘noindex’” — the current, general label in the Page IndexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. report. Lives under “Not indexed” (formerly “Excluded”). This is the wording Google’s own current Page Indexing reportThe Google Search Console report (formerly Index Coverage) showing how many of your URLs are indexed vs. not indexed, and grouping the not-indexed ones by reason. documentation uses and defines.
  • “Submitted URL marked ‘noindex’” — the same underlying condition, but for a URL that’s also in a sitemap you submitted. This is the sharper wording practitioners and third-party SEO tools commonly report for that combination. Google’s current help documentation doesn’t spell it out as a separately defined status distinct from “URL marked ‘noindex,’” so treat the exact label as report-dependent — but the substance holds regardless of what a given tool calls it: a sitemap is meant to list the URLs you want in Search (and submitting one is a hint to Google, not a guarantee of indexing), so a noindexed URL sitting in it is a contradiction worth resolving.
  • “Excluded by ‘noindex’ tag” — the legacy name from the pre-2021 “Index Coverage” report. Still the most-searched colloquial version. Same underlying thing.

If you’ve landed here from any of those three, you’re in the same place.

Is it a problem? The intentional-vs-accidental decision

Don’t reflexively “fix” this. The decision tree:

  1. Pull the list of affected URLs (click into the status).
  2. Are these pages you meant to exclude? Thank-you pages, internal search, faceted/filter URLs, account/admin, staging that shouldn’t be live. → No action. “Not indexed” is not the same as “broken,” and Google says as much: these URLs have not been indexed, but not necessarily because of an error.
  3. Is a page you want indexed in this list? → A noindex leaked onto it. Find and remove it.
  4. Is the noindexed URL also sitting in your submitted sitemap (often surfaced as “Submitted URL marked ‘noindex’”)? → Resolve the contradiction directly: remove the noindex (to index it) or remove the URL from your sitemap (to leave it noindexed). Don’t leave a noindexed URL sitting in a sitemap — sitemap submission is a hint to Google about what you want indexed, not a request that overrides the page’s own directive.

The reason competitors treat this as a pure “error to fix” is that they skip step 2. Most of the time, this status is the system working correctly.

Where the noindex lives: meta tag vs. X-Robots-Tag header

There are exactly two delivery methods, and you have to check both because they look completely different:

  • Meta robots tag<meta name="robots" content="noindex"> in the page’s <head>. Targets all crawlersA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index.; <meta name="googlebot" content="noindex"> targets Google only. This is the one you can spot in the HTML.
  • X-Robots-TagThe X-Robots-Tag is an HTTP response header that carries the same indexing and serving directives as the robots meta tag (noindex, nofollow, nosnippet, and the rest). Because it lives in the header rather than the HTML, it's how you control indexing for non-HTML files like PDFs, images, and videos. HTTP headerX-Robots-Tag: noindex in the server’s response headers. This is the sneaky one. It’s set in server, CMS, or CDN config, not in the page source, so “View Source” won’t show it. The header method is also the only way to noindex non-HTML files — a response header can be used for non-HTML resources such as PDFs, video files, and image files, which have no <head> to hold a meta tag.

When GSC says noindex and you swear the page doesn’t have one, the header is the first place to look (the cheat sheet tab lays the two side by side).

How to find the directive on a page

  1. View Source / rendered DOM — search for noindex. Check the rendered <head>, not just raw source, since a tag can be injected by JavaScript or a tag manager. Don’t stop at <head>, either: Google has said it doesn’t enforce meta-robots placement and respects a robots meta tag found in the page’s <body> too, so a directive injected lower in the document still counts.
  2. Response headerscurl -I https://example.com/page/ (or browser DevTools → Network → the document request → Response Headers) and look for an X-Robots-Tag line.
  3. URL Inspection (GSC)Test live URL — this fetches the page as Googlebot and reports the indexing verdict and the response. This is the one that catches directives served only to Google.
  4. Rich ResultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. Test — another real Googlebot fetch that returns the HTTP response and a rendered snapshot of exactly what the server shows Google.
  5. Check for conflicting robots rules, not just a single tag. If more than one robots directive applies to the page (say, a template sets index but a plugin or header adds noindex), Google applies the more restrictive rule — so a stray noindex anywhere wins even if another rule says index. Don’t stop searching once you’ve found one directive that looks permissive.
TIP Check the live noindex signal

A focused result can expose the directive without pretending to know Google's final index selection.

Run the public URL and inspect its live robots and indexability signals with my free Google Index Checker Free

  1. Test the deployed URL, not a local template or CMS preview.
  2. Check both meta robots and X-Robots-Tag evidence.
  3. Remove noindex only when the URL should be eligible, then rerun the same check.
The observable directive is the fix target; indexing still depends on Google recrawling and processing the change.

The robots.txt conflict (why disallow + noindex backfires)

This is the single most-muddled point in every other guide, so I want it exact. noindex is crawl-dependent: Google has to be able to fetch the page to read the directive. Google states the rule plainly — for the noindex rule to be effective, the page must not be blocked by a robots.txt file and has to be otherwise accessible to the crawler; if it’s blocked or the crawler can’t access it, the crawler will never see the noindex, and the page can still appear in search (for example, if other pages link to it).

I’ve written about the flip side of this for years. In my Ahrefs piece on “Indexed, though blocked by robots.txt”, the core point is that “crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor. and indexing are two different things” — “if you block a page from being crawled, Google may still index it.” And specifically on this conflict: “Unless Google can crawl a page, they won’t see the noindex meta tag and may still index it because it has links.” So the self-defeating combo is noindex + robots.txt disallow: the disallow hides the noindex, and the page can stay indexed via external links.

The correct sequence to actually remove a page:

  1. Allow crawling and keep the noindex in place.
  2. Wait for Google to recrawl, see the directive, and drop the page.
  3. Only then, if you want to save crawl budgetThe number of URLs an engine will crawl in a timeframe., you can disallow it in robots.txt — after deindexingDeindexing means getting a URL to stop appearing in Google's search results. There's no single delete button — the right method depends on whether you own the page, whether removal is temporary or permanent, and whether the content should still exist., not before.

My standing recommendation, from that same article: “Just add a noindex meta robots tag and make sure to allow crawling — assuming it’s canonical.”

Phantom noindex: CDN cache and Googlebot-only directives

The hardest version of this is the “phantom” noindex: you look at the page, see no noindex anywhere, and GSC still reports one. John Mueller has addressed exactly this — in the cases he’s seen, there was an actual noindex, sometimes shown only to Google, which can be very hard to debug. (He noted that scenario when this came up; I’m paraphrasing his point rather than quoting it as a formal statement.)

The usual suspects — treat these as hypotheses to check, not confirmed causes, until the live response actually shows one of them:

  • A CDN or cache serving a stale X-Robots-Tag: noindex header that’s no longer in your origin config.
  • A directive conditional on user-agent — the server returns a clean page to your browser and a noindexed one to Googlebot.
  • A staging/template leak — a noindex meant for a staging environment shipping to production through a shared template.

The diagnosis is the same in all three: don’t trust “View Source” in your own browser. Do a real Googlebot fetch — URL Inspection’s Test live URL or the Rich Results Test — which shows you the HTTP response and rendered page exactly as Google receives it. That’s how you catch a server/CDN serving one thing to you and another to the crawler.

How to fix it and validate

Once you’ve confirmed the noindex is a mistake:

  1. Remove the directive at its real source — the meta tag in the template, or the X-Robots-Tag header in server/CMS/CDN config. Clear any CDN/page cache so the fix is actually being served.
  2. Confirm with a live Googlebot fetch (URL Inspection → Test live URL) that the page now returns no noindex and shows “URL is available to Google.”
  3. Request Indexing for high-priority URLs, and/or use the report’s Validate Fix button to tell Google to recheck the whole affected set.
  4. Wait. Deindexing and reindexing aren’t instant — Google has to recrawl to see the change first, and Google’s own guidance is that revisit timing depends on the page’s importance and can take considerably longer than a day or two (its documentation gives “months” as a possibility for lower-priority pages). Request Indexing on a priority URL is how you ask Google to try sooner, not a way to force a specific timeline. Don’t panic if the status lingers while reprocessing.

For the inverse — a page you want noindexed but that’s stuck in the index because it was also robots.txt-blocked — unblock crawling first so Google can finally see the noindex.

Where this sits

This status is one node in Google’s Page Indexing report. The robots directive behind it — noindex — can be delivered as a meta robots tag or an X-Robots-Tag header, and the right tool depends on whether you’re working with HTML or non-HTML files. The neighboring statuses (“Indexed, though blocked by robots.txt” and “Crawled — currently not indexed”) describe different states and need different fixes; keeping them straight is most of the battle.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.