---
title: "Nuxt SEO Guide"
description: "[object Object]"
canonical_url: "https://nuxtseo.com/learn-seo/nuxt"
last_updated: "2026-07-23T22:34:37.725Z"
---

Nuxt handles most SEO fundamentals by default: server-side rendering, sitemap generation, and meta tag management all work by default. The `@nuxtjs/seo` module adds the rest: robots.txt control, Schema.org structured data, and automated Open Graph images, all through typed composables built on Unhead.

This guide covers meta tags, crawler control, rendering strategy, and what to check once you're live.

## Install the Module

The official Nuxt SEO module bundles the ecosystem: sitemaps, robots.txt, OG images, schema.org, and the rest of the utilities, with a single typed config.

<module-card slug="nuxt-seo">



</module-card>

Prefer a modular approach? Install these individually instead:

<div className="grid,grid-cols-2,gap-4">
<module-card slug="sitemap">



</module-card>

<module-card slug="robots">



</module-card>

<module-card slug="og-image">



</module-card>

<module-card slug="schema-org">



</module-card>

<module-card slug="seo-utils">



</module-card>

<module-card slug="site-config">



</module-card>
</div>

## Curriculum

**New to Nuxt SEO?** Start with [Mastering Meta](/learn-seo/nuxt/mastering-meta). It covers the fundamentals using `useSeoMeta()`.

**Need a quick audit?** Use the [SEO Checklist](/learn-seo/checklist), a pre-launch and post-launch audit tool.

### [Mastering Meta](/learn-seo/nuxt/mastering-meta)

Control how your pages appear in search results and social feeds, using the type-safe `useSeoMeta()` composable and automated Open Graph generation.

<table>
<thead>
  <tr>
    <th>
      Guide
    </th>
    
    <th>
      What You'll Learn
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <a href="/learn-seo/nuxt/mastering-meta/titles">
        Titles
      </a>
    </td>
    
    <td>
      Title templates and truncation limits
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="/learn-seo/nuxt/mastering-meta/descriptions">
        Descriptions
      </a>
    </td>
    
    <td>
      Writing descriptions that earn clicks
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="/learn-seo/nuxt/mastering-meta/open-graph">
        Open Graph
      </a>
    </td>
    
    <td>
      Zero-runtime OG image generation
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="/learn-seo/nuxt/mastering-meta/schema-org">
        Schema.org
      </a>
    </td>
    
    <td>
      Building connected data graphs
    </td>
  </tr>
</tbody>
</table>

### [Controlling Crawlers](/learn-seo/nuxt/controlling-crawlers)

Define who can access your content, from Googlebot to AI scrapers.

<table>
<thead>
  <tr>
    <th>
      Guide
    </th>
    
    <th>
      What You'll Learn
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <a href="/learn-seo/nuxt/controlling-crawlers/robots-txt">
        robots.txt
      </a>
    </td>
    
    <td>
      Blocking AI crawlers and managing crawl budget
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="/learn-seo/nuxt/controlling-crawlers/sitemaps">
        Sitemaps
      </a>
    </td>
    
    <td>
      Dynamic sources and image sitemaps
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="/learn-seo/nuxt/controlling-crawlers/canonical-urls">
        Canonical URLs
      </a>
    </td>
    
    <td>
      Consolidating ranking signals
    </td>
  </tr>
</tbody>
</table>

### [Routes & Rendering](/learn-seo/nuxt/routes-and-rendering)

Move beyond a single SSR mode to route rules that pick the right rendering strategy per page.

<table>
<thead>
  <tr>
    <th>
      Guide
    </th>
    
    <th>
      What You'll Learn
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <a href="/learn-seo/nuxt/routes-and-rendering/rendering">
        Hybrid Rendering
      </a>
    </td>
    
    <td>
      Mixing SSR, SSG, and ISR by route
    </td>
  </tr>
</tbody>
</table>

### [Launch & Listen](/learn-seo/nuxt/launch-and-listen)

Deploy with confidence and monitor real-world performance.

<table>
<thead>
  <tr>
    <th>
      Guide
    </th>
    
    <th>
      What You'll Learn
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <a href="/learn-seo/nuxt/launch-and-listen/core-web-vitals">
        Core Web Vitals
      </a>
    </td>
    
    <td>
      Optimizing INP and LCP
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="/learn-seo/nuxt/launch-and-listen/search-console">
        Search Console
      </a>
    </td>
    
    <td>
      Verification and indexing debugging
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="/learn-seo/nuxt/launch-and-listen/seo-monitoring">
        SEO Monitoring
      </a>
    </td>
    
    <td>
      Tracking rank and site health
    </td>
  </tr>
</tbody>
</table>

## Why Nuxt Handles SEO Well

```vue
<script setup lang="ts">
// Fully typed, auto-imported, and SSR-ready
useSeoMeta({
  title: 'Nuxt SEO Guide',
  description: 'The complete guide to Nuxt SEO.',
  ogImage: 'https://nuxtseo.com/og/guide.png',
  twitterCard: 'summary_large_image',
})
</script>
```

- **Server-rendered by default.** SSR ships real HTML in the initial response, which is what crawlers that don't execute JavaScript need to see your content at all.
- **Route-level rendering control.** Use `routeRules` to serve static content for marketing pages while keeping dashboards dynamic, all under one domain.
- **One hook system.** `@nuxtjs/seo` wires into Nuxt's build and runtime hooks, from build-time sitemap generation to runtime header injection.

## Common Mistakes

**Reaching for useHead() for basic meta tags**: `useSeoMeta()` gives you flatter, type-safe syntax for the common SEO tags; save `useHead()` for cases it doesn't cover.

**Ignoring AI crawlers**: GPTBot and other LLM scrapers read your `robots.txt` like any other bot. Decide what to allow instead of leaving the default wide open.

**Skipping route rules**: Serving every route through the same rendering mode wastes edge caching that `routeRules` gives you for free on static content.
