---
title: "Root layout metadata has no `metadataBase` (lint/missing-metadata-base)"
description: "lint/missing-metadata-base: Relative URLs in `openGraph.images`, `alternates.canonical` and file-based `opengraph-image` resolve against `metadataBase`."
canonical: https://void-design.vercel.app/rules/lint/missing-metadata-base
lastModified: 2026-09-16
---

# Root layout metadata has no `metadataBase`

`lint/missing-metadata-base` · severity **error** · category Lint · detected by `void lint` and `void audit`

## Why it matters

Relative URLs in `openGraph.images`, `alternates.canonical` and file-based `opengraph-image` resolve against `metadataBase`. Without it Next falls back to localhost/VERCEL_URL, so previews and canonicals point to the wrong host.

## How to fix it

Set `metadataBase: new URL(site.url)` in the root layout, with the production origin.

## Example

```ts
export const metadata: Metadata = {
  metadataBase: new URL('https://example.com'),
  title: { default: 'Acme', template: '%s — Acme' },
}
```

## References

- https://nextjs.org/docs/app/api-reference/functions/generate-metadata#metadatabase

## More lint rules

`void lint` reports 67 rules in this category. Static source checks with no browser: Tailwind v4 silent failures, Next.js 16 API traps, React render-body bugs, accessibility markup, SEO files and motion hygiene.

- `will-change-static` `will-change` applied statically to many elements — [lint/will-change-static](https://void-design.vercel.app/rules/lint/will-change-static)
- `z-index-soup` Many distinct z-index values — [lint/z-index-soup](https://void-design.vercel.app/rules/lint/z-index-soup)
- `hardcoded-colors` Hard-coded colors in components instead of tokens — [lint/hardcoded-colors](https://void-design.vercel.app/rules/lint/hardcoded-colors)
- `missing-metadata` Page has no `metadata` / `generateMetadata` and inherits only the root title — [lint/missing-metadata](https://void-design.vercel.app/rules/lint/missing-metadata)
- `canonical-in-root-layout` Canonical URL set in the root layout — [lint/canonical-in-root-layout](https://void-design.vercel.app/rules/lint/canonical-in-root-layout)
- `og-merge-drops-parent` Page `openGraph` replaces the layout's (shallow merge drops images/siteName) — [lint/og-merge-drops-parent](https://void-design.vercel.app/rules/lint/og-merge-drops-parent)
- `not-found-in-suspense` `notFound()`/`redirect()` inside a component rendered under `<Suspense>` — [lint/not-found-in-suspense](https://void-design.vercel.app/rules/lint/not-found-in-suspense)
- `missing-sitemap` No sitemap — [lint/missing-sitemap](https://void-design.vercel.app/rules/lint/missing-sitemap)

Detected by `void lint` and `void audit`. Explain it in a terminal: `void rules lint/missing-metadata-base`
