How to Fix Duplicate Content on WordPress
WordPress can serve the same page from several different addresses, and Google then has to guess which one to show. You can remove the guesswork. This guide lists the real causes of duplicate URLs on WordPress, explains the signals Google uses to choose a main version, and gives the right fix for each case in plain steps.
- Seven WordPress duplicate causes
- Redirect vs canonical vs sitemap
- Fix table: cause to cure
- How to find and verify duplicates
Pick one preferred URL for each page. Use 301 redirects for versions that should not exist (http, www), a self-referencing canonical tag on every page, and consistent internal links to the preferred version. Do not use robots.txt or noindex to pick a canonical. Your SEO plugin handles most canonical tags automatically.
What duplicate content really is
Google describes duplicate content as the same or very similar content reachable at several URLs. It chooses one version, called the canonical URL, to show in results. You can influence that choice, and if you do not, Google picks what it considers best. Google presents this as a consolidation task, not a punishment.
- You choose which URL people see
- Link signals merge into one page
- Reporting is cleaner
- Googlebot wastes less time recrawling copies
- “Duplicate” is not always a copied article
- It is often the same page at several addresses
- It is usually a settings problem
Seven ways WordPress creates duplicates
http and https
Both versions load. Google’s examples list this as a typical duplicate cause. See HTTPS and SEO.
www and non-www
Two hostnames serve the same site.
Tracking parameters
Links ending in ?utm_source=… create new URLs for the same page.
Trailing slash variants
/page and /page/ may both load. Redirect one to the other.
Category, tag, author and date archives
They list the same excerpts, creating thin overlapping pages.
Attachment and replytocom URLs
Media attachment pages and comment-reply URLs can create extra copies.
Two similar posts
Not technical copies, but pages competing for the same topic. See keyword cannibalization.
Items 4 to 6 are common WordPress patterns from my experience. Google’s page names http/https, hostnames and tracking parameters as examples.
How Google picks the main version: signal strength
301 redirect
Tells Google the old URL is the weaker version. Use when a duplicate should disappear.
rel=”canonical”
A link in the page head pointing to the preferred URL. Use absolute URLs and add a self-referencing canonical to the preferred page too.
Sitemap
Listing only preferred URLs suggests them as canonical, but with less influence.
Using several methods together raises the odds Google picks your choice. Giving conflicting signals weakens it. Also link internally to the canonical URL consistently.
The tag is covered step by step in canonical tags.
Step 1: find your duplicates
Open Indexing, then Pages
Look for “Duplicate without user-selected canonical” and “Alternate page with proper canonical tag”. See checking indexing.
Compare declared and chosen canonical
URL Inspection shows both. If Google chose a different URL from yours, investigate.
Type each version in a browser
http, www and trailing slash versions should all end on one address.
Step 2: the right fix for each cause
| Cause | Best fix | Notes |
|---|---|---|
| http version loads | 301 redirect to https | Server or plugin level |
| www vs non-www | 301 redirect to one | Match your canonical |
| Tracking parameters | Self-referencing canonical | Plugin handles it |
| Trailing slash variants | 301 redirect to one pattern | WordPress usually does this |
| Thin tag or author archives | Noindex or reduce them | See noindex guide |
| Attachment pages | Redirect to the parent post | Setting in many SEO plugins |
| Two similar posts | Merge and 301 redirect | Keep the stronger URL |
| Product filter or sort URLs | Canonical to base category | Common on stores |
Step 3: apply the fixes safely
Choose your preferred version
For example https and non-www. Write it down.
Set WordPress address correctly
In Settings, General, make both addresses use the preferred version.
Add redirects
Redirect the unwanted versions with a 301. See 301 vs 302.
Confirm canonical tags
View page source and check each page points to itself. Plugin setup in Yoast SEO settings.
Update internal links
Link to the preferred URL everywhere.
Clean the sitemap
Include only canonical URLs. See sitemap guide.
What never to do
- Using robots.txt for canonicalization, because blocked URLs can still be indexed without content
- Using the URL removal tool for canonicalization, because it hides all versions
- Giving different canonicals through different methods
- Using noindex to choose a canonical within your own site
- Redirects for retired URLs
- One consistent rel canonical
- Consistent internal links
- Accurate sitemap
Verify the fix
Changes are picked up when Google recrawls. If an important page needs attention sooner, use Request indexing once.
Duplicate content questions
Does duplicate content cause a penalty?
Google’s guidance frames it as choosing one version to show, not as a punishment. The practical cost is split signals and wasted crawling.
Do I need canonical tags on every page?
A self-referencing canonical on each page is recommended, and SEO plugins add it automatically.
Should I noindex category pages?
Only if they are thin and add no value. Well-curated category pages can be useful.
Redirect or canonical?
Use a redirect when the duplicate should disappear, and a canonical when both URLs must stay reachable.
What if Google ignores my canonical?
It is a signal, not a command. Make internal links, redirects and the sitemap agree with it.
Can I use robots.txt to hide duplicates?
No. Google lists this as something to avoid.
Is syndicated content duplicate?
Yes, similar content on other sites is also duplicate. Ask partners to point a canonical to your original where possible.
Signal strengths and the do and avoid lists come from Google. The WordPress cause list and the fix table are my own experience.