Telegram Messenger offers an "End-to-End" encrypted channel, with their home brewed MTProto, called Secret Chat.
They have "Link Previews" by default in all modes, but Secret Chats, in which the servers are able to generate a preview and a summary by crawling the link, to display that information to the end user.
Recently, they added a new option in settings to enable a "feature" called "Link Previews" in which every link in Secret Chats is also crawled and info is displayed. They produced a one-time dialogue inside of my Secret Chats, that prevented me from taking a screenshot of it, saying whether I'd like to enable that or not.
Seeing as End-to-End encryption would no longer apply if they can see my Secret Chat links to crawl them, I'll give them -for the hundredth time- the benefit of the doubt and simply ask how do they do it?
One option that comes to mind is by crawling the links from inside the Telegram client on the user's device instead of crawling them with their -proprietary, mind you- servers.
That is the least creepy/flawed design I can think of, but even that means they are also able to simply set their client to send the client's Secret Chat log to anyone they so choose; if this implementation of Link Previews went unnoticed, then I don't see why keylogging would be any different if developers aren't interested in Telegram enough to review its code changes to their Open Source client.