Noindexed page in sitemap: why it is a contradiction
A sitemap says crawl this, noindex says do not index it. squirrel cross-references every crawled page's robots meta against your sitemap URLs.
What a noindex in a sitemap means
A sitemap is a list of URLs you are asking search engines to crawl and consider for indexing. A noindex robots directive on a page tells them to drop it from the index once they have crawled it. Listing a noindexed URL in the sitemap asks for both at once.
Nothing breaks, and the noindex wins. What it costs is crawl budget and clarity: the crawler spends a fetch on a page it will then discard, and in Search Console the URL is reported as excluded by noindex while your sitemap keeps submitting it. The usual cause is a sitemap generator that enumerates routes without reading the robots directives the pages render.
What squirrel checks
The rule is site-wide. It collects every <loc> from every discovered sitemap, then walks the crawled pages looking for a noindex token in the robots meta tag, matched against the sitemap URLs as-is.
- Skipped when no sitemap was discovered or no page data is available. Message:
Sitemap or page data not available. - Warn when at least one noindexed page appears in a sitemap. Message:
3 noindexed page(s) found in sitemap, with each URL listed. Severity warning, weight 5. - Pass otherwise. Message:
No noindexed pages in sitemap.
The robots meta value is lowercased and split on commas before the noindex token is looked for, so noindex, follow matches. Only the meta tag is read here: an X-Robots-Tag response header carrying noindex is not part of this comparison, and crawl/all-noindex-pages covers that case.
How to fix it
<!-- drop the noindexed URL from sitemap.xml -->
<url>
<loc>https://example.com/thank-you</loc>
</url>Fix it in the generator rather than the file. Most frameworks expose the same route metadata the page uses to render its robots tag, so the sitemap builder can filter on it. If the page should be indexed, remove the noindex instead.
A staging noindex left in a production template produces this finding across the whole site. Check one page’s rendered head before editing the sitemap.
| Rule ID | crawl/noindex-in-sitemap |
| Category | Crawlability |
| Scope | Site-wide |
| Severity | warning |
| Weight | 5/10 |
Enable / disable
Disable this rule
[rules]
disable = ["crawl/noindex-in-sitemap"]Disable all Crawlability rules
[rules]
disable = ["crawl/*"]Enable only this rule
[rules]
enable = ["crawl/noindex-in-sitemap"]enable replaces the default ["*"], so this is the only rule selected. Leave disable out: a rule that matches any disable pattern is skipped even when enable names it. Only an enabled setting under a rule’s own [rule_options] table overrides both lists.
Related rules
- crawl/indexability: whether an individual page is indexable at all, and why not.
- crawl/all-noindex-pages: the full list of blocked pages, including header-based noindex.
- crawl/sitemap-coverage: the opposite gap, indexable pages missing from the sitemap.
- crawl/robots-meta-conflict: noindex on a page robots.txt already blocks, so nobody reads it.
Crawlability findings ship in every audit next to the SEO, performance and agent experience rules. See The Screaming Frog alternative for agents for how an agent works through a report.
References
- Block search indexing with noindex, Google Search Central
- Build and submit a sitemap, Google Search Central
Check your site
Run squirrel audit https://example.com and open the Crawlability section of the report. Every noindexed sitemap URL is listed with its address. Signed-out local audits need no account and cost nothing. Signed-in audits spend credits.