How to write meta descriptions at scale

Updated Published 9 min read

In short

Writing meta descriptions at scale means triaging rather than covering everything: fix pages that already rank first, then high-value commercial pages, and leave low-traffic archives to Google's own extraction. Template from structured data you already hold rather than from prose, keep each description within roughly 960 pixels, and check the whole set for duplicates and truncation in bulk rather than page by page.

Key points

  • Meta descriptions are not a ranking factor — they affect click-through on rankings you already have, which changes where they are worth spending effort.
  • Google rewrites or replaces the description on a large share of results, so a missing description is a lost choice rather than a broken page.
  • Templating from structured fields you already hold produces usable descriptions; templating from a single sentence with the product name swapped produces duplicates that get discarded.
  • Truncation is by rendered pixel width, roughly 960px for a description, so no character count is correct for every string.
  • Triage beats coverage: a description on a page nobody finds changes nothing, and 4,000 mediocre descriptions are worth less than 200 good ones on pages that rank.

Every piece of advice about meta descriptions is written for one page. Make it compelling. Include the keyword. Match search intent. All reasonable, and all useless when the input is a catalogue of four thousand products that nobody is going to hand-write anything for.

This guide is about the other problem: what to do when the unit is a whole site.

First, calibrate how much this matters

Two facts change the effort this deserves, and both are frequently left out of advice that wants you to take it seriously:

  • Meta descriptions are not a ranking factor. They do not affect where you rank. They affect whether someone clicks a result you already earned, which is worth having and is a much smaller claim.
  • Google frequently ignores what you wrote. As Google's own documentation on snippets describes, it generates snippets from page content when it judges that a better match for the query than your description. This happens on a large share of results.

The honest conclusion is not "skip them". It is that a missing description is a lost opportunity to influence the snippet rather than a defect, and that the marginal value of the four-thousandth description is close to zero. That should change how you spend the effort.

Triage, don't cover

The instinct is to get to 100% coverage because coverage is measurable. It is the wrong target. A description on a page that nothing links to and nobody searches for changes nothing at all.

A defensible order:

  1. Pages that already rank and get impressions. Straight from Search Console: high impressions, mediocre click-through. These are the only pages where a better description has a measurable effect, because the ranking already exists and only the click is in question.
  2. High-value commercial pages. Category pages, top products, the pages you would be upset to lose. Worth hand-writing even if there are two hundred of them.
  3. Pages with a duplicated description. These are worse than empty, for reasons below.
  4. Everything else. Template it, or leave it. Google's extraction from a well-structured page is usually reasonable, and on a thin archive page there was nothing to say anyway.

Steps 1 and 2 are usually a few hundred pages. That is a week of real work with a real return, rather than a month of work with none.

Duplicates are worse than gaps

This is the finding that surprises people, and it is why a bulk view matters more than a per-page one.

A duplicated description usually means a template produced the same sentence for three hundred products with one variable swapped. Those pages now assert, identically, that they are interchangeable. Google commonly discards a description that does not distinguish the page and extracts its own text instead — so the generation effort bought nothing, and you cannot see it happening because each page looks fine in isolation.

An empty description at least hands the decision to an extractor that reads the actual page. A duplicated one wastes the slot and tells you nothing went wrong.

Check for duplicates before you check for length. They are the higher-value finding and the one no single-page tool can produce.

Template from structure, not from prose

The difference between a template that works and one that manufactures duplicates is what you feed it.

Prose templating takes one sentence and swaps a noun:

"Buy the {product} at Acme. Free shipping and 30-day returns."

Every output is near-identical, distinguished only by the product name, which is already in the title. This is the pattern that produces three hundred duplicates.

Structural templating assembles from fields that genuinely differ per item:

"{material} {product} in {sizes} sizes, {weight}. {distinguishing_feature}. Ships from {location}."

The output varies because the inputs vary. If you have a spec table, a category, dimensions, a material, a compatibility list — you already hold enough to generate descriptions that differ meaningfully. If you genuinely hold nothing but a name and a price, no template will save you, and that is worth knowing before you build one.

A useful test: strip the product name from the generated description. Could you still tell which product it belongs to? If not, the template is producing noise.

The length budget, and why character counts are wrong

Search results truncate by rendered pixel width, not by character count. That is why every rule of thumb you have read — 155 characters, 160, 156 — is wrong for some strings and right for others. WWW Warehouse Workshop and illinois militia list are both 22 characters and nothing like the same width.

Working budgets on desktop, observed rather than published:

  • Meta description: about 960 pixels — roughly 155 characters of ordinary English.
  • SEO title: about 600 pixels — roughly 60 characters.

Google has never documented a limit and changes the effective widths without notice, so treat these as budgets with a few percent of slack. You can measure any specific string in our SERP snippet preview, or a few thousand at once in the bulk length checker.

Since truncation takes the end, the practical response at scale is not "write shorter" — it is to put the distinguishing information first and the boilerplate last. If your template ends with "Free shipping on all orders", losing it costs nothing. If it ends with the one detail that differentiates the product, you have templated backwards.

Very short is a missed opportunity, not an error

A 40-character description carries no penalty. It does leave most of the budget unused, and Google is more likely to substitute its own text when given very little to work with. Treat it as a lower-priority finding than duplicates or gaps — worth a pass eventually, not worth blocking on.

Verifying without opening 4,000 editor screens

Whatever produced the descriptions, you need to see the result as a set. The questions are always the same four: how many are missing, how many are duplicated, how many will be truncated, and how many are very short.

Getting the data out of WordPress depends on which SEO plugin you run, and they disagree — Yoast, Rank Math and SEOPress use post meta with different keys, while All in One SEO uses its own database table entirely. Field names also change between major versions, so verify against your own install rather than trusting any published list.

The shortcut that sidesteps all of it: run a site crawler that reads the rendered <meta name="description"> from the page. That is what search engines see, it is correct regardless of which plugin wrote it, and it catches the case where two SEO plugins are both active and one is silently overriding the other. Export the crawl, paste it into the bulk checker, and you have the four numbers.

What to automate, and what not to

A workable division of labour after doing this a few times:

  • Hand-write the pages from triage steps 1 and 2. There are fewer than you fear and they are where the return is.
  • Template the structured long tail, from fields that actually vary, and check the output for duplicates before publishing rather than after.
  • Leave alone the pages with nothing distinctive to say. An extracted snippet from a real page beats a generated sentence that says nothing.
  • Re-check periodically. New products arrive without descriptions, and coverage decays.

That last point is the one that makes this an ongoing job rather than a project, and it is the reason Metaly is being built — bulk generation for the long tail on top of an audit that finds the gap. Its generation half is not finished, and its product page lists exactly which parts are and are not built. The measuring tools linked above work today and need no plugin at all.

Sources

Technical claims in this guide are drawn from the primary documentation and specifications below, each confirmed live on the date shown.

  1. Control your snippets in Google Search results Google Search Central. Accessed .
  2. Introduction to robots.txt Google Search Central. Accessed .

FAQ

Do meta descriptions affect rankings?
No. Meta descriptions are not a ranking factor. They influence whether someone clicks a result you have already earned, which affects traffic without affecting position. This is worth knowing before deciding how much time to spend: the return comes from click-through on pages that already rank, not from adding descriptions to pages nobody finds.
How many characters should a meta description be?
There is no correct character count, because search results truncate by rendered pixel width rather than by character. A desktop description has a budget of roughly 960 pixels, which works out at about 155 characters of ordinary English text but far fewer for wide or capitalised text. Measuring the actual string is the only reliable method.
Is it worth writing meta descriptions for thousands of pages?
Usually not for all of them. The return is concentrated in pages that already rank and get impressions, plus high-value commercial pages — typically a few hundred rather than thousands. For the long tail, a template built from structured fields is reasonable, and leaving Google to extract a snippet from a well-structured page is a defensible choice.
Why are duplicate meta descriptions a problem?
Because they say nothing that distinguishes one page from another, and Google commonly discards a description that does not match the query well and extracts its own text instead. Duplicates usually indicate a template that swapped one variable into a fixed sentence. They are also invisible page by page and obvious across a set, which is why they should be checked in bulk.
What happens if a page has no meta description?
Google constructs a snippet from the page content. That is not an error, and on a well-structured article the result is often fine. What you lose is the choice: on a product page the extract is frequently a fragment of a spec table or a shipping notice rather than anything persuasive.
How do I export meta descriptions from WordPress in bulk?
The reliable route is a site crawler that reads the rendered meta description tag from each page, because that is what search engines actually see and it works regardless of which SEO plugin wrote it. Reading the database directly is possible but plugin-specific — Yoast, Rank Math and SEOPress use post meta with different keys, and All in One SEO uses its own table — and the field names change between major versions.

Check your own titles and descriptions against everything in this guide — length, truncation, gaps and duplicates — a few thousand at a time.

Open the bulk checker
Go multilingual free
Open source · your data stays yours
Start free