In a Reddit thread, the SEO writes:
“For thousands of pages on the site Google is ignoring the canonical link and selecting their own, the issue is the page Google is selecting is incorrect.”
Mueller responded saying, when it comes to canonicals, Google asks itself: “Are these URLs for the same content?”
If the URLs are not for the same content, why might Google think that they are?
Usually the answer falls into one of two categories:
- They return mostly the same content to Google
- The URL structure is so messy that Google can’t efficiently check them all and has to guess
Possible reasons for JS not being executed properly include:
- “Flakey” code
- Sometimes it doesn’t degrade gracefully
- Sometimes resources (JS-files) or server responses (API requests, etc) are blocked by robots.txt
- Sometimes the JS just takes too long to process
If the code works for Googlebot, which can be determined with the mobile-friendly test, then it’s worth estimating if the speed of processing might be an issue.
Mueller adds that the hard part with that is there’s no absolute guideline or hard cut-off point to test for.
Also, a page rarely loads exactly the same way across separate tests.
With that in mind, Mueller provides the next bit of advice:
“My way of eyeballing it is to see how long the mobile-friendly test roughly takes, and to check with webpagetest.org to see how long a page might take to load the critical / unique content, and how many resources are required to get there. The more resources required, the longer time until the critical content is visible, the more likely Google will have trouble indexing the critical content.”
So, what Mueller ultimately thinks is happening to the SEO in the Reddit thread, is that Google sees their two pages as serving mostly the same content.
That’s a sign that Google can’t pick up the unique content on each page.
Further, it’s a sign that it may be too hard to get to the unique content.
It may be too hard for Google to get to the unique content because it takes too many requests to load.
Or the responses take too long to get back, so the focus stays on the boilerplate HTML rather than the JS-loaded content.
Lastly, Mueller says that reducing dependencies and latency can help solve that issue.