vercel/next.js · error · Error
metadataBase is not a valid URL
Error message
metadataBase is not a valid URL: ${metadataBase} What it means
Metadata validation in normalizeMetadataBase: the user-supplied metadataBase value is a string that the URL constructor cannot parse, so relative metadata URLs (canonical, openGraph, twitter images) cannot be resolved against it. The offending input is the metadataBase field of the route's metadata export.
Solutions
- Set metadataBase to a valid absolute URL (e.g. new URL('https://example.com')).
Defensive patterns
Strategy: validation
When it happens
Trigger: metadata.metadataBase is set to a value that is not a valid URL.
Common situations: A typo or missing protocol in metadataBase in layout metadata or next.config.
AI-assisted analysis of vercel/next.js@996f957c06 (2026-08-19).
Data as JSON: /api/errors/32ad0266508e9da0.
Report an issue: GitHub.
Appendix: source
Thrown at packages/next/src/lib/metadata/metadata-resolution-primitives.ts:155
return input.map((item) =>
convertUrlsToStrings(item)
) as WithStringifiedURLs<T>
} else if (input && typeof input === 'object') {
const result: Record<string, unknown> = {}
for (const [key, value] of Object.entries(input)) {
result[key] = convertUrlsToStrings(value)
}
return result as WithStringifiedURLs<T>
}
return input as WithStringifiedURLs<T>
}
function normalizeMetadataBase(metadataBase: string | URL | null): URL | null {
if (typeof metadataBase === 'string') {
try {
metadataBase = new URL(metadataBase)
} catch {
throw new Error(`metadataBase is not a valid URL: ${metadataBase}`)
}
}
return metadataBase
}
async function mergeStaticMetadata(
metadataBase: MetadataBaseURL,
source: Metadata | null,
target: ResolvedMetadata,
staticFilesMetadata: StaticMetadata,
metadataContext: MetadataContext,
titleTemplates: TitleTemplates,
leafSegmentStaticIcons: StaticIcons,
pathname: Promise<string>
): Promise<ResolvedMetadata> {
if (!staticFilesMetadata) return target
const { icon, apple, openGraph, twitter, manifest } = staticFilesMetadata
View on GitHub (pinned to 996f957c06)