All rules
critical
Rule: description-presentWeight: 5/100

Rule: description-present

The meta description is your page's sales pitch in search results. Without one, Google auto-generates a snippet from your page content — often a random paragraph that doesn't communicate your value proposition. This is a critical rule that blocks CI builds. Every indexable page must have a meta description.

Run the check
$ npx indxel check
Look for description-present in the output

What it checks

Indxel looks for a <meta name="description" content="..."> tag in the page's HTML head. The rule passes if the tag exists AND its content attribute contains at least one non-whitespace character. In Next.js, this comes from the description field in your metadata export or generateMetadata() return value.

Thresholds

PASS

Meta description tag exists with non-empty content

ERROR

Meta description is missing, has no content attribute, or content is empty/whitespace-only

Edge cases

1

A meta description with content=" " (spaces only) fails. It must contain visible text.

2

If you set description: '' (empty string) in Next.js metadata, Next.js may not render the meta tag at all. Indxel sees this as missing.

3

Pages that rely on layout.tsx for their description: if a page doesn't override the layout description, all pages in that layout share the same description. This passes description-present but creates duplicate description issues (not currently checked by Indxel).

4

HTML pages with multiple meta description tags: Indxel reads the first one. Google's behavior with duplicates is unpredictable — avoid it.

Configuration

indxel.config.ts
// indxel.config.ts
import { defineSEO } from "indxel";

export default defineSEO({
  rules: {
    "description-present": true, // enabled by default (critical)
  },
});

// Centralize descriptions with a metadata helper:
// src/lib/metadata.ts
export function generatePageMetadata({ title, description, path }) {
  return {
    title,
    description, // always required — enforced by TypeScript
    alternates: { canonical: `https://example.com${path}` },
  };
}

Frequently asked questions

Does Google always use my meta description?

No. Google rewrites descriptions about 60-70% of the time based on the search query. But having a well-written description increases the chance yours is used, and it controls what appears in social shares and messaging apps.

Should I write unique descriptions for every page?

Yes. Duplicate descriptions across pages waste an opportunity to target page-specific keywords and reduce click-through rates. For dynamic pages, use generateMetadata() to create descriptions from your data.

Is meta description a ranking factor?

Not directly. But a compelling description increases click-through rate (CTR), and CTR is a behavioral signal that can influence rankings over time. Think of the description as ad copy, not a ranking factor.

Related rules

description-length

optional — 8/100

og-description

optional — 4/100

title-present

critical — 5/100

Validate your SEO now

$npx indxel check
Get startedBrowse all rules
Indxel

SEO validation that runs in your terminal and blocks bad deploys.

GitHubnpm

Product

  • Documentation
  • Pricing
  • Plus Plan
  • CI/CD Guard
  • Indexation
  • Free Tools
  • Blog

Comparisons

  • vs Semrush
  • vs Ahrefs
  • vs Moz
  • vs Screaming Frog
  • All comparisons

Integrations

  • Vercel
  • GitHub Actions
  • Netlify
  • Docker
  • All integrations

Resources

  • Frameworks & use cases
  • Next.js
  • For freelancers
  • For agencies
  • SEO Glossary

Built with care. MIT Licensed.

PrivacyTermsLegalContact