Duplicate meta descriptions across pages
One description reused across a section describes none of those pages well. squirrel groups every crawled page by its meta description.
What a meta description does
The meta description is a suggestion for the snippet under a search result. Search engines often write their own instead, taking text from the page that matches the query, so a description is an opportunity rather than a guarantee.
When several pages share one, none of them gets a snippet that describes it. It is the same failure as a duplicate title but with a lower cost, since the search engine can substitute page text. A description reused across a whole section usually means a template default nobody filled in.
What squirrel checks
The rule is site-wide. It groups crawled pages by their meta description, trimmed and lowercased, and reports any description held by more than one page. Pages with no description are skipped. It emits a single check named duplicate-description:
- Skipped below two pages. Message:
Insufficient pages to check for duplicates. - Warn when duplicates exist. Message:
3 duplicate description(s) found across 9 pages. Each item is the description, labelled"The best products for every occa..." (4 pages), with the URLs that share it. Severity warning, weight 5. - Pass otherwise. Message:
All pages have unique meta descriptions.
Comparison is exact after trimming and lowercasing.
Pages kept out of the search index are left out of the grouping. A page whose <meta name="robots"> tag or X-Robots-Tag header contains noindex (a header scoped to one crawler, such as googlebot: noindex, counts too) is not counted, because its description is never shown in search results. Pages are left out only on a site that is itself being indexed, judged by its homepage, or by the page the audit started from when the homepage was not fetched. When that page is noindex, as on a staging site or a preview deployment (Vercel, Netlify and Cloudflare Pages previews send X-Robots-Tag: noindex by default), every page is counted: the whole host is out of search and the audit is most likely checking it before launch. When neither page was fetched, every page is counted as well. See pages kept out of search for the full list of rules that do this.
Regional versions of one page count as one page. Two pages with the same meta description are not reported as duplicates when all of these hold: each lists the other as a <link rel="alternate" hreflang> alternate, the hreflang values they give each other share a language (en-gb and en-us, or de-de, de-at and de-ch), and neither has a canonical URL pointing to a different page. A page with no canonical tag counts as canonical to itself, as it does for Google, so a pair with no canonical tags is merged and a pair where one page canonicalises to the other is not. A pair across languages, such as de and en, is still reported, because one meta description on both usually means the page was not translated. A one-way reference or an x-default entry does not merge two pages either, and a group that also holds an unrelated page is still reported with every URL in it. Only hreflang tags in the page’s HTML are read, up to 100 per page: annotations sent in an HTTP Link header or listed in a sitemap are not.
How to fix it
Write a description per page that summarises that page. Where a section has too many pages for that to be practical, generating one from the page’s own content beats reusing a template string.
For a page with nothing unique to say, omitting the description entirely is better than duplicating one. The search engine will take text from the page.
| Rule ID | content/duplicate-description |
| Category | Content |
| Scope | Site-wide |
| Severity | warning |
| Weight | 5/10 |
Enable / disable
Disable this rule
[rules]
disable = ["content/duplicate-description"]Disable all Content rules
[rules]
disable = ["content/*"]Enable only this rule
[rules]
enable = ["content/duplicate-description"]enable replaces the default ["*"], so this is the only rule selected. Leave disable out: a rule that matches any disable pattern is skipped even when enable names it. Only an enabled setting under a rule’s own [rule_options] table overrides both lists.
Related rules
- content/duplicate-title: the same problem in the title, which matters more.
- core/meta-description: the per-page description checks.
- core/nosnippet: directives that suppress the snippet entirely.
- crawl/pagination: the paginated pages that most often share one.
Content findings ship in every audit next to the SEO, performance and agent experience rules. See Fix SEO issues with AI for how an agent works through a report.
References
- Control your snippets in search results, Google Search Central
- Tell Google about localized versions of your page, Google Search Central
Check your site
Run squirrel audit https://example.com and open the Content section of the report. Each duplicated description is listed with the pages that share it. Signed-out local audits need no account and cost nothing. Signed-in audits spend credits.