WordPress SEO

Duplicate Content in WordPress and How to Fix It

Where WordPress generates duplicate URLs by default, why it dilutes your rankings, and how canonicals, noindex and redirects each fit into the fix.

By 6 min read
Search results list with a magnifying glass over the top result

"Duplicate content penalty" is one of the most persistent myths in SEO. Google doesn't penalise you for having the same content at two URLs; it picks one and largely ignores the other.

The real cost is subtler and more common: your signals get split, the URL Google picks isn't the one you'd have chosen, and your crawl budget goes on pages you never wanted indexed. Here's where WordPress creates it and how to fix each case.

Where WordPress creates duplicates by default

  • URL variations of the same page: with and without www, HTTP and HTTPS, with and without a trailing slash, and the /?p=123 form alongside the pretty permalink.
  • Category, tag, author and date archives, which all list the same posts in different groupings — often with full content rather than excerpts.
  • Paginated archives, where the second and subsequent pages can carry the same title and meta description as the first.
  • Attachment pages: a page per uploaded image, containing an image and almost nothing else.
  • Print and AMP variants, if a plugin generates them.
  • Search result pages, which are infinite and thin by nature.
  • Query parameters from filters, sorting, tracking and session IDs, each producing a new URL for the same content.

Why it actually matters

Three concrete costs, none of which is a penalty.

First, signals split. If five sites link to one version and three to another, you have two pages with partial authority instead of one with all of it.

Second, Google picks the canonical, and it may not pick the one you want. A tag archive outranking the article it lists is a common and annoying outcome.

Third, crawl budget. On a large site, a crawler spending its time on attachment pages and filter combinations is a crawler not fetching your new content promptly.

Canonical, noindex or redirect?

These three tools solve different problems, and using the wrong one is where most fixes go astray.

  • Canonical — 'this page is a version of that one'. Both remain accessible, and signals consolidate on the canonical. Right for URL variations, filter parameters and syndicated content.
  • noindex — 'don't index this, but it's a legitimate page'. Right for thin archives, search results and anything useful to a visitor but not worth a search result.
  • 301 redirect — 'this URL is gone, go there instead'. Right when the duplicate shouldn't exist at all: attachment pages, an old URL structure, a merged page.
  • The common error is canonicalising something that should be redirected, or blocking something in robots.txt that should be noindexed — which prevents Google reading the noindex at all.

Fix the URL variations first

This is the highest-value fix and the easiest. Pick one canonical form — HTTPS, one hostname, one trailing-slash convention — and enforce it.

Set WordPress Address and Site Address in Settings → General to that form. Add server-level redirects from every other variation to it. Then confirm every page emits a self-referencing canonical tag pointing at the canonical form.

Test it by requesting several variations and confirming each 301s in a single hop to the same final URL. Two systems both trying to enforce this is how redirect loops happen, so decide which layer owns it.

Archives

Categories, tags, authors and dates all list the same posts differently. Most sites need far fewer of these indexed than they have.

  • Keep well-populated categories indexed — they're useful landing pages with a real purpose.
  • Noindex tag archives with one or two posts each. They're thin and they compete with the posts themselves.
  • Noindex author archives on a single-author site, where they duplicate the blog index entirely.
  • Noindex date archives, which are almost never a useful landing page.
  • Show excerpts rather than full posts on archives, so the archive isn't a verbatim copy of the article.
  • The test for each: would you be happy for a search visitor to land there? If not, noindex it and remove it from the sitemap.

Pagination

Google no longer uses rel prev/next, and the current guidance is straightforward: paginated pages should be indexable with self-referencing canonicals.

The common misconfiguration is canonicalising every paginated page to page one. That tells Google pages two onwards don't exist as distinct URLs, which means the content only reachable from them may never be discovered.

Do give each paginated page a distinguishing title — 'Page 2 of 6' — so they aren't duplicates of each other in the results. And make sure important content isn't buried on page fourteen with no other route to it.

Attachment pages

WordPress creates a page for every uploaded file. On a site with a thousand images, that's a thousand pages containing an image and no content.

They are never useful and they're a pure liability. Either disable them entirely, or redirect them to the post the image is attached to. Most SEO plugins have a single setting for this.

This is one of the highest-ratio fixes available: one setting, and a large number of thin pages stop existing.

Query parameters

Filters, sorting, tracking parameters and session identifiers all produce distinct URLs for the same content. On a WooCommerce store with faceted filtering, the combinations can be effectively infinite.

Canonicalise parameterised URLs to the clean version. For genuinely useless combinations, disallow the pattern in robots.txt so crawlers don't waste time on them — but only where you don't need the page indexed at all, since a blocked page can't have its canonical read either.

Be careful not to canonicalise away something that should rank. A filtered category that people genuinely search for may deserve its own indexable page with its own content.

Content duplicated across your own pages

The kind that isn't WordPress's fault: near-identical service pages for different locations, product variations with the same description, or the same boilerplate on fifty pages.

Location pages generated from a template with the place name swapped are doorway pages, and they're treated as spam rather than as duplicates. Either write something genuinely specific for each, or consolidate into one good page.

For product variations with identical descriptions, consider whether they should be variations of one product rather than separate products.

Where two pages genuinely compete for the same term, merging them into one stronger page and redirecting is almost always better than trying to differentiate them.

Finding it

  • Search Console's Pages report: look for 'Duplicate without user-selected canonical' and 'Alternate page with proper canonical tag'.
  • Crawl the site and look for pages sharing a title or meta description.
  • Search for a distinctive sentence from one of your pages in quotes, restricted to your own site, and see how many URLs come back.
  • Check the indexed page count against the number of pages you believe you have. A large gap in either direction is informative.
  • Look at your sitemap for post types and taxonomies you didn't intend to publish.

Frequently asked questions

Does duplicate content cause a Google penalty?

No. Google picks one version and largely ignores the others. The real costs are that your signals split between URLs so neither ranks as well as one would, that Google may pick a version you wouldn't have, and that crawl budget goes on pages you never wanted indexed.

Should I noindex my WordPress tag and category archives?

Index well-populated categories — they're useful landing pages. Noindex tags applied to only one or two posts, author archives on a single-author site, and date archives. The test is whether you'd be happy for a search visitor to land there. Also remove anything you noindex from the sitemap.

Should paginated pages be canonicalised to page one?

No, and it's a common misconfiguration. Paginated pages should carry self-referencing canonicals. Pointing them all at page one tells Google the later pages don't exist as distinct URLs, so content only reachable from them may never be discovered. Do give each a distinguishing title.

What should I do about WordPress attachment pages?

Disable them, or redirect each to the post the image is attached to. They're a page per uploaded file containing an image and no content, so they're never useful and they dilute your index. Most SEO plugins handle this with a single setting — it's one of the highest-value fixes available.

Is it duplicate content if I have similar pages for different cities?

If they're generated from a template with the place name swapped, they're doorway pages, which is treated as spam rather than duplication. Either write something genuinely specific about serving each area, or consolidate into one strong page covering all of them. One good page beats six thin ones.

Topics

  • duplicate content WordPress
  • canonical tag
  • WordPress SEO
  • thin content