Multiple canonical tags on one WordPress page can make it unclear which URL should be treated as the preferred version. The problem is usually caused by two SEO systems outputting canonicals at the same time, a theme adding its own tag, or custom code inserted into the document head.
In this guide
The goal is not to add another canonical blindly. The safe fix is to identify every canonical, determine which one is correct, remove the extra output at its source, and then test the final page.
What a canonical tag does
A canonical tag is an HTML link element that identifies the preferred URL for substantially similar pages. It normally appears inside the <head> section:
<link rel="canonical" href="https://example.com/example-page/" />
Canonicalization helps consolidate signals when several URLs can display similar content, such as tracking-parameter URLs, printer versions, or filtered archive pages. It is a hint to search engines, not a redirect and not an access-control rule.
A normal page generally needs one clear canonical URL. If two tags point to different URLs, the signals conflict. If they point to the same URL, the duplicate markup is still unnecessary and may indicate overlapping configuration that can cause problems later.
How to check for multiple canonical tags
Check the page as a visitor rather than relying only on the WordPress editor. Canonical markup is generated when the page is rendered, so the editor may not show the source of the problem.
Method 1: View the page source
- Open the public page in a private browser window or while logged out.
- Right-click the page and choose View Page Source. The exact label varies by browser.
- Use your browser’s find command and search for
rel="canonical"or simplycanonical. - Count the canonical link elements and copy each complete URL.
Use the raw source for this check. Browser developer tools show the current document object model, which can be changed by JavaScript after the initial HTML is delivered.
Method 2: Inspect the response with a crawler or HTTP tool
A crawler can check many URLs and reveal whether the issue affects only one template or an entire section. Compare the reported canonical with the canonical in the page source. If they differ, caching, JavaScript, redirects, or the crawler’s processing may be involved.
Method 3: Check different page types
Test a post, a page, a category archive, and a product or custom post type if your site uses them. A duplicate may be limited to one template. Do not assume that fixing the homepage fixes every page type.
Why WordPress outputs duplicate canonicals

Multiple canonicals are usually an output conflict rather than a content problem. The most common sources are:
- Two SEO plugins: Both plugins generate canonical tags for the same page.
- An SEO plugin and a theme: The theme contains a hard-coded canonical or calls a canonical function while the plugin does the same.
- Custom code: A snippet in a child theme, a site-specific plugin, or a code-injection tool adds markup to
wp_head. - Template duplication: A custom template prints a canonical in addition to the global SEO output.
- Migration leftovers: Old SEO-plugin settings or theme code remain after a redesign or plugin replacement.
- Cached HTML: A page cache or CDN serves an older version after the configuration has changed.
A canonical appearing in an HTTP response header is a different case from two HTML tags. Check response headers as well if the page source contains only one canonical. A server or application can send a Link header such as Link: <https://example.com/page/>; rel="canonical".
Find which plugin, theme, or code creates the extra tag
Do not deactivate random plugins on a live site without a plan. First record the affected URL, both canonical values, the current plugin list, and a backup or restore point.
Check SEO plugin settings
Open the settings for each installed SEO plugin and confirm whether more than one is active. Many SEO plugins automatically output canonical tags without a separate switch. If two SEO plugins are active, choose one system to manage metadata and disable or remove the overlapping feature from the other.
Do not keep two SEO plugins active merely because one handles sitemaps or social metadata better. Check whether the selected plugin can provide those features, or configure the other plugin not to print overlapping head markup.
Search the theme and custom code
Search the active theme, child theme, and site-specific plugin for terms such as:
rel="canonical"rel='canonical'wp_headwpseo_canonicalrank_math/frontend/canonical
Use a staging site or version-controlled copy for code changes. Avoid editing a parent theme directly because an update can overwrite the change. If the canonical is hard-coded in a template, remove the duplicate only after confirming that the remaining system generates the intended URL.
Use controlled plugin isolation
If the source is not obvious, reproduce the issue on staging and temporarily switch to a standard theme, then deactivate plugins one at a time or use a conflict-detection tool. After each change, clear the relevant cache and inspect the source again.
If the duplicate disappears when a plugin is disabled, restore the plugin and test its settings before deciding whether it should be replaced. A plugin may be required for other site functionality, so the best fix may be disabling one metadata feature rather than removing the entire plugin.
How to remove the extra canonical safely

- Choose the authoritative generator. Usually this is one maintained SEO plugin or a carefully designed theme integration.
- Confirm the intended URL. Check HTTPS, the preferred hostname, trailing-slash style, language path, and whether the page should canonicalize to itself or another URL.
- Remove the duplicate at its source. Change the plugin setting, remove the theme snippet, or adjust the custom integration. Do not hide the tag with CSS or JavaScript.
- Purge caches. Clear the WordPress page cache, server cache, CDN cache, and any optimization cache that may store HTML.
- Recheck logged-out output. View the raw source again and confirm that only the intended canonical remains.
Do not solve the problem by adding a redirect unless the URLs should permanently resolve to the same destination for visitors. A canonical suggests a preference; a redirect changes the requested URL. If you need broader canonical and duplicate-URL guidance, see WP Fix It’s guide to broken canonical tags.
Make sure the remaining canonical is correct
One tag is not automatically a correct tag. Compare its URL with the page visitors should use. The preferred canonical should normally:
- Use the correct HTTPS scheme.
- Use the site’s preferred hostname, such as one consistent www or non-www version.
- Use the final URL rather than a URL that redirects.
- Contain the intended path and trailing-slash format.
- Be accessible to search engines and return a successful response.
- Represent the same or substantially similar content as the page being checked.
Be careful with archives, paginated pages, filtered product URLs, translated content, and pages with unique content. Do not point every page to the homepage simply to eliminate duplicates. That can remove useful page-specific signals and may prevent the correct URL from being understood.
Verify the fix after changing the site
Verification should cover both the generated HTML and the behavior of the URL:
- Open the page source while logged out.
- Confirm there is one canonical link element.
- Open the canonical URL and confirm it does not redirect unexpectedly.
- Check the page’s response status and ensure it is not blocked by login protection or access rules.
- Test a second URL using the same template.
- Repeat the check after cache expiration or after purging all relevant caches.
Search tools may continue showing an older crawl for a while. Use the platform’s URL inspection feature to request a new crawl when appropriate, but treat the live source as the first confirmation that your WordPress output is fixed.
For WordPress’s broader documentation on site configuration and troubleshooting, consult the official WordPress Documentation.
When the duplicate keeps returning
If the extra tag reappears, look beyond the WordPress dashboard. Common reasons include deployment files restoring an old template, a must-use plugin, a hosting-level HTML injector, or a CDN serving stale cached markup.
Compare the source on staging and production, inspect the active theme and must-use plugins, and ask your host whether response headers or edge rules add canonical information. If a theme or custom integration is responsible and you are unsure what can be removed safely, WordPress Site Repair can help trace the output without making speculative changes.
Quick checklist
- Count canonical tags in the raw page source.
- Record every canonical URL before changing anything.
- Check for overlapping SEO plugins, theme code, and custom
wp_headactions. - Keep one authoritative canonical generator.
- Confirm the remaining URL is final, accessible, and appropriate for that page.
- Purge page, server, and CDN caches.
- Recheck several templates while logged out.



