Meta Robots Tag
The robots meta tag controls how a page is indexed and served — every directive, the crawl-then-obey rule, conflict resolution, and meta tag vs X-Robots-Tag.
1 evidence signal on this page
- Related live toolHTTP Header Checker
The robots meta tag — <meta name="robots" content="noindex"> in the <head> — tells search engines how to index and serve a single page. The rule that breaks everything: it's crawl-then-obey, so a page blocked in robots.txt is never fetched and its noindex is never seen. With no tag, the default is index, follow. Conflicting rules resolve to the most restrictive; for a googlebot-named tag against the generic robots tag, Googlebot takes the sum of the negative rules. The tag is HTML-only — use the X-Robots-Tag header for PDFs, images, and other non-HTML.
TL;DR — The robots meta tag is a line of HTML you put in a page’s
<head>to tell search engines how to handle that one page — most often<meta name="robots" content="noindex">to keep it out of search. The catch that trips everyone up: Google has to be able to crawl the page to read the tag. If you also block the page inrobots.txt, Google never sees the tag, and the page can stay in search. With no tag at all, the default is “index it and follow the links.”
What the robots meta tag is
The robots meta tag is a small HTML element that sits in the <head> of a page:
<meta name="robots" content="noindex">It tells search engines how to treat this specific page — whether to show it
in results, whether to follow the links on it, whether to show a snippet, and so
on. The name="robots" part means “all search engines that read this tag.” You
can swap in a crawler’s name, like name="googlebot", to talk to just one engine.
If there’s no robots meta tag on a page, the default is index, follow — show
it in search and follow its links. So you only need the tag when you want to
change that default. Evidence for this claim For Google, the default robots meta behavior is index, follow when no restrictive rule is present. Scope: Google-supported robots meta rules; other crawlers publish their own support and defaults. Confidence: high · Verified: Google Search Central: Robots meta tag specifications
The one thing to get right: don’t block the page you’re trying to noindex
This is the mistake I see most often. People want a page out of Google, so they do both things at once:
- Add
noindexto the page, and - Block the page in
robots.txt.
That second step defeats the first. Blocking a URL in robots.txt tells Google
“don’t even fetch this page.” So Google never downloads it, never reads the
noindex, and the page can stay in the index. The fix is to leave the page
crawlable and let Google read the noindex. Evidence for this claim Google can read and follow page-level robots rules only when it is allowed to access the page. Scope: Google-supported robots meta and X-Robots-Tag rules; robots.txt blocking can prevent rule discovery. Confidence: high · Verified: Google Search Central: Robots meta tag specifications
Think of it as two different jobs:
robots.txtcontrols crawling — whether bots fetch the page at all.- The robots meta tag controls indexing and serving — what happens once the page is fetched.
They’re not interchangeable, and you don’t want both on the same URL when your goal is to remove it from search.
The same page contains a meta robots noindex directive. In the first path, crawling is allowed, so the crawler fetches the page, reads noindex, and can remove the URL from results after processing. In the second path, robots.txt blocks crawling, so the crawler cannot fetch the page or see noindex, and the URL may remain in results. Crawl control and index control are separate jobs.
© Patrick Stox LLC · CC BY 4.0 ·
The common directives
A few you’ll actually use:
noindex— keep this page out of search results.nofollow— don’t follow the links on this page. (Different from puttingrel="nofollow"on a single link — this one applies to every link on the page.)none— shorthand fornoindex, nofollow.nosnippet— don’t show a text snippet for this page in results.
You can combine them with a comma: <meta name="robots" content="noindex, nofollow">.
A few honest gotchas
noindexdoesn’t make a page private. The page is still public and crawlable — it just won’t show in search. For real privacy, use a login.noindexdoesn’t save crawl budget. Google still has to fetch the page to see the tag.- For a PDF or an image, you can’t add a
<meta>tag — there’s no HTML<head>. That’s what the X-Robots-Tag HTTP header is for (more on that in the Advanced version). - There’s no fixed timeline for a
noindexed page to drop out of Google. Google says it can take months for a lower-priority page to get recrawled and processed — don’t promise a client “2-4 weeks.”
Want the full directive list, how Google resolves conflicting rules, the
googlebot-vs-robots edge case, and the X-Robots-Tag header in detail? Switch
to the Advanced tab.
Test yourself: robots meta directives
Choose the control by outcome
Which robots control should I use?
Robots controls that fail their intended job
- Combining
noindexwith a robots.txt block. The block prevents the crawler from seeing the removal directive. - Using
disallowas a deindexing guarantee. It stops fetching, but a linked URL can still be indexed without page content. - Assuming a body-placed robots meta tag is silently ignored. Google says it
will respect a robots meta tag in the body, so a template that injects it there
still works for Google — but stick to
<head>placement anyway, since it’s the only placement other crawlers and validators are guaranteed to expect. - Using a crawler-name token Google doesn’t read (e.g.
name="bingbot") and assuming it also scopes the rule for Google. Google recognizes onlygooglebotandgooglebot-news; any other name value is ignored by Google entirely. - Using an HTML meta tag for a PDF. Serve
X-Robots-Tagin the HTTP response for non-HTML files. - Treating
nofollowasnoindex. Link handling does not remove the current page from results. - Publishing generic and crawler-specific tags without resolving the sum. Audit
every
robots,googlebot, and header directive together; the restrictive rule can survive in a second location. - Using robots rules for secrecy. Anyone can request a public URL or read
robots.txt; confidential content needs authentication.
Deploy a noindex safely
- Confirmed removal from search—not crawl reduction, canonical consolidation, or access control—is the intended outcome.
- Used
<meta name="robots" content="noindex">for HTML or anX-Robots-Tag: noindexresponse header for a non-HTML resource. - Kept the URL crawlable and accessible to the target crawler.
- Removed contradictory template, CMS, CDN, and crawler-specific directives.
- Checked the rendered head and live response, not only the source template.
- Tested both the canonical URL and meaningful variants or redirects.
- Recorded the affected URL set and deployment time for later comparison.
- Verified the rule in URL Inspection and monitored the Page Indexing report after recrawl.
- Used authentication instead if the content must be private.
Inspect meta, headers, and crawl access
Replace the URL in this shell audit:
url="https://example.com/page/"
curl -sSI "$url" | grep -iE '^(HTTP/|x-robots-tag:|location:)'
curl -sS "$url" | grep -oiE '<meta[^>]+name=["'"'](robots|googlebot)["'"'][^>]*>'
curl -sS "https://example.com/robots.txt"In DevTools Console, inventory every parsed robots tag rather than stopping at the first match:
console.table([...document.querySelectorAll('meta[name]')]
.filter((meta) => /^(robots|googlebot|bingbot)$/i.test(meta.name))
.map((meta) => ({ crawler: meta.name, content: meta.content })));Headers are not visible in the DOM, so compare the console result with the actual response. Also follow redirects: a directive on an intermediate response does not prove the destination serves the same rule.
Patrick's relevant free tools
- Google Index Checker — Check one URL’s observable indexability blockers, or reconcile sitemap, crawl, and supplied Search Console evidence across a URL set before verifying Google’s actual state in URL Inspection.
- Google SERP Simulator — Interactive Google result preview: type a title, description, and URL, compare controlled-font desktop + mobile truncation guidance with simulated query bolding, copy the finished tags, and share a filled-in preview.
- Meta Description Generator — Generate five meta-description options with AI, then compare their measured widths with approximate desktop and mobile SERP-preview guidance. Variants are scored for the keyword, a call to action, and length; you also get a matching title tag and a copy-ready tag block. Quick, paste-content, fetch-URL, and small bulk (≤10) modes. Falls back to editable templates when AI is off.
Test each layer separately
- HTTP Header Checker — inspect status, redirects,
and every live
X-Robots-Tagheader, including for PDFs. - Robots.txt Tester — check whether the target crawler is allowed to fetch the URL and therefore able to discover a robots directive.
Use both when diagnosing a stubborn indexed URL. A correct noindex response is not actionable if robots.txt prevents the fetch, and an allowed crawl does not prove the page actually serves noindex.
Prove the directive works after deployment
Test 1 — Live delivery
- Hypothesis: Every intended URL serves one effective
noindexrule. - Method: Sample the URL set, follow redirects, and inspect rendered meta plus response headers.
- Pass condition: The final response is crawlable and exposes
noindexto the intended crawler with no conflicting delivery path. - Fail condition: A redirect, CDN header, or crawler-specific tag changes it.
- Next action: Fix the responsible layer and repeat the same sample.
Test 2 — Search-engine processing
- Hypothesis: Google can crawl the page and has processed the removal rule.
- Method: Run URL Inspection’s live test, then monitor the Page Indexing report after recrawl.
- Pass condition: The live test detects noindex and the URL becomes not indexed for that reason.
- Fail condition: The URL is blocked, the directive is absent, or the old index state persists without a new crawl.
- Next action: Restore crawl access or request recrawl; do not add a disallow.
Measure intent, not a universal benchmark
Intended-noindex coverage
URLs serving the intended noindex ÷ URLs in the approved noindex set
Build the denominator from your own removal inventory, then compare crawls before and after deployment. The target is complete coverage of that approved set—not an industry percentage.
Unintended index-control conflicts
Track counts of intended-noindex URLs that are still indexed, robots.txt-blocked, or serving contradictory meta/header rules. Segment by template, CDN rule, and file type so one implementation fault does not hide inside a sitewide total.
Use Google Search Console’s Page Indexing report and URL Inspection as processing evidence, while recognizing that deindexing depends on recrawl. Preserve the pre-change count and deployment date; otherwise a falling total has no reliable baseline.
Evidence for this claim Google can read and follow page-level robots rules only when it is allowed to access the page. Scope: Google-supported robots meta and X-Robots-Tag rules; robots.txt blocking can prevent rule discovery. Confidence: high · Verified: Google Search Central: Robots meta tag specificationsTL;DR —
<meta name="robots" content="…">in the<head>controls how a single page is indexed and served; with no tag the default isindex, follow. It’s crawl-then-obey: “these settings can be read and followed only if crawlers are allowed to access the pages” — so arobots.txt-blocked URL is never fetched and itsnoindexis never seen (I have first-party data on the flip side of this). Conflicting rules resolve to the most restrictive; across agooglebottag and the genericrobotstag, Googlebot takes the sum of the negative rules. The tag is HTML-only — use the X-Robots-Tag header for non-HTML and at scale. Google reads only two crawler-named tokens —googlebotandgooglebot-news— and ignores every other value, including other engines’ tokens likebingbot.
What it is, where it goes, and the default
The robots meta tag lets you, in Google’s words, “use a granular, page-specific
approach to controlling how an individual HTML page should be indexed and served
to users in Google Search results.” The conventional, portable place for it is
the <head>:
<meta name="robots" content="noindex, nofollow">Head placement is the authoring convention every engine expects, but Google is
explicit that it isn’t a hard requirement for Google Search specifically: “Google
Search doesn’t enforce placement of meta robots in the HTML head and will respect
robots meta tags in the body section of an HTML document as well.” Treat that as
tolerance for Google, not portable advice — still author it in the <head> so
every crawler and validator that expects standard placement reads it correctly.
The name attribute is the audience, and this is where most guides overstate
Google’s support. name="robots" addresses every crawler that reads the tag.
Beyond that, Google supports exactly two crawler-named tokens, and ignores every
other value: “Google supports two user agent tokens in the robots meta tag;
other values are ignored: googlebot for all text results, and googlebot-news
for news results.” A tag named name="bingbot" isn’t a documented Google
control — Bing reads its own token on its own terms, but Google skips any name
value it doesn’t recognize. Both the name and content attributes are
case-insensitive to Google, and so are X-Robots-Tag header names and values.
When no robots meta tag is present, the default is
index, follow (the all rule, which Google notes “has no effect if explicitly
listed”). Evidence for this claim For Google, the default robots meta behavior is index, follow when no restrictive rule is present. Scope: Google-supported robots meta rules; other crawlers publish their own support and defaults. Confidence: high · Verified: Google Search Central: Robots meta tag specifications You only need the tag to change that default.
You combine rules two ways: comma-separated in one tag (noindex, nofollow) or as
multiple <meta> tags. Google: you can “create a multi-rule instruction by
combining robots meta tag rules with commas or by using multiple meta tags.”
The rule that breaks everything: Google must crawl the page to see the tag
This is the whole article. The robots meta tag is crawl-then-obey. Google has to fetch the page to read the tag — so anything that stops the fetch stops the tag from ever being applied. Straight from the spec:
Evidence for this claim Google can read and follow page-level robots rules only when it is allowed to access the page. Scope: Google-supported robots meta and X-Robots-Tag rules; robots.txt blocking can prevent rule discovery. Confidence: high · Verified: Google Search Central: Robots meta tag specifications“Keep in mind that these settings can be read and followed only if crawlers are allowed to access the pages that include these settings.”
And the consequence, spelled out:
“If a page is disallowed from crawling through the robots.txt file, then any information about indexing or serving rules will not be found and will therefore be ignored.”
So the classic mistake — Disallow in robots.txt plus noindex on the
same URL — silently defeats the noindex. Google never crawls the page, never
sees the tag, and the URL can linger in the index (often as a bare, snippet-less
result if something links to it). Google’s companion “Block Search Indexing”
doc says the same thing in plainer language: for the noindex rule to work, the
page “must not be blocked by a robots.txt file… If the page is blocked by a
robots.txt file or the crawler can’t access the page, the crawler will never see
the noindex rule, and the page can still appear in search results.”
I’ve watched the flip side of this mechanism happen with real data. In my
experiment The Story of Blocking 2 High-Ranking Pages With Robots.txt,
I deliberately blocked two of our ranking pages in robots.txt. Because Google
could no longer crawl them, it couldn’t refresh anything about them — and the
pages mostly kept ranking: “We lost a position here or there and all of the
featured snippets for the pages.” My takeaway: “Accidentally blocking pages
(that Google already ranks) from being crawled using robots.txt probably isn’t
going to have much impact on your rankings, and they will likely still show in the
search results.” That’s the same coin as the noindex problem — a blocked URL is
frozen. Block ≠ remove. If you actually want a page gone, you need a
crawlable noindex, which is the entire point of this tag.
This is the line I’ve drawn publicly on where each tool belongs. Asked whether
Google should add noindex support to robots.txt, I said: “Google was clear
they want robots.txt for crawl control only.” Crawling is robots.txt’s job;
indexing is the meta tag’s (or the header’s). They don’t overlap, and the
noindex directive in robots.txt was never officially supported — Google dropped
parsing of it on September 1, 2019.
Every robots meta directive (the reference)
Google’s supported values, with the verbatim descriptions from the spec:
Indexing
all— “There are no restrictions for indexing or serving. This rule is the default value and has no effect if explicitly listed.”noindex— “Do not show this page, media, or resource in search results.”none— “Equivalent tonoindex, nofollow.”indexifembedded— “Google is allowed to index the content of a page if it’s embedded in another page through iframes or similar HTML tags, in spite of anoindexrule.” (The one directive that overrides anoindex, for embedded content.)
Links
nofollow— “Do not follow the links on this page.” This is page-level — different scope from a per-linkrel="nofollow", which applies to one link.
Serving and snippets
nosnippet— “Do not show a text snippet or video preview in the search results for this page.” This scope is broader than the classic text snippet: Google says it “applies to all forms of search results (at Google: web search, Google Images, Discover, AI Overviews, AI Mode) and will also prevent the content from being used as a direct input for AI Overviews and AI Mode.”max-snippet:[number]— “Use a maximum of [number] characters as a textual snippet for this search result.” Same broadened scope asnosnippet: it “applies to all forms of search results (such as Google web search, Google Images, Discover, Assistant, AI Overviews, AI Mode) and will also limit how much of the content may be used as a direct input for AI Overviews and AI Mode.” That’s a direct-input eligibility control for Google’s own AI search features — it is not a general AI-training opt-out. Keeping your content out of model training (e.g. Google-Extended) or out of Search’s separate generative-AI property-level control in Search Console are different systems with different scopes; don’t treatnosnippet/max-snippetas covering either.max-image-preview:[setting]— “Set the maximum size of an image preview for this page in search results.” Settings:none,standard, orlarge(“A larger image preview, up to the width of the viewport, may be shown.”).max-video-preview:[number]— “Use a maximum of [number] seconds as a video snippet for videos on this page in search results.”notranslate— “Don’t offer translation of this page in search results.”noimageindex— “Do not index images on this page.”unavailable_after:[date/time]— “Do not show this page in search results after the specified date/time.”
Historical — no longer active Google controls
A few directives that still circulate in older guides are ones Google says it no longer uses. Don’t add these expecting them to do anything:
noarchive— “Thenoarchiverule is no longer used by Google Search to control whether a cached link is shown in search results, as the cached link feature no longer exists.”nocache(a synonym some engines used fornoarchive) — “Thenocacherule isn’t used by Google Search.”nositelinkssearchbox— “Thenositelinkssearchboxrule is no longer used by Google Search to control whether the sitelink search box is shown for a given page, as the feature no longer exists.”
Paragraph-level (not in the meta tag)
There’s one sub-page control: the data-nosnippet attribute. Google: you can
“designate textual parts of an HTML page not to be used as a snippet… on
span, div, and section elements.” Everything in the meta tag is page-wide;
nosnippet / data-nosnippet is how you keep one passage out of the snippet
without touching the rest.
Combining directives and resolving conflicts
Two rules govern what happens when directives collide.
1. The more restrictive rule wins. “In the case of conflicting robots rules,
the more restrictive rule applies. For example, if a page has both max-snippet:50
and nosnippet rules, the nosnippet rule will apply.” nosnippet is stricter
than a 50-character cap, so nosnippet is what you get.
2. googlebot vs robots — the sum of the negative rules. This is the one
most guides get wrong. A googlebot-named tag does not simply replace the
generic robots tag — for the overlap, Googlebot takes the union of the
restrictions. Google: “For situations where multiple crawlers are specified
along with different rules, the search engine will use the sum of the negative
rules.” Their worked example:
<meta name="robots" content="nofollow">
<meta name="googlebot" content="noindex">“The page containing these meta tags will be interpreted as having a noindex, nofollow rule when crawled by Googlebot.” The nofollow from robots plus
the noindex from googlebot add up to noindex, nofollow for Googlebot. (Where
a googlebot tag and a robots tag set the same directive differently, the
crawler-named one is the one that applies to that crawler.)
Meta robots tag vs X-Robots-Tag (the HTTP header)
The robots meta tag is HTML-only — it needs a <head>. For anything that
isn’t HTML, you use the X-Robots-Tag, which delivers the exact same rule
vocabulary in the HTTP response header. Google: “The X-Robots-Tag can be used
as an element of the HTTP header response for a given URL. Any rule that can be
used in a robots meta tag can also be specified as an X-Robots-Tag.” And the
reason it exists: “You can use the X-Robots-Tag for non-HTML files like image
files where the usage of robots meta tags in HTML is not possible.”
So:
- PDF, image, or other non-HTML? You can’t add a
<meta>tag — use the header, e.g.X-Robots-Tag: noindex. - Whole directories or patterns? The header is set at the server/CDN level, so it scales to entire paths in one config rule.
- One engine? The header can target a crawler too:
X-Robots-Tag: googlebot: noindex, nofollow, and multiple X-Robots-Tag headers can be combined in one response.
Same rules, two delivery mechanisms: the meta tag for HTML pages, the header for everything else and for scale.
Which directives Bing and other engines support
Don’t assume the directive set is universal — it isn’t. Bing supports the core
indexing and serving rules — noindex, nofollow, noarchive (with nocache as
its synonym), and nosnippet — and it honors the X-Robots-Tag for non-HTML
resources. But Bing does not support the none shorthand, so for cross-engine
safety, write noindex, nofollow out explicitly rather than relying on none. The
snippet- and preview-control family — max-snippet, max-image-preview,
max-video-preview — along with noimageindex, notranslate,
indexifembedded, and unavailable_after, is effectively Google-only. When in
doubt, spell directives out and treat the max-* controls as Google features.
Common mistakes (and the fixes)
Disallow+noindexon the same URL. Thenoindexis never seen. Fix: leave the page crawlable; keep just thenoindex.noindexplus arel=canonicalpointing elsewhere. Conflicting signals — you’re telling Google both “drop this page” and “consolidate it into another one.” Pick one. (More in canonicalization.)- A staging-wide
noindexshipped to production. Catastrophic, sitewide deindex. Check before launch. - A
noindexinjected only by client-side JavaScript. Google has to render the page to see it, and if the rendered HTML differs from what you expect, behavior differs too. Prefer the tag in the raw HTML or the header. (See rendering.) - Expecting Bing to honor Google-only directives (
none, themax-*family). - Expecting a robots directive to do a job it doesn’t own. A
noindexornosnippetrule doesn’t by itself guarantee crawl-budget savings, secrecy, a ranking change, identical behavior across search engines, a specific removal timeline, or exclusion from every AI/search surface — each of those outcomes belongs to a different control (authentication for secrecy,robots.txtfor crawl, each engine’s own docs for parity, Search Console or Google-Extended for AI-specific scopes). Google gives no fixed timeframe for when anoindexed page actually drops out — it depends on recrawl priority and “may take months” for a lower-importance page.
For where this sits in the bigger picture: robots.txt and crawling are the crawl-control side; noindex and indexing are the index-control side; and nosnippet / data-nosnippet, max-snippet, and max-image-preview are the serving controls you reach for when you want a page indexed but want to shape how it appears. The X-Robots-Tag is this same tag’s HTTP-header equivalent for non-HTML.
AI summary
A condensed take on the Advanced version:
- The robots meta tag —
<meta name="robots" content="…">in the<head>— controls how a single HTML page is indexed and served. With no tag, the default isindex, follow. - It’s crawl-then-obey. Google must crawl the page to read the tag: “these
settings can be read and followed only if crawlers are allowed to access the
pages.” So a robots.txt-blocked URL never gets its
noindexseen — the classic mistake. Patrick’s blocked-pages experiment proves the mechanism: blocked pages stayed indexed and mostly kept ranking. Block ≠ remove. - robots.txt = crawl control; the meta tag (or X-Robots-Tag) = index/serve
control. Not interchangeable.
noindexin robots.txt was dropped Sept 1, 2019. - Directives: indexing (
noindex,none,indexifembedded), links (nofollow, page-wide), serving (nosnippet,max-snippet,max-image-preview,max-video-preview,notranslate,noimageindex,unavailable_after), plus the paragraph-leveldata-nosnippetattribute.noarchive,nocache, andnositelinkssearchboxare historical — Google says it no longer uses them. nosnippet/max-snippetalso gate AI Overviews and AI Mode — Google says they control whether the page’s content can be used as a direct input for those features, not just the classic text snippet. That’s not a general AI-training opt-out; Google-Extended and Search’s separate generative-AI property control are different systems.- Conflicts resolve to the most restrictive (
nosnippetbeatsmax-snippet:50). Across agooglebottag and the genericrobotstag, Googlebot takes the sum of the negative rules —robots: nofollow+googlebot: noindex⇒noindex, nofollow. Google recognizes only thegooglebot/googlebot-newsname tokens; other values (likebingbot) are ignored by Google. - Meta tag is conventionally
<head>-only (Google also tolerates body placement, but that’s Google-specific, not portable); the X-Robots-Tag carries the same rules in the HTTP header for PDFs, images, non-HTML, and whole directories. - Cross-engine: Bing supports
noindex/nofollow/noarchive(nocache)/nosnippetbut notnone; themax-*family is effectively Google-only — write directives out explicitly. - No guarantees: a robots directive alone doesn’t promise crawl-budget
savings, secrecy, a ranking change, cross-engine parity, or a fixed removal
timeline — Google gives no set timeframe for
noindexto take effect.
Official documentation
Primary-source documentation from the search engines.
- Robots meta tag, data-nosnippet, and X-Robots-Tag specifications — the authoritative spec: every directive, combining rules, conflict resolution, the
googlebot-vs-robotsunion, and the X-Robots-Tag header. Start here. - Block Search Indexing with noindex — how
noindexworks, the two delivery mechanisms (meta tag and header), and the crawl dependency in plain language. - Introduction to robots.txt — the crawl-control counterpart, so you don’t confuse the two jobs.
- Crawling and Indexing — the hub for robots, sitemaps, canonicalization, and crawl controls.
Bing / Microsoft
- Robots meta tags and attributes that Bing supports — Bing’s supported directives (confirm the exact list on the live page; it’s JavaScript-rendered).
Reference
- MDN —
<meta name="robots">— cross-engine directive reference, including which engines usenoarchive/nocache.
Quotes from the source
On-the-record statements from Google. Each link is a deep link that jumps to the quoted passage on the source page.
Google — what the tag is and the default
- “The robots
metatag lets you use a granular, page-specific approach to controlling how an individual HTML page should be indexed and served to users in Google Search results.” — Google Search Central docs. Jump to quote
Google — the crawl-then-obey dependency
- “Keep in mind that these settings can be read and followed only if crawlers are allowed to access the pages that include these settings.” Jump to quote
- “If a page is disallowed from crawling through the robots.txt file, then any information about indexing or serving rules will not be found and will therefore be ignored.” Jump to quote
- “For the
noindexrule 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.” — Google, “Block Search Indexing with noindex.” Jump to quote
Google — the directives (verbatim descriptions)
- “Do not show this page, media, or resource in search results.” —
noindex. Jump to quote - “Equivalent to
noindex, nofollow.” —none. Jump to quote - “Do not show a text snippet or video preview in the search results for this page.” —
nosnippet. Jump to quote - “Google is allowed to index the content of a page if it’s embedded in another page through iframes or similar HTML tags, in spite of a
noindexrule.” —indexifembedded. Jump to quote - “A larger image preview, up to the width of the viewport, may be shown.” —
max-image-preview:large. Jump to quote - “Do not index images on this page.” —
noimageindex. Jump to quote - “You can designate textual parts of an HTML page not to be used as a snippet.” —
data-nosnippet. Jump to quote
Google — combining and resolving conflicts
- “You can create a multi-rule instruction by combining robots
metatag rules with commas or by using multiplemetatags.” Jump to quote - “In the case of conflicting robots rules, the more restrictive rule applies. For example, if a page has both
max-snippet:50andnosnippetrules, thenosnippetrule will apply.” Jump to quote - “For situations where multiple crawlers are specified along with different rules, the search engine will use the sum of the negative rules.” Jump to quote
Google — placement, crawler tokens, and case sensitivity
- “Google Search doesn’t enforce placement of meta robots in the HTML head and will respect robots meta tags in the body section of an HTML document as well.” Jump to quote
- “Google supports two user agent tokens in the robots
metatag; other values are ignored.” Jump to quote - “Both the
nameand thecontentattributes are case-insensitive.” Jump to quote
Google — noarchive and other historical directives
- “The
noarchiverule is no longer used by Google Search to control whether a cached link is shown in search results, as the cached link feature no longer exists.” Jump to quote - “The
nocacherule isn’t used by Google Search.” Jump to quote
Google — nosnippet and max-snippet reach AI Overviews and AI Mode
- “[nosnippet] applies to all forms of search results (at Google: web search, Google Images, Discover, AI Overviews, AI Mode) and will also prevent the content from being used as a direct input for AI Overviews and AI Mode.” Jump to quote
- “[max-snippet] applies to all forms of search results (such as Google web search, Google Images, Discover, Assistant, AI Overviews, AI Mode) and will also limit how much of the content may be used as a direct input for AI Overviews and AI Mode.” Jump to quote
Google — no fixed timeframe for noindex to take effect
- “If a page is still appearing in results, it’s probably because we haven’t crawled the page since you added the
noindexrule. Depending on the importance of the page on the internet, it may take months for Googlebot to revisit a page.” — Google, “Block Search Indexing with noindex.” Jump to quote
Google — X-Robots-Tag
- “The
X-Robots-Tagcan be used as an element of the HTTP header response for a given URL. Any rule that can be used in a robotsmetatag can also be specified as anX-Robots-Tag.” Jump to quote - “You can use the
X-Robots-Tagfor non-HTML files like image files where the usage of robotsmetatags in HTML is not possible.” Jump to quote
Patrick Stox — robots.txt is for crawl control only
- “Google was clear they want robots.txt for crawl control only. The biggest downside will probably be all the people who accidentally take their entire site out of the index.”
— Patrick Stox, on whether Google should add
noindexto robots.txt, in Search Engine Land. Jump to quote
Patrick Stox — blocking ranking pages with robots.txt (the crawl-vs-index proof)
- “Accidentally blocking pages (that Google already ranks) from being crawled using robots.txt probably isn’t going to have much impact on your rankings, and they will likely still show in the search results.” Jump to quote
- “We lost a position here or there and all of the featured snippets for the pages.” Jump to quote
Every robots meta directive — cheat sheet
The full set of Google-supported content values, what each does, and the default.
| Directive | What it does | Default? |
|---|---|---|
all | No restrictions on indexing or serving — the implicit default | Yes (when no tag) |
index | Allow the page in search results (the default; rarely written) | Implicit |
noindex | Keep this page/media/resource out of search results | No |
follow | Follow the links on this page (the default; rarely written) | Implicit |
nofollow | Don’t follow any links on this page (page-wide) | No |
none | Shorthand for noindex, nofollow (not supported by Bing) | No |
nosnippet | Don’t show a text snippet or video preview; also blocks the page as a direct input for AI Overviews/AI Mode | No |
max-snippet:[n] | Cap the text snippet at [n] characters (0 = none, -1 = no limit); also caps how much can feed AI Overviews/AI Mode directly | No |
max-image-preview:[setting] | Cap image-preview size: none / standard / large | No |
max-video-preview:[n] | Cap video preview at [n] seconds (0 = none, -1 = no limit) | No |
notranslate | Don’t offer a translation of this page in results | No |
noimageindex | Don’t index the images on this page | No |
unavailable_after:[date/time] | Drop the page from results after the given date/time | No |
indexifembedded | Allow indexing of content embedded via iframe even with noindex | No |
Historical — Google no longer uses these:
| Directive | Status |
|---|---|
noarchive | No longer used — the cached-link feature it controlled no longer exists |
nocache | Not used by Google Search (some engines treated it as a noarchive synonym) |
nositelinkssearchbox | No longer used — the sitelinks search box feature it controlled no longer exists |
Paragraph-level (an HTML attribute, not a content value):
| Attribute | What it does | Where |
|---|---|---|
data-nosnippet | Keep a specific passage out of the snippet | On span, div, section |
The syntax
<!-- one tag, comma-separated -->
<meta name="robots" content="noindex, nofollow">
<!-- target one engine -->
<meta name="googlebot" content="noindex">
<!-- the HTTP-header equivalent, for non-HTML / at scale -->
X-Robots-Tag: noindex
X-Robots-Tag: googlebot: noindex, nofollowFast facts
- No tag at all → default
index, follow. none=noindex, nofollow— but Bing doesn’t supportnone; write it out.max-*,noimageindex,notranslate,indexifembedded,unavailable_afterare effectively Google-only.- The tag is HTML-only; the
X-Robots-Tagheader carries the same rules for PDFs, images, and whole directories. - Google reads exactly two crawler-name tokens —
googlebotandgooglebot-news— and ignores everything else, including other engines’ tokens likebingbot. - Head placement is the portable convention, but Google specifically also
respects a robots meta tag placed in the
<body>. name/contentandX-Robots-Tagvalues are case-insensitive to Google.
The mental models
1. Crawl-then-obey — the tag only works if the page is fetchable.
Google has to crawl the page to read the tag. Anything that blocks the fetch
(robots.txt disallow, auth, a server error) means the tag is never seen. So
before you trust a noindex, confirm the URL is crawlable. The corollary: never
Disallow a URL you’re trying to noindex.
2. Three tools, three jobs — don’t mix them up.
robots.txt= crawl control (whether bots fetch the page).- Robots meta tag / X-Robots-Tag = index & serve control (what happens once it’s fetched).
- Authentication = secrecy (a
noindexpage is still public). Match the job to the tool. The most common failure is usingrobots.txtto try to deindex — that’s the meta tag’s job.
3. The decision rule for removing a page.
Want it out of search? Leave it crawlable and add noindex — and
don’t also block it in robots.txt, and don’t also canonical it to a different
URL. Want bots to skip a space entirely (and you don’t care about indexing)?
robots.txt disallow. The two are not interchangeable.
4. Conflict resolution — most restrictive wins.
When rules collide, the stricter one applies (nosnippet beats max-snippet:50).
Don’t try to out-clever this with combinations; assume the tightest rule is the one
that takes effect.
5. googlebot vs robots — sum of the negatives, not override.
For the overlap, Googlebot adds up the restrictions from the generic robots
tag and the googlebot-named tag rather than picking one. robots: nofollow +
googlebot: noindex ⇒ Googlebot gets noindex, nofollow. (A crawler-named tag
does take precedence over the generic tag where they set the same directive
differently — but the union is the rule to remember.)
6. HTML page → meta tag; everything else → header.
If it has a <head>, use the <meta> tag. If it’s a PDF, an image, any non-HTML
file, or you need to cover a whole directory, use the X-Robots-Tag header —
same rule vocabulary, different delivery.
Robots Meta Tag
The 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.
Related: X-Robots-Tag, Noindex, Nofollow, nosnippet & data-nosnippet
Robots Meta Tag
The robots meta tag is an HTML element conventionally placed in the <head> of a page — <meta name="robots" content="noindex"> — that tells search engines how to index and serve that specific page. Google also tolerates the tag appearing in the page body, but that’s Google-specific behavior, not portable advice; keep it in <head>. The name can be robots (every crawler that reads the tag), or — for Google specifically — one of exactly two crawler-named tokens, googlebot or googlebot-news; Google ignores any other name value, including other engines’ tokens like bingbot. Its HTTP-header twin, the X-Robots-Tag, carries the exact same rules (case-insensitively) in the response header, so it works for non-HTML files (PDFs, images) where you can’t add a <head> tag.
The single most important thing about it is that it’s crawl-then-obey. Google has to be able to crawl the page to see the tag — so if the URL is blocked in robots.txt, Google never fetches it, never sees the noindex, and the page can stay indexed (Google gives no fixed timeframe for a noindexed page to drop out even when it is seen — it can take months on lower-priority pages). As Google puts it, “these settings can be read and followed only if crawlers are allowed to access the pages that include these settings.” That makes robots.txt and the robots meta tag two different jobs: robots.txt controls crawling, the meta tag controls indexing and serving. With no tag present, the default is index, follow.
The supported directives cover indexing (noindex, none, indexifembedded), link handling (nofollow), and serving and snippets (nosnippet, max-snippet, max-image-preview, max-video-preview, notranslate, noimageindex, unavailable_after) — nosnippet and max-snippet also gate whether the page’s content can be used as a direct input for AI Overviews and AI Mode, not just the classic text snippet. noarchive, nocache, and nositelinkssearchbox are directives Google says it no longer uses. When rules conflict, the more restrictive one wins — and for a crawler-named tag against the generic robots tag, Googlebot takes the sum of the negative rules, not a simple override.
Related: X-Robots-Tag, Noindex, Nofollow, nosnippet & data-nosnippet
Build-time retrieval analysis plus live signals for this exact article. The automatic chunk report includes a deterministic readiness score and is ready without a model download.
Search Console
sampleGA4 traffic (28d)
sampleCloudflare traffic (7d)
sampledCrUX field data (28d, phone)
sampleGoogle NLP entities
localChangelog
Updated Jul 18, 2026.
Editorial summary and recorded change details.Summary
Corrected the crawler-token, placement, and directive-lifecycle claims against Google's live robots-meta-tag docs, and added the AI Overviews/AI Mode scope of nosnippet and max-snippet.
Change details
-
Corrected the crawler-name token claim: Google recognizes only googlebot and googlebot-news in the meta name attribute and ignores all other values, including other engines' tokens like bingbot (previously implied bingbot was also a Google-read token).
-
Added Google's explicit tolerance for robots meta tags placed in the page body, while keeping head placement as the portable recommendation (previously implied head-only).
-
Reclassified noarchive, nocache, and nositelinkssearchbox as historical directives Google no longer uses, instead of listing noarchive as a current serving control.
-
Added that nosnippet and max-snippet also govern whether a page's content can be used as a direct input for AI Overviews and AI Mode, distinct from the separate Google-Extended and Search generative-AI property-level controls.
-
Added that name/content attributes and X-Robots-Tag values are case-insensitive to Google, and that Google gives no fixed timeframe for a noindex to take effect.
Full comparison unavailable — no prior snapshot was archived for this revision.