You search Google for your article and the snippet under the title isn’t what you put in <meta name="description">. That’s not a bug — it’s Google’s default behavior. Google’s own snippet documentation says it uses your description only when it thinks that gives users a more accurate summary than text pulled from the page; otherwise it generates its own. Independent studies put the rewrite rate at roughly 60-80% of results as of June 2026.
Fastest fix: rewrite the description so it is (1) unique to that one page, (2) contains the exact keyword people search for, and (3) lands at about 140-155 characters. Those three changes recover most rewritten snippets. The rest of this page is how to find which pages need it and why each one got rewritten.
Common causes
Ordered by hit rate, highest first.
1. Too generic — could apply to any article
Classic failure descriptions:
"Learn how AI tools can boost your productivity in this comprehensive guide."
"Everything you need to know about deploying a website."
Google sees a sentence that would fit on any page, decides it can extract a better one from the body, and does.
How to spot it: Read your description out loud and ask “Would this still make sense on a completely different article?” If yes, it’s too generic.
2. Duplicated across many pages
A lot of templates ship a single site-wide description (often the homepage’s) or prepend the same boilerplate prefix to every page. Note: Google retired the old HTML Improvements report years ago, so as of June 2026 Search Console will not flag “Duplicate meta descriptions” for you — Google has publicly said duplicate descriptions don’t break a site. You have to catch this yourself.
How to spot it: Run this in Google and count the hits:
site:yourdomain.com "first 30 chars of your description"
If 3+ of your own pages come back with the same text, you have site-wide duplication.
3. Doesn’t answer the user’s query
Google picks snippets dynamically based on which passage best matches the search query. If someone searches “deploy Astro to Vercel” but your description says “this blog shares frontend tips,” Google grabs a body sentence containing “Astro” and “Vercel” instead. One description has to serve hundreds of distinct queries, so the more your description omits the head keyword, the more often Google substitutes.
How to spot it: In Search Console, open Performance → Search results, click a URL, then the Queries tab. Compare the live SERP snippet to your meta description. If Google’s snippet contains words from a top query that your description doesn’t, that’s why.
4. Wrong length
- Too short (under ~70 characters): Google decides there isn’t enough info and pads from the body.
- Too long (over ~160 characters): it gets truncated, and Google often replaces the whole thing rather than show a half-cut sentence.
Google truncates by pixel width, not character count. As of June 2026 the desktop snippet width is about 920px (~155-160 English characters) and mobile is about 680px (~120 characters). Put your most important words in the first ~120 characters so they survive mobile truncation. Google trims to the nearest whole word and adds an ellipsis.
5. Description contradicts the body
You write “5 tools” but the body lists 8; or “Best of 2024” but publishedAt: 2026-05-17. Google detects the mismatch and substitutes a passage that actually matches the page.
How to spot it: Run site:yourdomain.com and compare the snippet Google shows against the numbers and dates in your meta. If they’ve been swapped out, that’s the trigger.
6. Keyword stuffing
"AI tools, ChatGPT, Claude, productivity, best AI 2026, AI for developers" reads as a keyword list, not a sentence. Google’s docs explicitly warn against this and will discard it in favor of a real sentence from the page.
Diagnosis: which bucket are you in?
| Symptom in the live snippet | Likely cause | Go to |
|---|---|---|
| Snippet is a sentence lifted from your body | Description too generic, or doesn’t match the query | Causes 1, 3 |
| Several of your pages show the same snippet | Site-wide duplication | Cause 2 |
| Snippet trails off with ”…” or is much shorter than what you wrote | Wrong length | Cause 4 |
| Numbers/dates in the snippet differ from your meta | Body contradicts description | Cause 5 |
| Snippet is a clean body sentence, your meta was a comma list | Keyword stuffing | Cause 6 |
Shortest path to fix
Ordered by ROI. The first three usually solve 80% of cases.
Step 1: Find which pages got rewritten
In Search Console → Performance → Search results → Pages tab, sort by impressions descending. Take the top 20 URLs and for each run:
site:yourdomain.com/your-article-slug
Copy the live SERP snippet and diff it against the <meta name="description"> in your page source. Anything different is a “rewritten” page.
For a batch check, pull the page and extract the meta yourself:
# Fetch your own page and print the meta description it ships
curl -s "https://yourdomain.com/your-article" | grep -oE '<meta name="description" content="[^"]+"'
Then site: the URL on Google to see what’s actually shown.
Step 2: Rewrite using the “unique + keyword + value” formula
For each rewritten page, follow this template:
[primary keyword] + [unique fact or number] + [user value or promise]
Bad-to-good examples:
| Bad | Good |
|---|---|
| ”Learn how to fix Google rewriting your description" | "6 reasons Google rewrites meta descriptions, plus the 3-step fix that pushed our CTR from 1.2% to 4.8%" |
| "AI tools for productivity" | "12 AI tools I actually paid for in 2026, ranked by hours saved per week” |
Character budget (as of June 2026):
- English: 140-155 characters (920px desktop cutoff is ~158)
- Chinese / CJK: 60-80 characters including punctuation
- Front-load the keyword in the first ~120 chars so mobile doesn’t cut it
Step 3: Enforce “one unique description per page” at build time
If you’re on Astro / Next / Hugo, add a build-time check so duplicates and length problems fail CI before they ship:
// scripts/check-descriptions.mjs
import fs from "node:fs";
import path from "node:path";
import matter from "gray-matter";
const seen = new Map();
const root = "src/content/articles";
const issues = [];
function walk(dir) {
for (const name of fs.readdirSync(dir)) {
const p = path.join(dir, name);
if (fs.statSync(p).isDirectory()) walk(p);
else if (p.endsWith(".mdx") || p.endsWith(".md")) {
const { data } = matter(fs.readFileSync(p, "utf8"));
const desc = (data.description || "").trim();
if (!desc) issues.push(`MISSING: ${p}`);
else if (desc.length < 50) issues.push(`TOO SHORT (${desc.length}): ${p}`);
else if (desc.length > 160) issues.push(`TOO LONG (${desc.length}): ${p}`);
else if (seen.has(desc)) issues.push(`DUPLICATE: ${p} == ${seen.get(desc)}`);
else seen.set(desc, p);
}
}
}
walk(root);
if (issues.length) {
console.error(issues.join("\n"));
process.exit(1);
}
Wire it into prebuild so missing, duplicate, or over-length descriptions fail the build.
Step 4: Request a re-crawl, then wait
Google doesn’t re-evaluate immediately. After editing:
- In Search Console, paste the URL into the URL Inspection bar at the top, then click Request indexing. Note the daily cap is roughly 10-12 individual URLs per property as of June 2026, so batch your most important pages first.
- After ~7 days, re-run
site:to check whether the snippet changed. - After ~14 days, check Performance → Search results filtered to that URL and see whether CTR moved.
Step 5: Still rewritten? Make the body the description
For long guides where you can’t beat what Google would auto-extract, flip the strategy: make the opening paragraph itself the ideal description. Google will usually pick a clean lead sentence. You can also cap snippet length explicitly:
<meta name="robots" content="max-snippet:160">
max-snippet:0 blocks descriptions entirely — don’t do that, it tanks CTR. To keep a specific block of text out of any auto-generated snippet (like a boilerplate disclaimer), wrap it in data-nosnippet:
<span data-nosnippet>Affiliate disclosure: ...</span>
How to confirm it’s fixed
You’ll know the rewrite is resolved when, ~7-14 days after re-indexing, a fresh site:yourdomain.com/your-slug query shows your authored sentence verbatim (or a near-exact version) instead of a scraped body line. If it still shows body text after two weeks and a re-crawl, the description is still losing to the page content — return to Step 2 and make it more specific to the head query. Tip: search in an incognito window to avoid personalized/cached results.
Prevention
- Generate descriptions per page, never from a site-wide template; enforce uniqueness with the build-time script above.
- Re-read every description with the test: “Would this still make sense on a different article?”
- Put the primary keyword in the first ~120 characters so it survives mobile truncation.
- 14 days post-publish, sort Search Console Performance by impressions, filter to pages with CTR under ~1-3% in positions 1-10, and rewrite those descriptions first.
FAQ
Is a rewritten meta description bad for rankings? No. Meta descriptions are not a ranking factor and a rewrite doesn’t penalize you. It only affects the snippet text, which influences click-through rate. The fix is about CTR, not position.
Can I force Google to always use my meta description?
No. There is no tag that guarantees it. You can only make your description the better option (unique, specific, right length) and cap snippet length with max-snippet. Google still chooses per query.
Why does the same page show different snippets for different searches? Because Google builds the snippet to match each query. One page can show your meta description for one search and an extracted body passage for another. This is expected — write a description that covers your head keyword, and make the body strong enough that extracted snippets are still good.
Does Search Console still report duplicate meta descriptions?
No. The old HTML Improvements report that listed duplicate and short/long descriptions was retired. As of June 2026 you have to detect duplicates yourself with a site: search or a build-time script.
How long until my new description shows up?
After requesting indexing, typically 3-14 days. Pages with low crawl frequency can take longer. Re-running site: is the quickest way to check without waiting on Search Console reporting lag.
Related
Tags: #SEO #Google #Search Console #Indexing