There's a lot of talk in the wider SEO community that the # symbol in Google Search Console reports means canonicalization. Google's John Mueller and many SEOs say this has nothing to do with canonicalization. It has to do with Google tracking sitelinks on pages from Google search results.
Google's John Mueller posted on LinkedIn: “If you see URLs with '#' in Google Search Console, these are from sitelinks on the page and have nothing to do with canonicalization.”
“Sitelinks are counted separately in performance reports,” he added. “If you filter by URL, they'll show up there; if you look at your query, they'll be collapsed with the other pages (as they always are when there are multiple URLs from the same site in the search results),” he wrote, and told everyone to check out this help document to learn how these impressions and clicks are tracked in Google Search Console.
John shared a screenshot of this cheesy sitelink:
I don't know where this came from, but according to what Graham Grieve shared on LinkedIn, Graham wrote, “Then I listened to one of Carolyn Holzman's podcasts, where she was talking about how Google's canonicalization system is broken.” “Carolyn pointed out that a popular table of contents plugin generates dozens of extra indexable pages that normally canonicalization doesn't allow for, and the fact that they're all indexable is a huge problem for many affiliate sites,” he added. Here's the video. In short, the video talks about how GSC displays #'s, which somehow proves a canonicalization bug in Google search, and also somehow documents useless content. Not sure if you should watch this or not.
Well, Lily Ray commented on the LinkedIn post saying, “Google shows # URLs in GSC all the time, as well as UTM. It shows up on all sites with jump links, not just affiliates. What am I missing?”
Mark Williams Cook detailed the confusion in a LinkedIn post, writing: “Unsolicited #SEO tips: I was looking into claims this week that Google's canonical system is “broken” and came to the conclusion that a lot of people are still confused about how Google Search Console works, so I thought I'd share some.”
“The main 'evidence' that the canonicalization system is broken is that GSC reports jump URLs (with #) higher than the parent page, which basically means Google is doing the canonicalization wrong, which I think is wrong,” he said.
He then posted the following post explaining how Google Search Console works:
1) Jump link URLs appear as small sitelinks under their parent URLs. Jump links inherit the rank (tracked by GSC) of the parent URLs they appear under. The higher the URL ranks, the more frequently the sitelinks will appear. Rankings usually fluctuate a lot, so if a parent URL jumps to the top (top 3), the sitelinks will appear and the average position of the jump links they appear in will also be higher. For most searches, the parent URL will be ranked lower and its average position will drop, while the jump link URLs will still have a higher average position but will be shown less. See screenshot:
2) I checked the jump link in GSC Live Inspect and it was “not indexed”. If it was used as the canonical URL it would be “indexed” and if Google determines another URL is the canonical one it will be specified here.
3) 1 (and mainly 2) indicate that they don't actually have anything to do with the canonical system: as I've posted before, Google essentially ignores # URLs for indexing and for display in standard web searches.
4) Just to be clear, Google may show “not indexed” URLs in the SERPs (such as previously “not indexed” origin 301 URLs), but these too have nothing to do with the canonical system.
Google's John Mueller seconded this in the comments section, adding, “Great summary. Thanks!”
Forum discussion on Linked.