Nuxt SEO Guide
Nuxt provides server-side rendering and meta tag management by default. Sitemap generation requires a module or your own implementation. 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
Nuxt SEO bundles sitemaps, robots.txt, OG images, Schema.org, SEO utilities, llms.txt, Markdown versions of each page, and skew protection under one typed config.
Prefer a modular approach? Install these individually instead:
Curriculum
New to Nuxt SEO? Start with Mastering Meta. It covers the fundamentals using useSeoMeta().
Need a quick audit? Use the SEO Checklist, a pre-launch and post-launch audit tool.
Mastering Meta
Control how your pages appear in search results and social feeds, using the type-safe useSeoMeta() composable and automated Open Graph generation.
| Guide | What You'll Learn |
|---|---|
| Titles | Title templates and truncation limits |
| Descriptions | Writing descriptions that earn clicks |
| Open Graph | Generated OG image templates |
| Schema.org | Building connected data graphs |
Controlling Crawlers
Define who can access your content, from Googlebot to AI scrapers.
| Guide | What You'll Learn |
|---|---|
| robots.txt | Blocking AI crawlers and managing crawl budget |
| Sitemaps | Dynamic sources and image sitemaps |
| Canonical URLs | Consolidating ranking signals |
Routes & Rendering
Move beyond a single SSR mode to route rules that pick the right rendering strategy per page.
| Guide | What You'll Learn |
|---|---|
| Hybrid Rendering | Mixing SSR, SSG, and ISR by route |
Launch & Listen
Deploy with confidence and monitor real-world performance.
| Guide | What You'll Learn |
|---|---|
| Core Web Vitals | Optimizing INP and LCP |
| Search Console | Verification and indexing debugging |
| SEO Monitoring | Tracking rank and site health |
Why Nuxt Handles SEO Well
<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
routeRulesto serve static content for marketing pages while keeping dashboards dynamic, all under one domain. - One hook system.
@nuxtjs/seowires into Nuxt's build and runtime hooks, including sitemap generation and runtime response headers.
Working outside Nuxt? The fundamentals (meta tags, rendering strategy, crawler control) still apply. See the Vue SEO guide for Vite SSR, VitePress, and plain Vue 3 setups.
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.
Pre-launch setup, post-launch verification, and ongoing monitoring. Interactive checklist with links to every guide.