There is no duplicate content penalty
"Duplicate content penalty" is one of the most durable myths in SEO. Google does not penalise duplication. There is no manual action, no score deduction, no flag.
What happens is less dramatic and more damaging.
What actually happens
When Google finds substantially identical content at several URLs, it picks one to show and effectively ignores the rest. That is deduplication, not punishment.
The consequences:
Signals split. Links, engagement and relevance accumulate against several URLs instead of one. Each version is weaker than the single version would have been.
Google chooses. It may not choose the URL you would have. It might pick the version with the ugly parameter, or the print view, or the syndicated copy on someone else's site.
Crawl is wasted. Requests spent on near-identical pages are not spent on new ones.
Where it comes from
Rarely from someone copying text. Usually from URL structure:
- The same product reachable through several category paths.
- Tracking parameters creating infinite variants.
httpandhttps,wwwand non-www, trailing slash and not.- Pagination and filtering producing overlapping sets.
- A staging or development host that got indexed.
- Print, AMP or mobile-specific versions.
The exception that is a real problem
Thin, near-identical pages generated at scale — a location page per town with one word changed, a product page per size — are not deduplication problems. They are quality problems, and Google does act on those, because the pattern is indistinguishable from doorway pages.
The distinction is whether the pages exist to serve different users or to occupy more results.
The fix
Canonical tags for genuine duplicates. Redirects for URLs that should not exist. Parameter handling for tracking. Consistent internal linking so every reference to a page uses the same URL — this last one is what most often overrides your canonical, because Google weighs internal links heavily when deciding which version is real.
Then check what Google actually selected, in URL inspection. Declared canonical and selected canonical are two different fields, and the gap between them is the only place this problem is visible.