The 3-Word Tag That Hides Your Best Pages from AI
· 10 min read · Updated
Українською: Три слова в head, які ховають ваші сторінки від AI — читати українською
Three words. Three meanings. And your single best article vanishes from ChatGPT, Claude, and Perplexity — even if Google still shows it.
I'm talking about <meta name="robots">. The tag in <head> you may never have looked at. The tag your CMS added without asking. The one that's quietly killing your AEO (Answer Engine Optimization) right now.
What is the robots meta tag?
<meta name="robots" content="..."> is a directive for crawlers. It tells the machine what to do with this page, what not to do, and whether it's worth following the links on it.
The values come in pairs or alone:
index/noindex— index it, or don't.follow/nofollow— follow internal and external links, or don't.none— shorthand fornoindex, nofollow.noarchive— don't keep a cached copy.nosnippet— don't show a text fragment in search results.
Default (no tag) = index, follow. That is exactly what you want on 99% of your public pages.
How do AI agents read the robots tag?
GPTBot. ClaudeBot. PerplexityBot. All three publish user-agent tokens and say they honor robots.txt. What none of them publishes is a rule for the robots meta tag. OpenAI's crawler documentation covers robots.txt and says nothing about noindex at all, and I have not found a statement from OpenAI, Anthropic, or Perplexity that a noindex in your <head> keeps a page out of a training set. The version of this claim you see repeated everywhere — "noindex means don't train on me" — has no vendor behind it. Treat it as folklore.
Two vendors are the exception, and they are not the two you would guess: Apple documents that Applebot honours noindex and nosnippet, and Amazon documents the same for Amazonbot. Both are in the AI crawler list for 2026, which sets out per bot what each vendor actually commits to.
The narrower claim survives, and it is the one that costs you traffic anyway. noindex is a search-index directive, and an assistant that has to retrieve your page before it can quote it goes through a search index to find it. Block the index and you lose the citation — not because anyone honored a training opt-out, but because nothing retrieved you in the first place.
nofollow appears to be treated more loosely, closer to a quality hint than a hard ban. That one is my own reading of observed behavior, not a documented rule.
The conclusion is unchanged and still brutal: an accidental noindex on your best-of-2024 post is a concrete wall in front of the AI traffic you actually want.
How is this different from robots.txt?
robots.txtis the global rubber band. It covers the whole site or whole directories (wildcard patterns).<meta name="robots">is a fine-grained instrument. It works strictly at the level of an individual HTML document.
This is exactly where the most dangerous trap hides: your site can be perfectly indexable, robots.txt clean and correctly configured, the sitemap including the right URLs — and one specific article still closed off by a tag that survived from a legacy template or CMS default. The cruelest version: it can be your highest-converting post, and you don't notice anything until the AI-source traffic starts drying up.
How does noindex reach production by accident?
-
Staging promoted to production without cleanup. Engineer set
noindexon the staging domain to avoid duplicate indexing or leaking preview content into Google. Deploy ran — the tag rode along to prod, because nobody added a "strip robots-meta on production build" step in the CI/CD pipeline. -
CMS template inherited
noindexfrom preview mode. Hugo, Next.js, WordPress, Webflow — framework doesn't matter. If the template has<meta name="robots" content="noindex">under a condition likeif env === 'preview'and the condition broke or the env variable didn't propagate during the build — you shipnoindexto prod. Silent. No errors in the compiler console. -
"Coming soon" page didn't update after release. A landing was published with
noindexa week before launch so nothing would index a hollow skeleton. Launch happened. Nobody removed the tag. Months later, you're wondering why your product page isn't showing up in ChatGPT's answers.
All three happen far more often than you'd think. All three slip through code review, because this tag visually blends into the rest of the "standard HTML boilerplate."
How do you audit this in 30 seconds?
Fastest path: open the page → View Page Source (Ctrl+U) → Ctrl+F for "robots". If you find noindex, you have a problem.
A more engineering-forward check is one DevTools Console snippet you can run on any page:
const robotsMeta = document.querySelector('meta[name="robots"]');
if (robotsMeta) {
console.warn(`Found robots meta with content "${robotsMeta.content}"`);
if (robotsMeta.content.includes('noindex')) {
console.error('CRITICAL: This page is hidden from AI crawlers.');
}
} else {
console.log('No robots meta. Default behavior: index, follow. ✓');
}For mass audits across the whole site, use Screaming Frog, Sitebulb, or write a small Playwright/Puppeteer script that walks your sitemap and dumps every <meta> tag in one pass.
How do you fix it in Next.js?
Delete the tag entirely. Default behavior is index, follow. That is what you want.
Don't add <meta name="robots" content="index, follow"> explicitly. It's visual noise. The crawler does this by default — you're just rendering extra bytes for no reason.
Here's the correct shape in Next.js (App Router):
import type { Metadata } from 'next';
export const metadata: Metadata = {
title: 'How meta robots actually works',
description: 'A full breakdown of meta robots and AI crawling.',
// DO NOT WRITE robots: { index: true, follow: true }
// Next.js does not emit this tag by default — that is the desired behavior.
// Use the robots object only for explicit denial:
// robots: { index: false, follow: false }
};
export default function BlogPostPage() {
return (
<article className="max-w-3xl mx-auto py-10 px-4">
<h1 className="text-4xl font-bold">How meta robots actually works</h1>
<p className="mt-4">Article body…</p>
</article>
);
}A clean audit treats no tag as a pass. An explicit index, follow is also a pass, but technically redundant.
When does noindex actually belong?
noindex makes sense on:
archiveandtagpages that generate duplicate content.- Pagination pages like
/blog/page/2/— especially whenrel="canonical"points back to the first page. - Thin-content pages: local search results, filtered listings, sort-parameter URLs.
- Internal-only pages (
/admin,/healthz,/test).
On canonical blog posts, product landing pages, the homepage — never. If your strategy reduces to "I want to be cited in Claude and ChatGPT," every noindex on a content page is a voluntary surrender of traffic. The opposite move — handing AI crawlers an explicit invitation — takes about fifteen minutes via llms.txt.
What about the X-Robots-Tag header?
The exact same effect can be achieved at the server level via an HTTP response header:
HTTP/2 200 OK
Content-Type: text/html; charset=utf-8
X-Robots-Tag: noindexIt works identically to the meta tag, but is significantly harder to detect — it's not in the HTML at all. View Source shows nothing. You have to look at the Network tab in DevTools or check the server response from a terminal:
curl -I https://example.com/page/If your HTML is clean and your audit shows green but the page still doesn't appear in AI answers — check the response headers. Server-level X-Robots-Tag is a category of bug that's almost impossible to spot from the front-end side.
Directive reference
The same word does different work depending on who is reading it.
The Google column is documented behavior, taken from Google's own robots meta reference. The AI crawlers column is not. No vendor publishes how its assistant handles the robots meta tag, so every cell in it is observed or inferred — what I see happen, not what anyone has promised. Build on the Google column; treat the other one as a working model that could be wrong.
| Directive | Google (documented) | AI crawlers (observed / undocumented) | Where it can hide |
|---|---|---|---|
noindex |
Drops the URL from the index | Page stops being retrievable, so it stops being cited | <head>, X-Robots-Tag |
nofollow |
Does not follow links from the page | Appears to act as a weak quality hint | <head>, X-Robots-Tag |
none |
noindex, nofollow |
Both of the above | Either |
noarchive |
No cached copy | Appears to be ignored | Either |
nosnippet |
No text fragment in results | Appears to suppress direct quoting | Either |
| absent | index, follow |
Free to read and cite | — |
The bottom row is the one to aim for. An explicit <meta name="robots" content="index, follow"> is not a stronger yes than saying nothing; it is dead
weight that some audits flag as a redundant directive.
FAQ
Does noindex block AI crawlers or only search engines?
It blocks the search index directly, and the AI citation as a consequence.
Apple and Amazon are the only two vendors that document honouring noindex for
their crawlers (Applebot and Amazonbot). OpenAI, Anthropic and Perplexity
document robots.txt and say nothing about the robots meta tag, so "noindex
means do not train on me" is folklore, not a vendor commitment. What still costs
you the citation is narrower and certain: an assistant has to retrieve a page
before it can quote it, and retrieval runs through a search index. Block the
index and nothing finds you.
What is the difference between noindex and robots.txt Disallow?
Disallow stops the fetch; noindex stops the use. They are not
interchangeable, and combining them backfires: a crawler blocked by robots.txt
never fetches the page, so it never sees the noindex you put there. If you
want a page excluded, let it be crawled and let the tag do the work.
Why does my CMS add noindex without asking?
Because staging defaults leak. The three routes are a staging environment promoted to production with its "discourage search engines" flag still on, an SEO plugin applying a rule to a whole post type, and a framework default in a shared layout that a new route inherits. All three are invisible in the editor.
Can noindex be set without appearing in the HTML?
Yes — via the X-Robots-Tag response header, which is the version that is
genuinely hard to find. View Source shows nothing, the CMS shows nothing, and
only the response headers give it away. Check with curl -I before concluding
the HTML is clean.
How do I check a page quickly?
curl -sI https://example.com/page | grep -i x-robots-tag for the header, and a
search for name="robots" in the served HTML for the tag. The
AEO Checker extension checks both at once on
whatever tab you are looking at.
Sources
- Google Search Central: robots meta tag and X-Robots-Tag — the full directive list and header syntax
- RFC 9309: Robots Exclusion Protocol — the standardised robots.txt semantics, and why it is a fetch-time control
- OpenAI: bots and crawlers — GPTBot, OAI-SearchBot and ChatGPT-User, and what each honours
- Anthropic: does Anthropic crawl the web? — ClaudeBot's documented behaviour
Part of the Answer Engine Optimization cluster — the full reading order in dependency sequence, plus a glossary of every term used across these articles.
The summary
Three words in <head> can cost you all your AI traffic. One invisible header can do the same with no trace in the HTML.
The audit takes 30 seconds. The fix is one comma and two lines of code. The risk is your highest-leverage content silently invisible to the entire generation of AI search forming right now.
Follow me on LinkedIn for more on AEO and AI-search architecture. For an audit of your site's AI readiness, get in touch.