Short answer: Google received an X-Robots-Tag: noindex line in the HTTP response for that URL, so it will drop the page from search. The header is not in your page HTML, which is why viewing the source shows nothing. It is added by the server, a plugin, a CDN rule or a hosting setting, and you remove it at the layer that sets it, then ask Google to recheck the URL.
What does "noindex detected in X-Robots-Tag HTTP header" mean?
A noindex instruction can travel two ways: as a <meta name="robots"> tag inside the HTML, or as an HTTP response header. Google treats both the same. Its documentation says the header form works for any file type, including PDFs and images, and that the rule is applied when the page is crawled (see the robots meta tag documentation below). Search Console reports the header version as "Excluded by 'noindex' tag" in the page indexing report, and URL Inspection names the source as the HTTP header.
How do I confirm the header is really there?
Request only the headers. Browser dev tools work, but a command is faster and shows exactly what a crawler gets:
curl -sI https://client-site.example/some-page/ | grep -i x-robots-tag
If the header is set, you will see a line like x-robots-tag: noindex, nofollow. No output means that URL does not send it. Check a second URL too, such as the homepage and one post, because header rules often apply to a path, a file type or a staging hostname only. You can also run the page through our noindex checker, which reports the header and the meta tag separately.
Where is the header coming from on a WordPress client site?
Work through these in order, cheapest first:
- Settings, Reading. If "Discourage search engines from indexing this site" is ticked, WordPress core adds a robots directive. Untick it and save.
- SEO plugin. Yoast, Rank Math and similar plugins have a per-site and per-post-type noindex switch. Some can also send the header. Check both the global setting and the single page.
- Custom code. Search the theme, the child theme and any code snippets plugin for
X-Robots-Tag. A developer may have added it with thewp_headersfilter orheader()while building on staging and never removed it. - Server config. Look in
.htaccessforHeader set X-Robots-Tag(Apache, mod_headers) and in the nginx config foradd_header X-Robots-Tag. Agencies often copy these from a staging vhost. - Cloudflare or another CDN. A Transform Rule that modifies response headers can add the header to every request, and nothing on the server will show it. Review Rules, Transform Rules, Modify Response Header.
- Host-level switch. Some managed hosts add the header to temporary domains and staging copies. If a site was cloned from staging, ask the host whether the flag came along.
Which layer usually causes it?
| Where you see it | Likely cause | Fix |
|---|---|---|
| Every URL on the site | Server config, CDN rule or host flag | Remove the header rule, purge the cache |
| One post type or folder | SEO plugin setting or path-based rule | Change the plugin setting or the rule scope |
| PDFs or images only | File-type rule, often intentional | Keep it if the client wants those files out of search |
| Header and meta tag both | Two layers both blocking | Remove both, one alone is not enough |
How do I get Google to reindex after the fix?
- Re-run the curl command and confirm the header is gone. Purge any page cache and CDN cache first, or you will keep seeing the old response.
- In Search Console, open URL Inspection for the homepage and a key page, run the live test, then request indexing.
- In the page indexing report, use "Validate fix" on the noindex issue so Google rechecks the affected group.
Do not block the URL in robots.txt while you wait. Google can only see that noindex was removed if it is allowed to crawl the page.
What do I tell the client?
Keep it short and factual: a setting on the server (name the layer) told search engines not to list the pages, it has been removed, and Google has been asked to recheck. Say that pages return gradually over days to a few weeks, not instantly, and give the date the header was removed. If it came from a staging copy, say how you will prevent a repeat, for example a launch checklist item that checks response headers.
How does quietwatch catch this daily?
Header-level noindex is easy to miss because nothing looks wrong on the page. What quietwatch checks every day includes response headers and meta tags on your clients' key URLs, and it alerts you the day a noindex appears. The free noindex checker above is the place to start.