Run a free Nuxt SEO audit. Catch missing SEO modules, inconsistent SSR meta tags, sitemap gaps, AI crawler blocks, and schema issues across your Vue.js site.
Run Free Audit →No credit card required · Results in under 2 minutes
Nuxt's server-side rendering, auto-imports, and module ecosystem make it one of the most capable Vue.js frameworks for building SEO-friendly web applications. But "capable" is not the same as "configured." The SEO module, sitemap module, OG image generation, and robots configuration are all opt-in. A freshly scaffolded Nuxt 3 project has none of them. Add Nuxt's hybrid rendering modes — where some routes are SSR, others SSG, and others client-side — and you have a configuration surface large enough that critical SEO signals can fall through the cracks between rendering modes.
seo.yatna.ai crawls your Nuxt site the way Google and AI assistants do — fetching server-rendered HTML, parsing JSON-LD, checking meta tag consistency across routes, and scoring across 7 weighted categories. The result is a complete picture of where your Nuxt configuration is helping or hurting your organic visibility.
Nuxt SEO module not installed — Packages like nuxt-seo-kit or @nuxtjs/seo bundle the canonical, meta, and structured data configuration that Nuxt doesn't provide natively. Without them, developers must manage SEO head configuration manually across every page component — and inevitably miss pages. The audit checks for module presence and flags pages where SEO head data is missing or inconsistent.
robots.txt module not configured for AI crawlers — The @nuxtjs/robots module generates your robots.txt from a config object in nuxt.config.ts. Even when installed, teams typically configure only Googlebot and * rules, leaving GPTBot, ClaudeBot, PerplexityBot, and Amazonbot without explicit directives. As AI-generated search results become a larger source of traffic, being absent from AI training data is a growing disadvantage.
SSR/SSG hybrid rendering causing inconsistent meta tag rendering — Nuxt's routeRules allows you to set different rendering modes per route. A common pattern: marketing pages as SSG, application pages as SSR, admin routes as client-side only. The risk: meta tags configured in useHead() may not appear in server-rendered HTML on CSR routes — meaning those pages have no title or description visible to crawlers.
Sitemap module not generating dynamic route entries — @nuxtjs/sitemap generates sitemaps from your Nuxt routes, but dynamic routes (e.g., /blog/[slug]) require explicit data sources to enumerate all possible values. Without configuring sources or urls in the sitemap module config, dynamic content pages are excluded from the sitemap even if they're accessible via inbound links.
OG image generation requires separate @nuxtjs/og-image module — Nuxt has no built-in OG image generation. Without the @nuxtjs/og-image module or a custom API endpoint, every page either shares a static OG image or has none at all. Social shares and AI snippet previews default to a blank or generic image — undermining click-through from social and AI-generated content cards.
Canonical tags missing on locale-specific routes — Nuxt sites using @nuxtjs/i18n generate locale-prefixed URLs (e.g., /en/about, /fr/about). Without explicit canonical configuration, these routes may lack canonical tags entirely, or the canonical may point to the wrong locale variant — causing duplicate content issues across your international URL structure.
Vue component hydration causing LCP delays — On SSR routes, Nuxt serves pre-rendered HTML that hydrates on the client. If above-fold content is inside a heavy Vue component that takes time to hydrate, the browser may repaint it during hydration — contributing to CLS and delaying the LCP event beyond Google's scoring threshold.
JSON-LD schema not added to individual page components — useHead() in Nuxt supports inline JSON-LD via the script property, but it requires explicit addition to each page or layout component. Most Nuxt sites in production have no JSON-LD schema at all, or have it only on the homepage via a global layout — missing Article, Product, FAQ, and BreadcrumbList opportunities on inner pages.
No llms.txt — llms.txt is an emerging standard that tells AI assistants how to represent your site accurately. Nuxt has no native mechanism to serve this file. Without a custom server route or static file in /public/llms.txt, AI assistants have no structured signal for how to describe your application — and may describe it based on incomplete crawled content.
<NuxtImg> requires explicit width/height — Nuxt's image optimization component <NuxtImg> from @nuxt/image requires explicit width and height props to generate the correct srcset and avoid layout shift. Projects that migrate from plain <img> tags to <NuxtImg> without adding these attributes introduce new LCP and CLS regressions in the process.
seo.yatna.ai scores your Nuxt site across 7 weighted categories:
robots.txt for GPTBot/ClaudeBot, llms.txt presence, schema structured for AI citationA typical Nuxt 3 site audited on seo.yatna.ai returns results like this:
| Category | Score | Key Finding |
|---|---|---|
| E-E-A-T | 50/100 | No author schema on blog post pages |
| Technical SEO | 64/100 | Dynamic routes missing from sitemap |
| On-Page SEO | 68/100 | CSR routes missing meta description |
| Schema | 30/100 | JSON-LD only in root layout, not pages |
| Performance | 70/100 | NuxtImg missing width/height on 8 images |
| AI Readiness | 18/100 | No AI crawler directives; no llms.txt |
| Images | 62/100 | 8 images missing explicit dimensions |
| Overall | 55/100 | 20 actionable issues found |
Each finding links to the specific URL where the issue was detected, with configuration-level fixes referencing the correct Nuxt module and nuxt.config.ts options.
Does this audit work with Nuxt 2 as well as Nuxt 3? Yes. seo.yatna.ai crawls rendered HTML output, not your source code. It evaluates what Google and AI crawlers actually receive — which applies equally to Nuxt 2 and Nuxt 3 deployments.
How do I fix the SSR/CSR rendering inconsistency for meta tags?
The safest approach is to use useServerSeoMeta() for any routes that must expose meta tags to crawlers. This ensures the meta tags appear in server-rendered HTML regardless of the route's rendering mode. Our audit flags which specific routes have this problem.
My Nuxt site uses @nuxtjs/i18n. Will the audit check all locale routes?
The audit crawls all URLs it discovers from your sitemap and internal links. If your @nuxtjs/sitemap is configured to include locale variants, they'll be audited. If not, the audit will flag the missing sitemap entries as a finding.
Is AI readiness important for a Nuxt application? Yes, especially if your Nuxt site is a marketing or content site rather than a pure web app. AI assistants are increasingly used to find software tools, services, and resources. If GPTBot and ClaudeBot can't crawl your site, you're invisible in AI-generated recommendations.
Nuxt's rendering capabilities give you all the tools to build a highly SEO-optimized site. The audit shows you exactly which modules to install and which configuration to add to close the gap between capability and reality.
Related reading:
7 AI agents. 7 audit categories. One score. Free for your first audit.
Run Free Audit →