Vue SEO Guide

Complete Vue.js SEO resource. Meta tags, crawl control, SPA solutions, SSR frameworks, and performance monitoring—with Unhead code examples.
Harlan WiltonHarlan Wilton10 mins read Published Updated

Vue SPAs don't work with search engines by default. The <head> renders empty, crawlers see a blank page, and your content never gets indexed.

This guide covers everything you need for Vue SEO—from basic meta tags to SSR framework selection to production monitoring. All examples use Unhead, the Vue 3 head manager that replaced vue-meta.

Start Here

New to Vue SEO? Start with Mastering Meta. It covers the fundamentals: titles, descriptions, and social sharing tags with working code examples.

Need a quick audit? Use the Vue SEO Checklist—a pre-launch, post-launch, and ongoing monitoring checklist with links to detailed guides for every item.

Already know the basics? Jump to the section that matches your current problem.

Content Sections

Mastering Meta

Meta tags control how your pages appear in search results and social shares. Learn to set titles, descriptions, Open Graph tags, Twitter Cards, and structured data with Unhead.

GuideWhat You'll Learn
TitlesPage titles, title templates, character limits
DescriptionsMeta descriptions, CTR optimization
Social SharingOpen Graph, Twitter Cards, preview images
Schema.orgStructured data, JSON-LD, eligibility
Rich ResultsTesting tools, what still works after 2023 changes
Migrating from vue-metaSide-by-side syntax, breaking changes

Controlling Crawlers

Manage how search engines discover and index your pages. Configure robots.txt, sitemaps, canonical URLs, and handle redirects properly.

GuideWhat You'll Learn
robots.txtAllow/block crawlers, AI bot blocking
SitemapsXML sitemap generation, submission
Meta Tagsnoindex, nofollow, per-page control
Canonical URLsDuplicate content, parameter handling
Redirects301 vs 302, redirect chains
Duplicate ContentDetection, causes, fixes

SPA SEO

Single page applications have unique SEO challenges. Google can render JavaScript, but other crawlers can't. Learn when SSR is required and what alternatives exist.

GuideWhat You'll Learn
PrerenderingBuild-time HTML generation, vite-ssg
Dynamic RenderingServe different content to bots (deprecated but functional)
HydrationMismatch debugging, SEO implications

SSR Frameworks

Compare Vue server-side rendering options. Each framework has different strengths for SEO, performance, and developer experience.

GuideWhat You'll Learn
Nuxt vs QuasarFeature comparison, when to use each
Vite SSRCustom SSR setup, manual control
VitePressStatic sites, documentation, blogs

Routes & Rendering

URL structure affects rankings. Rendering mode affects indexing. This section covers both.

GuideWhat You'll Learn
URL StructureSlugs, hyphens, length, keywords
PaginationSelf-referencing canonicals, infinite scroll
Trailing SlashesConsistency, redirect configuration
Query ParametersFilter params, tracking params, canonicals
i18nHreflang, x-default, bidirectional links
404 PagesSoft 404s, proper status codes
Dynamic RoutesRoute params, per-route meta tags
Rendering ModesSSR vs SSG vs SPA comparison

Launch & Listen

Deploy your site and monitor its search performance. Set up tracking, debug indexing issues, and handle site migrations.

GuideWhat You'll Learn
Going LiveFirst deployment, SSR verification
Search ConsoleVerification, reports, URL inspection
Core Web VitalsLCP, INP, CLS optimization for Vue
Indexing Issues"Crawled not indexed" fixes
SEO MonitoringAnalytics, rank tracking, alerts
Site MigrationDomain moves, redirects, recovery
IndexNowInstant indexing for Bing/Yandex
DebuggingCommon Vue SEO issues, hydration errors

Quick Reference: SEO Checklist

The Vue SEO Checklist provides a structured audit path:

  • Pre-launch — SSR configured, meta tags set, URLs structured, crawlers controlled
  • Post-launch — Search Console verified, indexing confirmed, performance passing
  • Ongoing — Weekly GSC reviews, monthly monitoring, quarterly audits

Vue vs Nuxt

This guide covers plain Vue applications using Vue Router and Unhead. If you're using Nuxt, much of this is handled automatically.

Nuxt provides:

  • SSR by default
  • File-based routing with automatic meta tag handling
  • Nuxt SEO module for sitemaps, robots.txt, OG images
  • Built-in canonical URLs and sitemap generation

See the Nuxt SEO guide →

Why Vue SPAs Fail SEO

Vue SPAs render content client-side. The initial HTML looks like this:

<!DOCTYPE html>
<html>
<head>
  <!-- Empty - no meta tags -->
</head>
<body>
  <div id="app"></div>
  <script src="/app.js"></script>
</body>
</html>

Search engines need meta tags and content in the initial HTML. Google can execute JavaScript to render your page, but:

  • Rendering is queued separately from crawling
  • Other crawlers (Bing, social platforms) don't render JavaScript
  • Social preview cards (Twitter, Facebook, Slack) read initial HTML only
  • Performance suffers—users wait for JavaScript before seeing content

Solutions:

Common Mistakes

Using vue-meta in Vue 3 — vue-meta never shipped Vue 3 support. Use Unhead instead. Migration guide.

Skipping SSR verification — View Page Source on your deployed site. If meta tags are missing, crawlers see nothing.

Relative OG image URLs — Social platforms need absolute URLs (https://site.com/og.png), not relative paths (/og.png).

Template meta descriptions — "Welcome to {page}" descriptions hurt click-through rates. Write unique descriptions per page.

Ignoring Search Console — GSC shows exactly what Google sees. Check the Page Indexing report for excluded pages.

External Resources