Writing for answer engines has a flip side: sometimes you do not want your content quoted. A paid report's key table, a price list that changes weekly, a section that only makes sense in context. Google gives site owners a small set of controls for this. This post lists them with the exact rules, then gives you a script that audits built HTML for them. I ran the script on this site's own build.
Everything about Google's behaviour comes from its robots meta tag, AI features and featured snippets pages, read on 2026-10-16. I cannot observe Google's systems, so I make no claim about how fast or fully a directive takes effect.
What are the controls?
From Google's robots meta tag documentation:
| Control | Scope | What it does |
|---|---|---|
nosnippet | Page | No text snippet or video preview in results. A static image thumbnail may still appear. The page says it also keeps content from being used as a direct input for AI Overviews and AI Mode. |
max-snippet:0 | Page | Documented as equivalent to nosnippet. |
max-snippet:-1 | Page | Google chooses the snippet length it thinks is most effective. |
max-snippet:N | Page | Limits the snippet to N characters. |
data-nosnippet | Element | Excludes that element's text from snippets. Valid on span, div and section only. |
noindex | Page | Do not show the page, media or resource in results. |
Google's AI features page lists nosnippet, data-nosnippet, max-snippet and noindex as the way to limit what appears, and says robots.txt for Googlebot is the control for access. It also says a page must be indexed and snippet-eligible to appear in AI Overviews or AI Mode at all.
How do you apply them?
Page level, in the head:
<meta name="robots" content="max-snippet:20, max-image-preview:large">
You can combine directives with commas or use separate tags. When rules conflict, Google says the more restrictive one applies.
Element level, in the body:
<div data-nosnippet>
Members-only pricing table
</div>
Rules that trip people up, all from the same page:
- It is a boolean attribute. Any value is ignored, so
data-nosnippet="false"still excludes the text. - Only
span,divandsection. Apor a custom tag does nothing. - Unclosed tags are dangerous. An unclosed
divextends the exclusion to everything after it. - Do not toggle it with JavaScript. Google may extract the attribute before or after rendering, so adding or removing it on existing nodes is unreliable.
- Do not block crawling and expect the tag to work. The rules are discovered when a URL is crawled.
Will limiting snippets also limit featured snippets?
Partly. Google's featured snippets page says nosnippet stops both featured and regular snippets. A low max-snippet value keeps regular snippets but does not guarantee featured snippets stop. For a guaranteed result it recommends nosnippet. There is no markup that earns a featured snippet; Google's systems decide.
One more detail from the robots tag page: these meta limits generally do not affect structured data, except description values such as article.description, which max-snippet can limit.
How do you audit what your site actually serves?
Hand-checking is how mistakes survive. The script below parses HTML, collects the robots and googlebot meta directives, and flags data-nosnippet on tags Google does not support. It runs on a folder of built HTML.
VALID_NOSNIPPET_TAGS = {"span", "div", "section"}
class P(HTMLParser):
def handle_starttag(self, tag, attrs):
a = dict(attrs)
if tag == "meta" and (a.get("name") or "").lower() in ("robots", "googlebot"):
self.robots.append((a.get("content") or "").lower())
if "data-nosnippet" in a and tag not in VALID_NOSNIPPET_TAGS:
self.bad_dns.append(tag)
First, a self-test on five tiny snippets of HTML:
plain (set(), [])
nosnippet ({'nosnippet'}, [])
combined ({'max-snippet:N'}, [])
snippet zero ({'max-snippet:0'}, [])
bad data-nosnippet (set(), ['p'])
Then on this site's production build output (.next/server/app), run on 2026-10-16:
pages scanned: 758
directive counts: {'noindex': 1}
pages with invalid data-nosnippet tag: 0
I checked the one noindex hit: it is the built 404 page, which is where you want it. No page on the site carries nosnippet or a max-snippet limit, so nothing on this site is hidden from snippets by directive. That is a real, checkable fact about a build, not a statement about Google's behaviour.
Limits of the script: it reads static HTML, so a directive added by JavaScript after load, or sent in an X-Robots-Tag HTTP header, will not show. The header route is documented by Google for non-HTML files, so audit your server config separately.
Should you limit snippets at all?
Think of it as a trade. Full snippets and AI quoting can send readers to you or can answer the question without a click. I found no primary source quantifying that trade, so decide per page:
- Free content you want found: leave defaults. Spend effort on clear answers near the top.
- Premium or time-sensitive facts: wrap the specific block in
data-nosnippetrather than the whole page. - Pages you never want shown:
noindex, and do not also block them in robots.txt or Google cannot see the tag. - Wanting out of AI features but staying in search: Google's pages point to the snippet controls above. Check the effect on a few URLs over time with Search Console rather than assuming.
For the crawler side (OpenAI's search and training bots), see robots.txt for AI crawlers. For what Google says about AI features overall, read the AEO checklist. If you change snippet rules, track the effect with the low-CTR script.
What I could not verify
- How long Google takes to apply a change. The robots tag page I read gives no timeframe.
- Whether
nosnippetexcludes content from AI features in every case. I am relaying Google's wording, not testing it. - Behaviour of non-Google AI systems. Those use their own crawlers and rules.



