enabled: boolean
- Default:
true
Conditionally toggle the module.
debug: boolean
- Default:
false
Enables debug logs.
canonicalQueryWhitelist: string[]
- Default:
['page', 'sort', 'filter', 'search', 'q', 'category', 'tag']
When set, only these query parameters are included in the canonical URL. All other query parameters are stripped.
canonicalLowercase: boolean
- Default:
true
When enabled, the canonical URL will be lowercased. Recommended to keep on for consistency.
It also lowercases og:url, useShareLinks() URLs, and the Schema.org BreadcrumbList item URLs. Breadcrumb to links keep their case.
redirectToCanonicalSiteUrl: boolean
- Default:
false
When enabled, it will redirect any request to the canonical domain (site url) using a 301 redirect on non-dev environments.
E.g., if the site url is www.example.com and the user visits example.com,
they will be redirected to www.example.com.
This is useful for SEO as it prevents duplicate content and consolidates page rank.
redirects: Redirects
- Default:
undefined
Old URLs keyed by path, without app.baseURL. A trailing /** matches the path and every path below it.
- A moved URL sets
to,addedAt, and optionallystatusCode(301by default, or308). - A gone URL sets
statusCode(410or404) andaddedAt. It has noto. - Both accept
reviewedAtand a privatereason.
export default defineNuxtConfig({
seo: {
redirects: {
'/blog/old-post': { to: '/blog/new-post', addedAt: '2026-10-13' },
'/spring-sale': { statusCode: 410, addedAt: '2026-10-13', reason: 'The sale ended.' },
},
},
})redirectReviewAfterDays: number | false
- Default:
365
The number of days until nuxt dev and nuxt build list an entry for review.
The count starts at the later of addedAt and reviewedAt.
To turn off the review, set false. No entry expires on its own.
automaticDefaults: boolean
- Default:
true
Will set up a number of defaults for meta tags and Schema.org, if the modules and config are available.
mergeWithSiteConfig: boolean
- Default:
true
Injects site config into the useHead composable such as setting the title template and template params like %siteName.
fallbackTitle: boolean
- Default:
true
Will ensure a title is always set by providing a fallback title based on the casing of the last slug segment.
metaDataFiles: boolean
- Default:
true
Whether to use the files in the public directory to infer tags such as favicon, apple-touch-icon, and open graph images.
automaticOgAndTwitterTags: boolean
- Default:
true
Whether to infer head data from the current input to fill in the gaps.
For example:
- If you supply a title, this will automatically add an og:title.
- If you provide an og:image, it will automatically add a twitter:image.
automaticTwitterTags: boolean
- Default:
true
Whether to infer Twitter metadata from Open Graph metadata.
Set this to false to keep Open Graph inference without adding twitter:card.
tagPriority: number | 'critical' | 'high' | 'low' | \before:${string}` | `after:${string}``
- Default:
'low'
Sets the tagPriority for SEO and Open Graph meta tags generated by this module. The default 'low' ensures module tags act as fallbacks that page-level useSeoMeta() calls can override. Use a numeric value or 'critical'/'high' to place tags earlier in the <head> (useful for OG crawlers with byte limits).
Route rule head and seoMeta do not use this option. They always override app.head and seo.meta, and a page-level call always overrides them.
minify: boolean | { build?: boolean, runtime?: boolean }
- Default:
{ build: true, runtime: false }
Minifies inline <script> and <style> tags in SSR responses. Both modes can be toggled independently.
Build mode (build): Minifies static app.head JavaScript and CSS with Rolldown/esbuild and lightningcss. Compacts JSON and CSS in prerendered HTML. Preserves dynamic JavaScript and custom script types.
Runtime mode (runtime): Compacts JSON scripts and inline CSS per request via an Unhead ssr:render plugin. Preserves dynamic JavaScript and custom script types.
seo: { minify: { build: true, runtime: false } }seo: { minify: true }seo: { minify: { runtime: true, build: false } }JSON script types (application/ld+json, application/json) are minified via JSON round-tripping. importmap and speculationrules types are left untouched. Only active in production builds.
treeShakeUseSeoMeta: boolean
- Default:
true
Attempts to treeshake the useSeoMeta function. Can save around 5kb in the client bundle.
extendRouteRules: boolean
- Default:
true
Adds head and seoMeta to the route rules and app config.
fixRequiredAbsoluteMetaTagsLinks: boolean
- Default:
true
Tries to convert relative image paths to absolute paths in meta tags.
extendNuxtConfigAppHeadSeoMeta: boolean
- Default:
true
Extends app.head with the seoMeta key.
extendNuxtConfigAppHeadTypes: boolean
- Default:
true
Augments the head schema with /public files making it easier to reference them in the head.
meta: MetaFlatSerializable
- Default:
{}
The SEO meta object to be used as site-wide defaults. Takes the same input as useSeoMeta(). See the Nuxt Config SEO Meta guide for details.
setupNuxtConfigAppHeadWithMoreDefaults: boolean
- Default:
true
Sets up additional default head values in your nuxt.config app.head section.