---
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-07-16"
---

<key-takeaways>

- `noindex` prevents a page from being indexed; `nofollow` stops link equity from flowing through it
- `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
- Meta robots tags must be server-rendered; a tag added only client-side may not exist yet when a crawler reads the page

</key-takeaways>

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 block filtered pages from indexing, prevent duplicate content on pagination, or opt specific content out of search snippets and AI Overviews. 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()` 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>` 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`: prevent cached copies
- `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

Meta robots tags must be server-rendered. 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`. More specific tags override general ones.

## Noindex Follow vs Noindex Nofollow

Use `noindex, follow` when you want to block indexing but preserve link equity flow. The page won't rank, but links on it still count ([Google's robots meta tag docs](https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag)).

Use `noindex, nofollow` for pages with no valuable links: login forms, checkout steps, truly private content.

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

```ts [Noindex Nofollow - Block Everything]
// 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

Internal search results and filter combinations create [duplicate content](/learn-seo/nuxt/controlling-crawlers/duplicate-content). [Google recommends](https://developers.google.com/search/docs/specialty/ecommerce/pagination-and-incremental-page-loading) blocking these with noindex or robots.txt:

```ts [pages/search.vue]
useSeoMeta({
  robots: 'noindex, follow'
})
```

```ts [pages/products/[category].vue]
const { query } = useRoute()

useSeoMeta({
  robots: Object.keys(query).length > 0 ? 'noindex, follow' : 'index, follow'
})
```

You can combine this with [canonical tags](/learn-seo/nuxt/controlling-crawlers/canonical-urls) pointing to the main category page, but don't set both noindex and a canonical on the same page: [Google's John Mueller advises against it](https://www.searchenginejournal.com/canonical-and-noindex-at-same-time/528501/) since the two signals conflict.

### 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>` 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

Limit snippet length and prevent caching for dynamic user profiles:

```ts [pages/user/[id]/profile.vue]
useSeoMeta({
  robots: 'index, follow, noarchive, 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)):

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

X-Robots-Tag supports the same directives as the meta tag, so you only need one or the other. Setting both on the same resource is redundant rather than additive since it doesn't make crawlers follow your rules any more closely; the header is mainly useful for applying directives in bulk across a whole directory or file pattern via server configuration.

## 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 noindexed page still appears in search results, it hasn't been recrawled yet: depending on the page's importance, [it can take months](https://developers.google.com/search/docs/crawling-indexing/block-indexing) for Google to revisit and apply the directive. Request a recrawl via the URL Inspection tool.

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 id="nuxt-meta-robots-tags">

- Set `useSeoMeta({ robots: ... })` on pages that need noindex, nofollow, or snippet control
- Use `noindex, follow` to block indexing while keeping link equity; use `noindex, nofollow` for pages with no valuable links
- 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

</checklist>
