<meta name="description"> doesn’t directly affect rankings. It affects CTR — the rate at which users click your result over the one above or below it. CTR feeds back into ranking. So it matters, indirectly but reliably.
Google rewrites the SERP description on roughly 60% of queries based on the searcher’s intent. The 40% it keeps is your description verbatim. Write that 40% well.
How to detect it
curl -s https://example.com/some/page \
| grep -oE '<meta[^>]*name="description"[^>]*>'
Empty output, an empty content="", or a placeholder like “Acme is a software company” means there’s nothing useful for Google to display.
In Google Search Console, click into a query in Performance → look at the example SERP snippet. If the description doesn’t match what you wrote, Google rewrote it — usually because what you wrote didn’t answer the query.
What a good description looks like
- Length: ~140–160 characters. Google truncates mobile descriptions around 120 characters, desktop around 158.
- Includes the page’s primary keyword once, naturally, ideally in the first sentence.
- Implies a benefit or differentiator — what does the visitor get by clicking?
- Avoids quotes and pipes — Google strips them.
- Stable across crawls — don’t include prices, dates, or counts that change.
Examples:
- Bad:
Acme — the best project management software. Try our 14-day free trial today!(marketing voice, no specificity) - Good:
Project management built for engineering teams: GitHub-native PRs, Slack-aware standups, no Jira-style configuration. 14-day trial, no credit card.(specific, differentiator visible)
The fix
Universal HTML
<head>
<meta name="description" content="Project management for engineering teams: GitHub-native PRs, Slack-aware standups, no Jira-style config. 14-day trial." />
</head>
One per page, inside <head>. Multiple meta description tags are picked unpredictably; keep it to one.
WordPress (Yoast / Rank Math)
Both plugins show a character counter and a real SERP preview as you write. Use them per post; don’t rely on auto-generated fallbacks for important pages.
To set a sitewide template (used when per-post description is empty):
- Yoast → Search Appearance → Content types → Description
- Rank Math → Titles & Meta → Posts → Description format
For category pages, set a per-category description in the taxonomy editor — auto-generated category descriptions are almost always bad.
Shopify
Set per-page in Online Store → Pages → SEO → Meta description. For products, the field is on the product page under “Search engine listing.” If you leave it blank, Shopify falls back to the first ~160 characters of the product description, which is rarely written for SERP intent.
Next.js (App Router)
Set via metadata API:
// app/blog/[slug]/page.tsx
export async function generateMetadata({
params,
}: {
params: { slug: string };
}): Promise<Metadata> {
const post = await getPost(params.slug);
return {
description: post.excerpt, // a writer-curated excerpt, not a auto-truncated body
};
}
If you fall back to a body-text excerpt, generate it from a writer-edited “excerpt” or “summary” field — auto-truncating the first paragraph rarely yields a description that reads well.
Pitfalls
Don’t auto-generate descriptions from the first paragraph. First paragraphs almost always start with context, not the value prop. Write the description separately.
Don’t keyword-stuff. Google has been rewriting stuffed descriptions for over a decade. “Project management software, project management tool, project planning software, project tracker” is worse than one good sentence.
Don’t write the same description for every page. Sitewide fallback descriptions hurt CTR sitewide. If the page is important enough to be indexed, it’s important enough for its own description.
Don’t include the current date or year. A description that says “2024” looks stale in 2026. Either omit the year or rotate it via the template on schedule.
Don’t worry about long-form perfection on low-traffic pages. Spend description-writing time on the URLs that drive most of the impressions. The long tail will be rewritten by Google anyway.
Fix at the edge with Serpwise
When descriptions are missing across an entire section — a hosted blog, a third-party catalog, a legacy CMS — writing 5,000 of them by hand isn’t realistic.
Serpwise can generate descriptions at the edge using on-page signals (the first writer-curated paragraph, the JSON-LD description field, the meta-OG description) and inject them where the source template emits nothing. The generated descriptions get audited in one dashboard. Pages with strong CTR get a writer-edited override; the long tail stays auto-generated.
See pricing or run a free AI visibility audit.