Google’s snippet directives control AI Overviews and AI Mode as well as the classic results page. nosnippet keeps a page’s content out of both features entirely. max-snippet caps how much of the page they can use, and max-snippet:0 is the same as nosnippet. data-nosnippet removes specific elements from use while leaving the rest of the page available. All three predate the AI features, and all three now apply to them.
That last fact is where the trouble starts. Snippet directives are usually set once, in a template or a CMS setting, for reasons that made sense for ten blue links: a legal review, a paywall experiment, a dislike of how Google truncated a description. They then sit unread while their scope widens. This post covers what each directive does on AI surfaces, how they combine, where accidental restrictions come from, and how to find every one on a site.
What do AI crawlers extract from your page? introduces these directives as extraction controls. This post is the operational follow-up: choosing them on purpose and auditing them at scale.
What does each directive do on AI surfaces?
Each directive has a documented effect on AI Overviews and AI Mode, and they differ in scope: the whole page, a character budget, or a marked element.
| Directive | Scope | Effect on AI Overviews and AI Mode |
|---|---|---|
nosnippet | Page | No snippet in any result type, and content not used “as a direct input for AI Overviews and AI Mode” |
max-snippet:0 | Page | ”No snippet is to be shown. Equivalent to nosnippet.” |
max-snippet:[n] | Page | Limits “how much of the content may be used as a direct input for AI Overviews and AI Mode” |
max-snippet:-1 | Page | No limit; Google chooses the length |
data-nosnippet | Element | Marked text is not used as a snippet; the rest of the page is unaffected |
noindex | Page | Page not shown in Search at all, so not eligible for anything |
The quotations are from Google’s robots meta tag documentation. Google’s AI features page lists the same four controls, nosnippet, data-nosnippet, max-snippet, and noindex, as the way “to limit the information shown from your pages in Search.” It doesn’t list a separate AI-only directive, because there isn’t one.
Search Console also has a site-level setting that includes or excludes a property from Search generative AI features. That is a property switch rather than a page directive; AI Overviews eligibility covers it alongside the other requirements.
How do the directives combine?
When directives conflict, the more restrictive one wins. Google’s documentation gives the case directly: with both nosnippet and max-snippet:50, nosnippet applies. Four more rules from the same page decide what actually takes effect:
- Multiple rules can be combined in a comma-separated list or in separate meta tags.
<meta name="robots" content="max-snippet:160, max-image-preview:large">is valid. - Besides the generic
robotsmeta name, Google supports two user-agent tokens:googlebotandgooglebot-news. For any other name in the meta tag, Google says “other values are ignored,” so a tag addressed to some other crawler does nothing on Google. - Different rules for different crawlers add up. When a page sends rules to several crawlers, Google uses the sum of the negative rules that apply to it. A
max-snippet:0in agooglebottag still applies when therobotstag says nothing. - The
X-Robots-Tagheader carries the same rules. Google states that “any rule that can be used in a robots meta tag can also be specified as an X-Robots-Tag,” optionally prefixed with a user-agent name. A header rule with no user agent applies to all crawlers.
The practical consequence: to know a page’s effective directive, read the robots meta tag, any googlebot meta tag, and the X-Robots-Tag response header, then take the most restrictive result. Reading one of the three is how audits miss the problem.
Where does an accidental max-snippet:0 come from?
Accidental snippet restrictions come from settings made for other reasons, at a layer nobody re-reads. The common sources, none of them exotic:
- A CMS or plugin setting. Some SEO settings panels expose snippet length as a field. A zero entered once, site-wide or per post type, ships in every page of that type.
- A server or CDN header rule. An
X-Robots-Tagadded for a directory of PDFs, written with a path pattern broader than intended, attaches the directive to HTML pages too. Headers never appear in view-source, so the page looks clean. - A staging configuration that reached production. Staging environments often carry
noindex, nosnippet. A deploy that copies configuration copies the directive. - A legal or licensing decision. Some publishers restricted snippets deliberately, for licensing reasons, before AI features existed. The decision may still stand, but whoever made it didn’t weigh AI Overviews, because there was nothing to weigh.
- A
data-nosnippetwrapper that grew. An attribute placed on adivaround a disclaimer stays put while the template changes around it. When the main content moves inside thatdiv, the page’s body is excluded and the page still looks indexed and snippet-eligible.
None of these produces an error. The page stays indexed and keeps ranking. The only symptom is absence from a surface you weren’t measuring when the setting changed.
When should you use each directive on purpose?
Use the narrowest control that achieves the goal. Page-level directives are blunt; most real reasons to restrict content are about a part of a page.
| Goal | Control | Why |
|---|---|---|
| Keep one passage out (a disclaimer, a quote you can’t license, a spoiler) | data-nosnippet on a span, div, or section around it | Element-level; the rest of the page stays usable |
| Cap how much text is lifted from a page | max-snippet:[n] | Limits input length without removing the page |
| Keep a page’s content out of snippets and AI features entirely | nosnippet | Page stays in Search as a link with no snippet |
| Keep the whole site out of AI Overviews and AI Mode | Search Console’s Search generative AI setting | Property-level; doesn’t touch classic snippets |
| Keep a page out of Search altogether | noindex | Removes it from everything |
Two constraints on data-nosnippet are easy to miss. It is valid only on span, div, and section elements; on any other element Google ignores it. And because Google may extract it before or after rendering, Google advises not to add or remove the attribute on existing nodes with JavaScript. If a script inserts an element that should be excluded, it should carry the attribute when it is first added to the DOM.
One more rule decides whether any directive is seen at all. Google states that if a page is disallowed in robots.txt, “any information about indexing or serving rules will not be found and will therefore be ignored.” A nosnippet on a page Googlebot cannot fetch is never read. robots.txt patterns for AI covers how disallow rules interact with everything else on a page.
How to audit one page
Three places can hold a directive, and the check reads all three.
- The meta tags. Open
view-source:on the page and search forrobots. Note the content of every<meta name="robots">and<meta name="googlebot">tag. - The response header. Open developer tools, go to the Network panel, reload, select the document request, and read the response headers for
X-Robots-Tag. - The element attribute. Back in view-source, search for
data-nosnippet. For each hit, find the element’s closing tag and judge how much of the page sits inside it.
Then confirm what Google received. Search Console’s URL Inspection tool fetches the page in real time with its live test and shows whether indexing is allowed, which catches a directive added by a layer you can’t see from the browser. Google’s AI features page recommends exactly this: “Make sure that the preview control is correct and visible to Googlebot.”
How to audit across a site
At scale, the effective directive becomes three columns in a spreadsheet: meta robots, X-Robots-Tag, and a count of data-nosnippet elements.
With a crawler. Most desktop crawlers report the meta robots content and the X-Robots-Tag header per URL as standard columns. Add custom extraction rules for what they don’t capture:
//meta[@name='googlebot']/@content, for the Google-specific tag.count(//*[@data-nosnippet]), for how many elements carry the attribute.string-length(normalize-space(//*[@data-nosnippet]))againststring-length(normalize-space(//main)), to see how much of the main content sits inside a marked element.
Export to a spreadsheet. Filter all three directive columns for nosnippet and for max-snippet:0, and sort the max-snippet values ascending to see which pages carry a low cap. Then group by template or URL path. Directives cluster by template, so the list usually collapses to a handful of settings to change.
From Search Console. There is no report that lists snippet directives across a site. Use URL Inspection on one URL per template to confirm what the crawler export shows.
From a terminal, for the header on a single URL:
curl -sI https://example.com/page/ | grep -i x-robots-tag
Reading the tags is the deterministic part. GEOBee’s crawl reports indexability per URL in its Index column, and its exports carry every finding with a fix; the three-column directive check above is still the complete answer for snippet controls specifically, and the check-access walkthrough puts it in sequence with the robots.txt and CDN checks.
After the fix
Removing an unwanted directive takes effect only when Google recrawls the page. Google’s AI features documentation says to “allow time for Google to recrawl and process the change in preview controls,” which Google says can take anywhere from days to months.
Keep the audit in the release process. A directive that arrived through a template can come back through a template, and status codes, redirects, and canonical drift covers the related settings that drift the same way. The point of a re-check is not to restore visibility, which no setting guarantees. It is to make sure the only restrictions on the page are ones someone chose.
To check indexability and AI crawler access on every URL alongside the rest of the audit, download GEOBee and crawl your site during the 7-day trial.