Skip to content
pageinspection

The robots directives that are not noindex

Everybody knows noindex. The rest of the vocabulary controls snippets, images, cached copies and expiry dates, can arrive in a response header instead of a tag, and resolves in ways that surprise people when two sources disagree.

The short answer

Robots directives control indexing and snippet behaviour, and there is more vocabulary than noindex: nofollow, nosnippet, noarchive, noimageindex, max-snippet and max-image-preview all change how a page is treated. They can be set in a meta tag or in an X-Robots-Tag response header, and when the two disagree the most restrictive one wins.

CriticalAudit check · Robots directives

The vocabulary past noindex

These are instructions to a crawler about what it may do with a page it has already fetched. They are not access control: a directive is only read if the page is retrieved, which is why a robots.txt block and a meta directive do fundamentally different jobs.

directives.txt
noindex              keep it out of the index. the big one
nofollow             do not follow the links on this page
none                 noindex plus nofollow, in one token
nosnippet            show no text snippet at all, and no preview
max-snippet:150      allow a snippet up to 150 characters
max-snippet:0        equivalent to nosnippet
max-snippet:-1       no limit, which is the default
max-image-preview:   none, standard or large. controls the thumbnail
noimageindex         do not index images found on this page
noarchive            no cached copy offered
notranslate          do not offer this page translated
unavailable_after:   drop it after a date, in a valid date format
indexifembedded      index this only where it is embedded in another
                     page, for iframe-delivered content

Two of these are more consequential than they look. nosnippet removes your description from every result, which almost always costs more clicks than whatever it was protecting, and noarchive is largely obsolete now that cached copies are not offered the way they were.

nofollow deserves its own note. On a page-level directive it means the links here should not be followed, and as a link attribute it became a hint rather than a directive in 2019. Using it to control the flow of value inside your own site has not worked for a very long time, which is the subject of the authority guide.

The genuinely useful one nobody uses is max-snippet with a small positive number, which limits a snippet without removing it. Publishers reach for nosnippet when what they wanted was a cap.

Read the directives on one page

This reports the robots meta tag on the URL you enter and separates the permissive tokens from the ones that give something up. What it cannot see is the header form, and the guide above explains why that matters: the tag and the header are read together.

Read the robots directives on one page

No signup required. Each free search audits one page, paste any URL to see it in action.

What happens when two sources disagree

A page can carry a meta tag and a header at once, and both can name several tokens. The rule is that the most restrictive instruction wins. A noindex in a header and an index in a meta tag resolves to noindex, and there is no notion of one overriding the other by being later or more specific.

Which produces a practical asymmetry worth internalising: adding a permissive directive can never undo a restrictive one somewhere else. Teams try this. Putting index, follow in a template does nothing to rescue pages that a CDN rule is marking noindex, and it creates the impression that the markup has been checked.

Two more resolution details. A directive naming a specific crawler beats the generic one for that crawler, which is how the header form targets one agent. And a page blocked in robots.txt has its directives never read at all, so a noindex behind a disallow is a message nobody receives, leaving the URL eligible to appear with no description. That combination is covered properly in the indexability guide.

Why this is Critical when most of its tokens are minor

Because the rating has to cover the worst thing the check finds, and the worst thing here removes pages from search entirely. Most of the vocabulary is a preference about a thumbnail or a snippet length. One token, in a header nobody can see, silently deindexes a section, and Critical is the rating for findings that take a page out of the running.

The invisibility is what settles it. Every other Critical finding leaves evidence on the page: a missing title, a broken link, a canonical pointing somewhere odd. A response header leaves nothing in the markup, nothing in your repository and nothing in a browser window. A check that reads them is doing something a person cannot do by looking.

The corollary is that most instances of this finding will be uninteresting, and that is expected. A page declaring index, follow is telling you the default twice. Read the report for the tokens that give something up, and read the header before you conclude the markup is the whole story.

Reading the tag and the header together

Both sources, one command, because checking only the markup is how this gets missed.

check-directives.sh
URL=https://example.com/reports/q2-2026

# the header form, which is invisible in a browser
curl -s -I "$URL" | grep -i 'x-robots-tag'

# the meta tag
curl -s "$URL" | grep -io '<meta[^>]*name="robots"[^>]*>'

# non-HTML files can only use the header, so check them directly
curl -s -I https://example.com/files/price-list.pdf \
  | grep -iE '^(HTTP/|content-type|x-robots-tag)'

# and as a specific crawler, since the header can target one
curl -s -I -A 'Googlebot' "$URL" | grep -i 'x-robots-tag'

The last command matters more than it looks. A header applied conditionally by user agent will not appear in an ordinary request, so a check that only runs as your browser can report a clean page that is being told something else.

When a directive turns out to be arriving in a header you did not write, the place to look is your CDN or reverse proxy configuration rather than your application, and the change that introduced it is usually months old.

Questions this check raises

When do I need the X-Robots-Tag header instead of a meta tag?
Whenever the resource is not HTML. PDFs, images and other files have no head to put a meta tag in, so the header is the only way to control them. It is also the practical choice when directives need to be applied at the CDN or server level across many URLs at once.
What happens if the meta tag and the header disagree?
The restrictive directive wins. A meta tag saying index and a header saying noindex results in a page that is not indexed, which is exactly the situation that produces a bug nobody can find: the HTML says one thing, the response says another, and only one of them is visible in view-source.
Does nofollow on a meta robots tag stop link equity leaving the page?
It stops the crawler following the links from that page, which is not the same as directing equity elsewhere. Google treats nofollow as a hint rather than an instruction, and the value that would have flowed is not redistributed to the remaining links. Page-level nofollow is rarely the right tool.