Canonical only found in rendered DOM
This means that the URL in question has a canonical element which is only present in the rendered DOM, and is not present in the source HTML.
Why is this important?
Search Engines have traditionally crawled websites only using source HTML, and the 'crawling and rendering era' is only in its infancy. Google has the most sophisticated setup, which is a two stage indexing process (Image below from Google I/O 2018).
The important thing to note here is that the initial 'first wave of indexing' is based on the source HTML. Further, Google's John Mueller clarified on Twitter that the rel=canonical is only processed from this 'first wave', and they don't take into account any canonicals added or changed during the rendering process (i.e. 'the second wave').
What does the Hint check?
This Hint will trigger for any internal URL which contains a canonical link element in the HTML when Sitebulb renders it using headless Chrome, but is NOT present in the source HTML.
Note: this Hint is only checked if the Chrome Crawler is selected during the audit setup.
Examples that trigger this Hint:
Consider the URL: https://example.com/page-a
The Hint would trigger for this URL if it had a canonical link in the <head> when rendered;
yet no canonical link element when not rendered.
How do you resolve this issue?
Google have stated categorically that the rendered canonical is not taken into account, so relying on it for indexing purposes would be unwise.
In order for the canonical to be properly recognised, use one of the following solutions:
- Set canonicals in the HTTP header instead of the HTML <head>.
- Ensure that the canonical is present in the HTML source, and is not changed during rendering.
- Serve pre-rendered pages to search engines.