---
title: "Meta Robots Tags in Nuxt"
description: "Set noindex, nofollow, and AI Overview opt-outs with useSeoMeta in Nuxt, and avoid the mistakes that silently deindex working pages."
canonical_url: "https://nuxtseo.com/learn-seo/nuxt/controlling-crawlers/meta-tags"
last_updated: "2026-10-05"
---

::key-takeaways
- `noindex` excludes a crawlable page from Google indexing; `nofollow` asks Google not to follow its links
- `nosnippet` blocks a page from search snippets and prevents AI Overviews and AI Mode from using it as input
- Use the `data-nosnippet` HTML attribute to exclude one section, like a pricing table, from snippets without noindexing the whole page
- Server-rendered robots tags are available immediately; Google can also process JavaScript updates
::

Meta robots tags give page-level control over search engine indexing, on top of the site-wide rules in [robots.txt](/learn-seo/nuxt/controlling-crawlers/robots-txt). Use them to exclude selected pages from indexing or control search snippets and AI Overviews. Distinct paginated pages normally need their own canonical URLs. For non-HTML files (PDFs, images) use [X-Robots-Tag HTTP headers](https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag#xrobotstag) instead.

## Setup

Add the robots meta tag with `useSeoMeta()`{lang="ts"} in your Nuxt pages. Nuxt server-renders these tags automatically, so crawlers see them in the initial HTML response.

```ts [Block Indexing]
useSeoMeta({
  robots: 'noindex, follow'
})
```

```ts [Control Snippets]
useSeoMeta({
  robots: 'index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1'
})
```

## How Meta Robots Tags Work

The robots meta tag goes in your page's `<head>`{lang="html"} and tells crawlers what to do with that specific page ([Google's documentation](https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag)):

```html
<meta name="robots" content="index, follow">
```

Without a robots meta tag, crawlers assume `index, follow` by default ([MDN reference](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/meta/name/robots)).

### Common Directives

- `noindex`: exclude from search results
- `nofollow`: don't follow links on this page
- `noarchive`: Google no longer uses this directive for cached links
- `nosnippet`: no snippet in search results, and no use of the content as input for AI Overviews or AI Mode; the trade-off is it can hurt click-through rate since there's no preview text to draw someone in
- `max-snippet:[number]`: limit the snippet to N characters, which indirectly limits how much text an AI answer can quote from the page
- `max-image-preview:[setting]`: control image preview size (`none`, `standard`, `large`)
- `max-video-preview:[number]`: limit video preview to N seconds

Combine directives with commas. When two conflict, [the more restrictive one wins](https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag): a page with both `max-snippet:50` and `nosnippet` gets `nosnippet` applied.

### Excluding Specific Content: data-nosnippet

`nosnippet` blocks snippets for the whole page. To exclude one section instead, mark it with the `data-nosnippet` HTML attribute:

```html [app.vue]
<p>This content can be used in search snippets.</p>
<div data-nosnippet>
  This content is excluded from search snippets.
</div>
```

Useful for pricing tables, spoilers on review pages, or any block you want public but not quoted verbatim in results.

### Critical Requirements

Render meta robots tags on the server so they are available in the initial response. Google crawls a page first and renders its JavaScript in a separate, later step, with no published timeline for when that happens, so a tag injected only after hydration may not exist yet when the crawler reads the page. Nuxt's SSR puts the tag in the HTML response immediately.

If you block the page in robots.txt, crawlers [never see the meta tag](https://developers.google.com/search/docs/crawling-indexing/block-indexing), so don't combine robots.txt blocking with noindex: the noindex directive won't fire.

Target specific crawlers by replacing `robots` with a user agent token like `googlebot`. Google combines applicable directives; the more restrictive rule applies when they conflict.

## Noindex Follow vs Noindex Nofollow

Use `noindex, follow` to exclude the page while allowing link following. It does not guarantee crawling or transferred ranking signals.

Choose `noindex, nofollow` when both indexing exclusion and link-following restriction match your policy. Authentication protects private content; these directives do not.

```ts [Noindex Follow]
// Filter pages, thank you pages, test pages
useSeoMeta({
  robots: 'noindex, follow'
})
```

```ts [Noindex Nofollow]
// Login pages, admin sections
useSeoMeta({
  robots: 'noindex, nofollow'
})
```

`follow` doesn't force crawling, it only allows it; pages can still be crawled less often over time once they're noindexed.

## Common Use Cases

### Search Results and Filtered Pages

Decide whether a filter changes useful page content before choosing indexing rules. Tracking parameters alone do not justify noindex.

If the goal is exclusion, allow crawling so Google can read noindex. If the goal is duplicate consolidation, use consistent canonical signals. See [canonicalization guidance](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls).

### Pagination

[Google no longer uses](https://developers.google.com/search/docs/specialty/ecommerce/pagination-and-incremental-page-loading) `rel="next"` and `rel="prev"` tags. Link to next/previous pages with regular `<a>`{lang="html"} tags and let Google discover the sequence naturally. See the [Pagination SEO guide](/learn-seo/nuxt/routes-and-rendering/pagination) for implementation details.

You don't need to noindex pagination pages; Google treats them as part of the sequence. Only noindex if the paginated content is duplicate or low-value.

### User-Generated Content

This example limits snippet length for a public user profile. It does not control caching:

```ts [pages/user/[id\\]/profile.vue]
useSeoMeta({
  robots: 'index, follow, max-snippet:50'
})
```

## X-Robots-Tag for Non-HTML Files

The meta robots tag only works in HTML. For PDFs, images, videos, or other files, use the [X-Robots-Tag HTTP header](https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag#xrobotstag) instead ([MDN reference](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Robots-Tag)):

```
X-Robots-Tag: noindex, nofollow
```

Google supports applicable directives in both headers and meta tags. Restrictive directives combine if their values differ. Headers are useful for files and rules applied across a directory. Inspect both sources for conflicts.

## Verification

Use [Google Search Console's URL Inspection tool](https://support.google.com/webmasters/answer/9012289) to verify your robots meta tag:

1. Enter the URL
2. Check "Indexing allowed?" status
3. View the rendered HTML to confirm the tag appears

If a page appears despite an intended noindex, inspect the deployed response and applicable directives. Check URL Inspection's crawl and indexing information before assuming a delay. Google must crawl the page to read the directive; a recrawl request does not guarantee timing.

Monitor "Excluded by 'noindex' tag" reports in [Search Console](/learn-seo/nuxt/launch-and-listen/search-console). Sudden spikes indicate accidental noindexing of important pages.

## Checklist

::checklist{#nuxt-meta-robots-tags}
- Set `useSeoMeta({ robots: ... })`{lang="ts"} on pages that need noindex, nofollow, or snippet control
- Use noindex for exclusion; follow does not guarantee crawling or ranking-signal transfer
- Never combine robots.txt blocking with a noindex meta tag on the same page
- Use `data-nosnippet` for sections you want public but excluded from snippets
- Use X-Robots-Tag, not the meta tag, for non-HTML files like PDFs
- Verify tags render server-side with Search Console's URL Inspection tool
::

## Sitemap

See the full [sitemap](/sitemap.md) for all pages.
