---
title: "No meta description in <head> (seo/meta-description-missing)"
description: "seo/meta-description-missing: Without one, search engines and link unfurlers pick arbitrary page text for the snippet; agents also use it as the page summary."
canonical: https://void-design.vercel.app/rules/seo/meta-description-missing
lastModified: 2026-09-16
---

# No meta description in <head>

`seo/meta-description-missing` · severity **error** · category SEO · detected by `void seo` and `void audit`

## Why it matters

Without one, search engines and link unfurlers pick arbitrary page text for the snippet; agents also use it as the page summary.

## How to fix it

Set a unique description per page via metadata/generateMetadata.

## Example

```ts
export async function generateMetadata({ params }: Props): Promise<Metadata> {
  const { slug } = await params
  const post = await getPost(slug)
  return { title: post.title, description: post.description }
}
```

## References

- https://developers.google.com/search/docs/appearance/snippet

## More seo rules

`void seo` reports 60 rules in this category. What search engines need from the raw response: status codes, titles and descriptions in <head>, self-referencing canonicals, one h1, crawlable links, Open Graph, icons, robots.txt and a sitemap with real dates.

- `viewport` Viewport meta missing, not device-width, or blocks zoom — [seo/viewport](https://void-design.vercel.app/rules/seo/viewport)
- `charset` Character encoding not declared early — [seo/charset](https://void-design.vercel.app/rules/seo/charset)
- `title-missing` No single non-empty <title> in <head> — [seo/title-missing](https://void-design.vercel.app/rules/seo/title-missing)
- `title-length` Title length outside 10–60 characters, or keyword-stuffed — [seo/title-length](https://void-design.vercel.app/rules/seo/title-length)
- `meta-description-length` Meta description length outside 50–160 characters — [seo/meta-description-length](https://void-design.vercel.app/rules/seo/meta-description-length)
- `metadata-in-body` Crawler receives <title>/canonical/description inside <body> (Next.js streaming metadata) — [seo/metadata-in-body](https://void-design.vercel.app/rules/seo/metadata-in-body)
- `canonical-missing` No single rel=canonical in <head> — [seo/canonical-missing](https://void-design.vercel.app/rules/seo/canonical-missing)
- `canonical-invalid` Canonical URL is relative or contains a fragment — [seo/canonical-invalid](https://void-design.vercel.app/rules/seo/canonical-invalid)

Detected by `void seo` and `void audit`. Explain it in a terminal: `void rules seo/meta-description-missing`
