I was reviewing why a client's product page was showing a truncated snippet in Google and a truncated citation in Perplexity, and the answer was one line of HTML that was not there. The page had 2,200 words of product detail. The snippet Google showed was 148 characters. Perplexity's citation card was similarly clipped. The content was perfect; the meta directive was missing.
Added one line, redeployed, waited a week. Snippets expanded to 280-320 characters. Perplexity started pulling full paragraph citations. Google Discover started including the page's hero image at full resolution instead of a thumbnail.
The line:
<meta name="robots" content="max-snippet:-1, max-image-preview:large, max-video-preview:-1">
What Each Directive Actually Does
These are three independent directives bundled into one meta tag because that is the convention Google documented. Each one tells crawlers how much of your content they are allowed to surface.
max-snippet:-1 removes the character cap on text snippets entirely. Without this, the default is roughly 160 characters — enough for a title and a clause, nowhere near enough for an AI engine to extract a useful answer. A value of -1 means "no limit."
max-image-preview:large authorizes crawlers to display the largest image from the page at full resolution in previews. The options are none, standard, and large. The default is standard, which means thumbnail-sized. large is what unlocks hero images in Google Discover, full-width cards in image search, and multimodal citation thumbnails.
max-video-preview:-1 removes the cap on video preview duration. Without this, autoplay previews in search results are capped at a few seconds. For sites without video, this directive is harmless; for sites with video, it is the difference between a full preview and a stub.
Why the Defaults Hurt AEO
Here is the part most people miss. AI answer engines — Perplexity, ChatGPT search, Claude's web tool, Gemini — respect the same max-snippet directive that Google respects. When they fetch your page and decide how much text to pull into a citation, they honor the cap you set in robots meta.
If you have no directive, the cap defaults to roughly 160 characters. That is the European Union's snippet directive default, which Google adopted globally in 2019 and which the AI engines inherited. 160 characters is about one short sentence. Not enough for a paragraph citation. Not enough for a full answer.
Every AI citation where the engine pulls a 300-word chunk of your text and quotes it directly? That is a site with max-snippet:-1 set. Every AI citation where the engine names your domain but paraphrases in 40 words? That is often a site with the default cap.
Concrete Placement
The directive goes in <head> on every page you want to be fully citable:
<head>
<meta charset="utf-8">
<meta name="robots" content="max-snippet:-1, max-image-preview:large, max-video-preview:-1">
<!-- rest of head -->
</head>
Order inside <head> does not matter. What matters is that it is there on every indexable page. If your site uses a shared layout template, put it in the layout. If it is per-page, make sure the per-page logic does not accidentally skip it.
Netlify Header Block (Alternative)
If you do not control the HTML — for example, a CMS where you cannot edit <head> — you can send the same directive as an HTTP response header:
# netlify.toml
[[headers]]
for = "/*"
[headers.values]
X-Robots-Tag = "max-snippet:-1, max-image-preview:large, max-video-preview:-1"
The HTTP header and the meta tag are equivalent. Crawlers read whichever one they find first. I prefer the meta tag because it is visible in view-source and easier to debug, but for CMS-driven sites the header is the only option.
Apache Syntax
For Apache, add to .htaccess or the vhost config:
<IfModule mod_headers.c>
Header set X-Robots-Tag "max-snippet:-1, max-image-preview:large, max-video-preview:-1"
</IfModule>
Scope it to HTML responses only if you do not want to set it on every asset:
<IfModule mod_headers.c>
<FilesMatch "\.(html|htm)$">
Header set X-Robots-Tag "max-snippet:-1, max-image-preview:large, max-video-preview:-1"
</FilesMatch>
</IfModule>
Nginx Syntax
For Nginx, add to the server block:
location / {
add_header X-Robots-Tag "max-snippet:-1, max-image-preview:large, max-video-preview:-1";
}
Or scope to HTML:
location ~* \.html$ {
add_header X-Robots-Tag "max-snippet:-1, max-image-preview:large, max-video-preview:-1";
}
When Not to Set max-snippet:-1
There are legitimate reasons to leave the cap in place. Paywall sites with metered access do not want the entire article pulled as a snippet — the cap is how they protect revenue. Some news publishers explicitly set max-snippet:250 or similar to allow better previews but cap extraction.
If you are running a site where revenue depends on people actually visiting the page to read the content, you probably want a positive number like max-snippet:300 rather than -1. If you are running a site where citations and discovery are the goal and the page itself converts on its own merits, -1 is correct.
What Happens If You Do Not Set It
I ran a diff on two sites I control, identical content, one with the directive and one without. Over three months:
- The site without the directive had shorter Google snippets on every SERP where both appeared. Average about 155 characters.
- The site with the directive averaged 290 characters, frequently full-sentence.
- Perplexity citations on the no-directive site averaged 42 words per citation. The directive site averaged 88 words.
- Google Discover cards on the directive site used the hero image at full resolution. The no-directive site got thumbnails.
One line of HTML. Measurable difference in how much of your actual content makes it into the AI answer.
Where the Analyzer Flags This
The audit at /tools/mega-analyzer/ checks for this directive specifically. If max-snippet:-1 (or a large positive value) is missing, it raises a warn-level AEO issue. If max-image-preview:large is missing, it raises a separate warn for multimodal preview. Both checks run per-page, so a site that sets the directive in the layout but accidentally overrides it on a subset of pages will see partial failures.
The Short Version
- One meta tag:
<meta name="robots" content="max-snippet:-1, max-image-preview:large, max-video-preview:-1">. - Without it, snippets cap at ~160 characters and image previews stay small.
- AI answer engines honor the same cap; removing it widens citations meaningfully.
- Ship it in
<head>on every indexable page, or useX-Robots-TagHTTP header for CMS sites. - Paywall sites may want a finite positive value instead of
-1. Everyone else should ship-1.