Multiple Canonical Tags Example
I blew my horn twice, once to say where I was and once to confirm it, and both thawed out identical.
The short answer
- What it is
- Multiple canonical tags means a page has two or more canonical link elements in its HTML. In this case they all name the same URL, so the issue is duplication and not conflict.
- Why it matters
- The extra tags give no benefit and show that two systems control the same field. If one of them changes later, the page will send conflicting signals.
- How a crawler should report it
- A crawler should show a multiple canonicals warning with the tag count and each href value. If the values differ, it should raise a canonical conflict warning instead.
- Live examples
/lab/multiple-canonicals/(positive)/lab/multiple-canonicals/near-miss/(near miss)

Two identical link elements where one would do
Multiple canonical tags appear when one page has more than one <link rel="canonical"> element. The usual cause is two systems that each add one. A theme writes a tag, and an SEO plugin writes another. A tag manager or a JavaScript app can add a third after load. Copied head blocks in a template can also repeat the line. Often no one notices, as the page looks the same.
Browsers ignore all of these tags. Search engines must decide which to trust. When the values match, the page sends one clear message, and the harm is small. When the values differ, the signal is unclear. Google has said that it may ignore all the tags in that case. The page then loses its canonical hint, and Google picks the main URL on its own, with no input from you.
To detect the issue, count the canonical tags in the raw HTML and in the rendered HTML. The counts can differ if a script adds a tag late. Also read the Link header, since it can add one more signal. Look for it across templates, not just on one page. In this lab, a page holds two tags that agree. A clean page holds just one, and it should raise no warning at all.
To fix it, find every system that writes the tag. Check your theme, your plugins, your server config, and your tag manager. Keep the one that has the best data and turn off the rest. Do not hide the extra tags with JavaScript, because the raw HTML will still contain them. Then add a test to your build that fails if a page has more than one tag, so the problem cannot return.