Google's John Mueller explained on Twitter twice the other day that every single URL Google has in their index automatically has a canonical URL assigned. John said "any URL that's indexed implicitly has a canonical URL (which might be the same [URL])."
There was a bit of confusion when John said in a webmaster hangout at the 54:56 mark that "If we don't have a canonical page then we kind of drop that link because we don't know from where to where it actually goes." But that is almost impossible, because if the page is indexed, they automatically have a canonical URL assigned to it.
Here is the video embed:
Here is the transcript:
When we see a link from one page to another page, we try to assign that link between the canonical versions of those pages.So that means kind of like is do do we have a canonical page for that loop page that they're linking to or not. If we don't have a canonical page then we kind of drop that link because we don't know from where to where it actually goes.
But if we see that there's a canonical version that we can use, then we'll treat that as a link to that canonical version of the page.
So what you can sometimes do is do an info query for the URL that you see people linking to and you can see does Google show any other URL in place of that URL. And if we do show a different URL there then probably we're treating that URL as a canonical for the URL that you specified. So we would still be kind of be able to count that link between those two pages there.
Here are the tweets with the confusion and clarifications:
No, essentially every URL that's indexed has a canonical URL (which doesn't have to be from a link rel=canonical), so if it's indexed, that's all OK :).
— John ☆.o(≧▽≦)o.☆ (@JohnMu) June 26, 2018
No, any URL that's indexed implicitly has a canonical URL (which might be the same). We use multiple signals from your side to pick a canonical URL, if you don't use them, we'll figure one out for you :)
— John ☆.o(≧▽≦)o.☆ (@JohnMu) June 26, 2018