Google generally respects canonical tags, but they are more like guidelines than hard rules for the search engine. Google uses numerous signals to determine the best version of a piece of content, and sometimes it might choose to ignore the canonical tag if other signals are stronger. Here are a few reasons why this might be happening:
1). Domain Authority: Medium has a high domain authority. If Google considers the Medium version more authoritative, trustworthy, or better for the user’s query, it might display that version over the original source.
2). Loading Speed and User Experience: Google considers the user experience in its ranking algorithm. If the Medium page loads faster, is more mobile-friendly, or provides a better user experience in any way, Google might prioritize it.
3). Quality of Content: If the content on the Medium page is perceived as more comprehensive, useful, or engaging, Google might prefer it.
4). Engagement Metrics: If the Medium article has more engagement (comments, claps, responses, etc.), Google may view it as more relevant or valuable to users and thus display it instead.
5). Indexing Speed: Medium’s high domain authority also means Googlebot crawls it very frequently, and therefore content on Medium might get indexed quicker than on your blog.
While using canonical tags is a best practice for managing duplicate content, it’s not a foolproof method. The best approach would be to always try and publish unique content across different platforms. In your case, instead of republishing the full article on Medium, you could post a summary or an excerpt of the article and then add a ‘Read More’ link that points back to the full article on your website.