Nuxt SEO Checklist

Complete checklist for Nuxt SEO—pre-launch setup, post-launch verification, and ongoing monitoring. Links to detailed guides for every step.
Harlan WiltonHarlan Wilton10 mins read Published

Nuxt handles most SEO by default with built-in SSR, but proper configuration ensures maximum visibility. This checklist covers pre-launch setup, post-launch verification, and ongoing monitoring.

Pre-Launch Checklist

SSR & Rendering

  • Rendering mode verified (SSR by default, configure routeRules for hybrid rendering if needed)
  • Route rules configured for special cases (SPA mode for authenticated routes, prerendering for static pages)
  • Hydration errors resolved (check browser console for mismatches)
  • "View Source" tested on deployed site (meta tags visible in raw HTML, not just rendered)

Meta Tags

URL Structure

  • URL structure uses hyphens (not underscores), lowercase paths, descriptive slugs
  • Trailing slashes handled consistently (configure trailingSlash in nuxt.config.ts)
  • Dynamic routes configured with unique meta per route param (use pages/[slug].vue pattern)
  • Query parameters excluded from indexing via canonicals (filter/sort/tracking params)
  • Pagination uses self-referencing canonicals (not rel=prev/next—deprecated)
  • 404 pages return proper 404 status via createError({ statusCode: 404 })

Crawler Control

  • robots.txt configured (via @nuxtjs/robots module or manual configuration)
  • XML sitemap generated (via @nuxtjs/sitemap module—under 50,000 URLs, updates dynamically)
  • Canonical URLs set on every page (self-referencing or pointing to preferred version)
  • Meta robots tags configured for noindex pages (staging, user profiles, duplicate content)
  • Redirects use 301 status codes via routeRules (avoid redirect chains)

Nuxt SEO Module

Consider installing Nuxt SEO for automatic configuration of all the above:

Nuxt SEO v3.3.0
2.1M
1.3K
The all-in-one module that brings it all together.

Individual modules if you prefer granular control:

Security

  • HTTPS configured with valid SSL certificate
  • Security headers set (CSP, X-Frame-Options, HSTS) without blocking crawlers
  • No sensitive data exposed in HTML source or robots.txt
  • NUXT_PUBLIC_SITE_URL environment variable set for production

Performance

  • Images optimized via @nuxt/image module (automatic lazy loading, responsive images, format conversion)
  • Critical CSS inlined automatically (Nuxt handles this by default)
  • JavaScript code-split by route (automatic in Nuxt)
  • CDN configured for static assets (/_nuxt/ directory)
  • Fonts preloaded (WOFF2 format, use link: [{ rel: 'preload' }] in nuxt.config.ts)

Post-Launch Checklist

Google Search Console

  • GSC property created and verified (DNS, meta tag, or HTML file method)
  • Sitemap submitted via GSC (check Sitemaps report for errors)
  • URL Inspection tool tested on key pages (check if indexable, view rendered HTML)
  • Page Indexing report reviewed (resolve "Crawled - currently not indexed" and "Discovered - currently not indexed")

Indexing Verification

  • Indexing status checked for important pages (site:yoursite.com in Google)
  • Rendered HTML verified (use URL Inspection tool—check if meta tags appear in rendered output)
  • Soft 404 errors resolved (404 pages must use createError({ statusCode: 404 }), not return 200)
  • No "Duplicate without user-selected canonical" errors in GSC
  • Orphan pages linked from sitemap or internal navigation

Performance & Core Web Vitals

  • Core Web Vitals passing thresholds (LCP ≤2.5s, INP ≤200ms, CLS ≤0.1)
  • Mobile-first indexing verified (use Mobile-Friendly Test)
  • Page Speed Insights run on key pages (address blocking resources, unused CSS/JS)
  • Real user metrics monitored via web-vitals library or RUM tool

Social Sharing

  • OG images tested in Facebook Debugger (clear cache if needed)
  • Twitter Cards validated (compose tweet without posting to preview card)
  • Slack link previews tested (OG tags control Slack unfurls)
  • LinkedIn share tested (uses OG tags, sometimes caches aggressively)

Analytics

  • Analytics configured (GA4, Plausible, Fathom, or Umami)
  • SPA-style navigation tracking configured if using routeRules with client-side routing
  • Search terms tracking enabled (Google Search Console > Performance report)
  • Goals/conversions tracked (signups, purchases, downloads)

Ongoing Monitoring

Weekly Tasks

  • GSC Performance report reviewed (track impressions, clicks, CTR, position)
  • Page Indexing report checked (resolve new indexing issues)
  • Core Web Vitals monitored (check for regressions after deploys)
  • Broken links scanned (use Link Checker or Screaming Frog)

Monthly Tasks

  • SEO monitoring tools reviewed (Ahrefs, SEMrush, or free alternatives)
  • Competitor rankings tracked (identify keyword gaps and opportunities)
  • Search rankings monitored for target keywords (track position changes)
  • Backlink profile reviewed (identify new links, lost links, disavow spam if needed)
  • Content gaps identified (check GSC for queries where you rank #5-#20, optimize pages)

Quarterly Tasks

  • Full technical SEO audit (crawl site with Screaming Frog or Sitebulb)
  • Sitemap reviewed for bloat (remove low-value pages, add new pages)
  • Redirect chains audited (flatten chains via routeRules, remove unnecessary redirects after 1 year)
  • Structured data updated for deprecated types (Google removes schema types periodically)
  • Canonical URL configuration verified (GSC shows user-declared vs Google-selected canonical)

After Major Changes

  • Site migration checklist followed if domain or URL structure changed
  • IndexNow or URL submission used for urgent updates (new pages, content changes)
  • Redirects tested after URL structure changes (301s in routeRules, no 404s)
  • GSC URL Inspection re-run on changed pages (request indexing for critical updates)
  • Search rankings monitored weekly for 60 days post-migration (track recovery timeline)

Common Mistakes

Not setting NUXT_PUBLIC_SITE_URL - Absolute URLs in sitemaps and canonicals require this environment variable in production.

Generic meta descriptions - "Welcome to page" template descriptions hurt CTR. Write unique descriptions per route.

Ignoring GSC warnings - Page Indexing report shows why pages excluded. 67.6% of sites have duplicate content issues.

Soft 404s - 404 pages must use createError({ statusCode: 404 }), not just display "Page not found" with 200 status.

Redirect chains - A→B→C dilutes authority. Flatten to A→C in routeRules after fixing the root cause.

Forgetting mobile - Google uses mobile-first indexing. Desktop-only testing misses most issues.

Not monitoring CWV - 53% of sites fail Core Web Vitals. Poor metrics tank rankings in competitive queries.

Skipping prerendering for static routes - Use routeRules: { '/blog/**': { prerender: true } } for better performance and faster indexing.

Tools Referenced

Next Steps

Start with Mastering Meta if you haven't configured meta tags yet.

Already launched? Check Launch and Listen for post-launch monitoring.

Want automated SEO? Install Nuxt SEO for zero-config meta tags, sitemaps, robots.txt, and OG images.