useRobotsRule() · Nuxt Robots · Nuxt SEO

[NuxtSEO](https://nuxtseo.com/ "Home")

- [Modules](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [Tools](https://nuxtseo.com/tools)
- [Pro](https://nuxtseo.com/pro)
- [Learn SEO](https://nuxtseo.com/learn-seo/nuxt) [Releases](https://nuxtseo.com/releases)

[1.4K](https://github.com/harlan-zw/nuxt-seo)

[Nuxt SEO on GitHub](https://github.com/harlan-zw/nuxt-seo)

[User Guides](https://nuxtseo.com/docs/robots/getting-started/introduction)

[API](https://nuxtseo.com/docs/robots/api/use-robots-rule)

[Releases](https://nuxtseo.com/docs/robots/releases/v6)

Robots

- [Switch to Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)
- [Switch to Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [Switch to Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)
- [Switch to OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)
- [Switch to Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
- [Switch to Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)
- [Switch to SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)
- [Switch to Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)
- [Switch to Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)
- [Switch to AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)

Search…```k`` /`

v6.0.6

- Playgrounds
- [Discord Support](https://discord.com/invite/275MBUBvgP)

### Nuxt API

- [`useRobotsRule()`](https://nuxtseo.com/docs/robots/api/use-robots-rule)
- [`useBotDetection()`](https://nuxtseo.com/docs/robots/api/use-bot-detection)
- [nuxt.config.ts](https://nuxtseo.com/docs/robots/api/config)
- [Nuxt Hooks](https://nuxtseo.com/docs/robots/api/nuxt-hooks)

### Nitro API

- [`getPathRobotConfig()`](https://nuxtseo.com/docs/robots/nitro-api/get-path-robot-config)
- [`getSiteRobotConfig()`](https://nuxtseo.com/docs/robots/nitro-api/get-site-robot-config)
- [`getBotDetection()`](https://nuxtseo.com/docs/robots/nitro-api/get-bot-detection)
- [Nitro Hooks](https://nuxtseo.com/docs/robots/nitro-api/nitro-hooks)

Nuxt API

# useRobotsRule()

[Copy for LLMs](https://nuxtseo.com/docs/robots/api/use-robots-rule.md)

## [Introduction](#introduction)

**Type:** `function useRobotsRule(rule?: MaybeRef<boolean | string | Partial<RobotDirectives>>): Ref<boolean | string | Partial<RobotDirectives> | undefined>`

View and control the robots rule using a simple reactivity API. Supports standard directives (index, noindex, follow, nofollow) and non-standard directives like noai and noimageai.

It's recommended to use this composable when you need to dynamically change the robots rule at runtime. For example when a user changes their profile from private to public.

Note: This does not modify the `/robots.txt` file, only the `X-Robots-Tag` header and the `robots` meta tag.

### [Server Side Behavior](#server-side-behavior)

In a server-side context, this can be used to change the rule used for `X-Robots-Tag` header and the `robots` meta tag.

Providing a `boolean` will either enable or disable indexing for the current path using the default rules.

```
import { useRobotsRule } from '#imports'

const rule = useRobotsRule(true) // modifies the rules
```

### [Client Side Behavior](#client-side-behavior)

In a client-side context you can only read the value of the rule, modifying it will have no effect. This is due to robots only respecting the initial SSR response.

```
import { useRobotsRule } from '#imports'

const rule = useRobotsRule(true) // does not do anything, just returns the value
```

## [Available Directives](#available-directives)

When using the object syntax, you can use the following directives:

### [Standard Directives](#standard-directives)

- `index`: Allow search engines to index the page
- `noindex`: Prevent search engines from indexing the page
- `follow`: Allow search engines to follow links on the page
- `nofollow`: Prevent search engines from following links on the page
- `none`: Equivalent to `noindex, nofollow`
- `all`: Equivalent to `index, follow`

### [Non-Standard Directives](#non-standard-directives)

- `noai`: Request AI crawlers not to use content for training
- `noimageai`: Request AI crawlers not to use images for training

### [Preview Control Directives](#preview-control-directives)

- `max-image-preview`: Controls image preview size (`'none'`, `'standard'`, or `'large'`)
- `max-snippet`: Controls text snippet length in characters (use `-1` for no limit)
- `max-video-preview`: Controls video preview length in seconds (use `-1` for no limit)

## [Usage](#usage)

**Accessing the rule:**

```
import { useRobotsRule } from '#imports'

const rule = useRobotsRule()
// Ref<'noindex, nofollow'>
```

**Setting the rule - argument:**

```
import { useRobotsRule } from '#imports'

useRobotsRule('index, nofollow')
// Ref<'index, nofollow'>
useRobotsRule(false)
// Ref<'noindex, nofollow'>
```

**Setting the rule - reactive:**

```
import { useRobotsRule } from '#imports'

const rule = useRobotsRule()
rule.value = 'index, nofollow'
// Ref<'index, nofollow'>
```

**Setting the rule - object syntax:**

```
import { useRobotsRule } from '#imports'

// Using object syntax for directives
useRobotsRule({ noindex: true, nofollow: true })
// Ref<'noindex, nofollow'>

// Combining standard and non-standard directives
useRobotsRule({ index: true, noai: true, noimageai: true })
// Ref<'index, noai, noimageai'>

// Only true values are included
useRobotsRule({ index: true, follow: false, noai: true })
// Ref<'index, noai'>

// Empty object defaults to enabled value
useRobotsRule({})
// Ref<'index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1'>
```

__Setting the rule - with max-_ directives:_*

```
import { useRobotsRule } from '#imports'

// Control search result preview settings
useRobotsRule({
  'index': true,
  'max-image-preview': 'large', // 'none', 'standard', or 'large'
  'max-snippet': 150, // number of characters
  'max-video-preview': 30 // seconds of video preview
})
// Ref<'index, max-image-preview:large, max-snippet:150, max-video-preview:30'>

// Disable all previews
useRobotsRule({
  'index': true,
  'max-image-preview': 'none',
  'max-snippet': 0,
  'max-video-preview': 0
})
// Ref<'index, max-image-preview:none, max-snippet:0, max-video-preview:0'>
```

[Edit this page](https://github.com/nuxt-modules/robots/edit/main/docs/content/3.api/0.use-robots-rule.md)

[Markdown For LLMs](https://nuxtseo.com/docs/robots/api/use-robots-rule.md)

Did this page help you?

[Nuxt I18n How to use the Nuxt Robots module with Nuxt I18n.](https://nuxtseo.com/docs/robots/advanced/i18n) [Nuxt Config Learn how to configure Nuxt Robots using nuxt.config.](https://nuxtseo.com/docs/robots/api/config)

On this page

- [Introduction](#introduction)
- [Available Directives](#available-directives)
- [Usage](#usage)

[GitHub](https://github.com/harlan-zw/nuxt-seo) [ Discord](https://discord.com/invite/275MBUBvgP)

### [NuxtSEO](https://nuxtseo.com/ "Home")

- [Getting Started](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [MCP](https://nuxtseo.com/docs/nuxt-seo/guides/mcp)

Modules

- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)

### [NuxtSEO Pro](https://nuxtseo.com/pro "Home")

- [Getting Started](https://nuxtseo.com/pro)
- [Dashboard](https://nuxtseo.com/pro/dashboard)
- [Pro MCP](https://nuxtseo.com/docs/nuxt-seo-pro/mcp/installation)

### [Learn SEO](https://nuxtseo.com/learn-seo "Learn SEO")

Nuxt

- [Mastering Meta](https://nuxtseo.com/learn-seo/nuxt/mastering-meta)
- [Controlling Crawlers](https://nuxtseo.com/learn-seo/nuxt/controlling-crawlers)
- [Launch & Listen](https://nuxtseo.com/learn-seo/nuxt/launch-and-listen)
- [Routes & Rendering](https://nuxtseo.com/learn-seo/nuxt/routes-and-rendering)
- [Staying Secure](https://nuxtseo.com/learn-seo/nuxt/routes-and-rendering/security)

Vue

- [Vue SEO Guide](https://nuxtseo.com/learn-seo/vue)
- [Mastering Meta](https://nuxtseo.com/learn-seo/vue/mastering-meta)
- [Controlling Crawlers](https://nuxtseo.com/learn-seo/vue/controlling-crawlers)
- [SPA SEO](https://nuxtseo.com/learn-seo/vue/spa)
- [SSR Frameworks](https://nuxtseo.com/learn-seo/vue/ssr-frameworks)
- [SEO Checklist](https://nuxtseo.com/learn-seo/checklist)
- [Pre-Launch Warmup](https://nuxtseo.com/learn-seo/pre-launch-warmup)
- [Backlinks & Authority](https://nuxtseo.com/learn-seo/backlinks)

### [Tools](https://nuxtseo.com/tools "SEO Tools")

- [Social Share Debugger](https://nuxtseo.com/tools/social-share-debugger)
- [Robots.txt Generator](https://nuxtseo.com/tools/robots-txt-generator)
- [Meta Tag Checker](https://nuxtseo.com/tools/meta-tag-checker)
- [HTML to Markdown](https://nuxtseo.com/tools/html-to-markdown)
- [XML Sitemap Validator](https://nuxtseo.com/tools/xml-sitemap-validator)
- [Schema.org Validator](https://nuxtseo.com/tools/schema-validator)
- [Keyword Idea Generator](https://nuxtseo.com/tools/keyword-generator)
- [Keyword Research](https://nuxtseo.com/tools/keyword-research)
- [SERP Analyzer](https://nuxtseo.com/tools/serp-analyzer)
- [Domain Rankings](https://nuxtseo.com/tools/domain-rankings)

Copyright © 2023-2026 Harlan Wilton - [MIT License](https://github.com/harlan-zw/nuxt-seo/blob/main/license) · [mdream](https://mdream.dev)