Telegram Link Preview: How It Works and Why It Breaks (2026)
How Telegram generates link previews, what OG tags it reads, why your image shows wrong, and how to force Telegram to re-scrape your URL. Complete technical guide.
Telegram Link Preview:
How It Works and Why It Breaks
Telegram generates link previews differently from Facebook and Twitter. The crawler runs server-side, the caching is aggressive, and the image requirements are specific. Here's the full picture.
How Telegram Generates Link Previews
When you send a URL in a Telegram chat, channel, or group, Telegram's backend server fetches that URL and reads its metadata to build a link preview card. This scraping is done on Telegram's servers, not on the recipient's device. This is an important distinction from some other messaging apps where preview generation is done client-side.
The Telegram Bot API Crawler
Telegram uses a server-side crawler to fetch link metadata. When you look at your server logs after a Telegram link preview is generated, you'll see requests from Telegram's IP ranges with a user-agent that includes TelegramBot. The exact user-agent looks like:
TelegramBot (like TwitterBot)
That "(like TwitterBot)" annotation is there to tell web servers to treat it similarly to Twitter's crawler for purposes of bot detection allowlists. If your server or CDN blocks bots aggressively, you may need to whitelist this user-agent explicitly.
Server-Side vs Client-Side Preview Generation
Telegram's server-side approach means the scraping happens when the message is sent, not when each recipient opens it. The scraped preview is then stored and distributed to all recipients from Telegram's servers. This is efficient but means the preview is locked in at send time. If you update your OG tags after a message has been sent, existing recipients won't see the update.
What Happens Step by Step
- User types or pastes a URL into Telegram
- Telegram's client sends the URL to Telegram's backend
- Telegram's backend crawler fetches the URL and reads OG tags
- The preview card (image, title, description) is assembled server-side
- The message is sent with the preview embedded
- All recipients receive the same pre-built preview
OG Tags Telegram Reads
Telegram follows the Open Graph protocol specification. The tags it reads are the same standard og: tags you'd set for Facebook or LinkedIn. There are no Telegram-specific meta tags.
<!-- Tags Telegram reads for link previews --> <meta property="og:title" content="Your Page Title"> <meta property="og:description" content="Brief description of the page content."> <meta property="og:image" content="https://yoursite.com/images/preview.jpg"> <meta property="og:url" content="https://yoursite.com/canonical-url"> <meta property="og:site_name" content="Your Brand Name"> <!-- Image dimensions help Telegram render faster --> <meta property="og:image:width" content="1280"> <meta property="og:image:height" content="640">
Fallback Behavior When OG Tags Are Missing
If og:title is missing, Telegram falls back to the HTML <title> tag. If og:description is missing, Telegram may attempt to extract a summary from the page's body text, though the results are unpredictable. If og:image is missing, Telegram looks for the first sufficiently large image it finds in the page's HTML. This fallback image selection is unreliable and often picks the wrong image (logo, ad, icon).
The lesson: always set explicit OG tags. Relying on Telegram's fallback behavior is how you end up with a company logo instead of your hero image in the preview.
Twitter Card Tags
Telegram also reads Twitter Card meta tags as a secondary source. If you have twitter:title, twitter:description, and twitter:image set, Telegram may use these if OG tags are absent. In practice, if you have both OG tags and Twitter Card tags, Telegram will prefer the OG tags. There's no need to set Twitter-specific tags just for Telegram. A clean set of OG tags is sufficient.
🔍 Preview Your Link as Telegram Sees It
SharePreview reads the same metadata Telegram's crawler reads. Paste your URL to verify the title, description, and image look right before sending to your Telegram channel or group.
Test My Telegram Preview →Image Size Requirements for Telegram
Telegram's image size requirements are slightly different from the 1200x630 standard used by Facebook and LinkedIn. Telegram works best with a wider image.
Telegram OG Image Recommendations
- Recommended size: 1280 × 640 pixels
- Minimum to show large preview: ~200px wide
- Aspect ratio: 2:1 (wider than Facebook's 1.91:1)
- Format: JPG or PNG
- URL: Must be HTTPS
- Max file size: Aim for under 5MB; smaller is faster
- Keep important content: Away from extreme edges (Telegram may crop on narrow screens)
How Telegram Displays Images
In Telegram channels, a full-width image preview is displayed above the title and description when the image is large enough and meets the ratio expectations. In group chats and DMs, the layout is more compact, with the image appearing as a smaller card.
A 1200x630 image (the Facebook standard) will still work in Telegram and will display without issues. The 1280x640 recommendation is to ensure the maximum display area in Telegram channels, which are the most visually prominent Telegram context. If you're maintaining one OG image for all platforms, 1200x630 is the safe cross-platform choice. If you're specifically optimizing for Telegram channel posts, use 1280x640.
Small Images and Thumbnails
If your og:image is too small (typically under 200px), Telegram will not display it as a banner. It may show a very small thumbnail or skip the image entirely. This leaves a text-only preview which is significantly less engaging in a channel feed.
Why Telegram Shows the Wrong Image
This is the most common complaint about Telegram link previews. You set up your og:image correctly, but Telegram shows a different image, often your logo, a random product photo, or nothing at all. There are several causes:
1. No og:image Tag (Fallback Selection)
When og:image is missing, Telegram picks the "most prominent" image from your page's content. This selection is based on heuristics like image dimensions and position in the DOM. It's unreliable. The fix is simple: add an explicit og:image tag pointing to the image you want.
2. Cached Preview from Before You Added og:image
Telegram caches previews aggressively. If a URL was shared in Telegram before you added or fixed the og:image tag, the old (wrong) preview may persist in Telegram's cache. The cached version is what all subsequent shares of that URL will show until the cache expires or is manually busted.
3. Multiple og:image Tags
If your page has multiple og:image tags (which can happen with CMS plugins that stack tags), Telegram may pick the first one, which might be an old or incorrect value. Always have exactly one og:image tag per page. Check your page source and remove duplicates.
4. Image URL Returns a Redirect
If your og:image URL redirects to another URL (301 or 302), Telegram may not follow the redirect correctly, resulting in a missing or fallback image. Always use the final direct URL of the image in your og:image tag. No redirects, no URL shorteners for image paths.
5. HTTPS Requirement
Telegram requires the og:image to be served over HTTPS. If your image URL starts with http://, Telegram will refuse to load it and fall back to either no image or a page-scraped image. Check your OG tag carefully. Even one character difference (http vs https) will break the image.
6. Firewall or Bot Blocking
If your server blocks the TelegramBot user-agent, Telegram's crawler can't fetch your page at all. The result is either no preview or a preview built only from what Telegram can infer from the URL structure. Check your Cloudflare settings, WAF rules, and robots.txt.
Forcing Telegram to Re-Scrape a URL
Unlike Facebook (which has the Sharing Debugger) or Twitter (which has the Card Validator), Telegram has no official developer tool for invalidating the link preview cache. However, there are several practical approaches.
Method 1: Change the URL
Adding a query parameter to your URL forces Telegram to treat it as a new URL and scrape fresh metadata. For example, change https://yoursite.com/page to https://yoursite.com/page?v=2. Telegram will fetch the new URL and pick up your updated OG tags. The downside is users who had the old URL bookmarked won't see the updated preview in old messages.
Method 2: Wait for Cache Expiry
Telegram's cache is not permanent. For most URLs, the cached preview expires within a few days to a week. If you've fixed your OG tags and can wait, new shares of the same URL after the cache expires will show the updated preview. This approach works when there's no urgency.
Method 3: Use the @WebpageBot
Telegram has a bot called @WebpageBot. Send it your URL and it fetches a fresh preview. While this doesn't clear Telegram's main cache (your subscribers still see the cached version in your channel), it can confirm whether Telegram is now reading the correct OG tags from your page. It's a useful diagnostic tool.
Method 4: Edit the Message
In Telegram channels, if you edit a message that contains a link, Telegram re-fetches the preview. This can refresh the cached preview for that specific message. This works for channel posts you control, but not for messages others have sent with your URL.
Method 5: Delete and Repost
For channel posts, delete the message and repost it with the same URL. Telegram will scrape fresh metadata. This is the most reliable approach when you've fixed your OG tags and need the correct preview to appear immediately in your channel.
🔗 Verify Your Fix Before Reposting
Before you delete and repost that channel message, confirm your OG tags are actually correct. SharePreview lets you check what Telegram's crawler will see, so you know the fix is working before going live.
Verify My OG Tags →Platform Comparison: Telegram vs Facebook vs Twitter vs Others
| Feature | Telegram | Twitter / X | |||
|---|---|---|---|---|---|
| Scraping method | Server-side | Server-side | Server-side | Server-side | Server-side |
| Runs JavaScript? | No | No | No | No | No |
| Recommended image | 1280x640 | 1200x630 | 1200x628 | 1200x627 | 1200x630 |
| Aspect ratio | 2:1 | 1.91:1 | ~1.91:1 | ~1.91:1 | 1.91:1 |
| Cache invalidation | No official tool | Sharing Debugger | Card Validator | Post Inspector | No official tool |
| Platform-specific tags? | No (OG only) | No (OG only) | Yes (twitter:) | No (OG only) | No (OG only) |
| Preview in feed/channels? | Yes | Yes | Yes | Yes | Yes (chats) |
| Preview in DMs? | Yes | Yes (Messenger) | Yes | Yes | Yes |
| User-agent string | TelegramBot (like TwitterBot) | facebookexternalhit/1.1 | Twitterbot/1.0 | LinkedInBot/1.0 | WhatsApp/... |
Key Differences from Facebook
The biggest practical difference between Telegram and Facebook for link previews is the cache invalidation story. Facebook gives you the Sharing Debugger, a clean way to force a re-scrape and see exactly what Facebook reads. Telegram gives you nothing comparable. You're either waiting for cache expiry, changing the URL, or editing/deleting messages. This makes getting your OG tags right before sharing especially important for Telegram.
Key Differences from Twitter
Twitter has its own twitter: namespace meta tags (twitter:card, twitter:title, twitter:image) that unlock additional behavior like large image cards vs summary cards. Telegram doesn't have an equivalent. Everything in Telegram is controlled through the standard og: tags. Also, Twitter's Card Validator is another official debugging tool Telegram lacks.
Channels vs Groups vs DMs: Preview Differences
Telegram has three main contexts where you might share a URL: channels, groups, and direct messages. The preview behavior is slightly different across these.
Telegram Channels
Channels are broadcast-only and typically used for publishing content to large audiences. Link previews in channels are displayed prominently: the image appears as a full-width banner above the title and description. This is the most impactful context for OG images. A strong, correctly sized image (1280x640) makes a significant difference in click-through rates in channels.
Telegram Groups
Groups are multi-participant conversations. Link previews appear as cards within the message thread, somewhat smaller than channel displays. The same OG tags apply but the image is displayed in a more compact format. Descriptions may be truncated more aggressively.
Direct Messages
In one-on-one DMs, Telegram shows a preview card similar to how WhatsApp or iMessage handles link previews. The image is shown as a medium-sized thumbnail. The title and a snippet of description appear beside or below the image. Users can tap the card to open the URL.
Inline Bot Links and Forwarded Messages
When a message is forwarded, Telegram carries the preview with it from the original message. The preview doesn't get re-scraped on forward. If the original preview was wrong, the forwarded version will also be wrong. This is another reason to catch preview issues before the first send.
Testing Your Telegram Link Preview
Because Telegram has no official debugging tool, testing requires some creativity. Here are the practical approaches.
Use share-preview.com (Fastest)
share-preview.com fetches your URL and shows you the OG metadata your page exposes. Since Telegram reads the same standard OG tags, what you see in SharePreview is what Telegram's crawler will see. This is the fastest way to verify your og:image, og:title, and og:description are correct before sending to a channel.
Use @WebpageBot
Send your URL to @WebpageBot on Telegram. It responds with the preview Telegram generates for that URL, including the image, title, and description. This uses Telegram's actual preview infrastructure, so it's the most accurate test. It doesn't clear caches, but it tells you what the current scraped data looks like.
Create a Private Test Channel
Create a private Telegram channel with just yourself as a member. Post your URL there to see exactly how the preview looks in a real channel context. This shows you the full-width channel display format, which is the most important context to get right.
View Source Check
Right-click your page and view source. Search for og:image. Confirm it exists in the raw HTML (not injected by JavaScript), uses HTTPS, and points to a valid image URL. This takes 30 seconds and rules out the most common issues before any other testing.
Common Telegram Link Preview Issues and Fixes
| Issue | Most Likely Cause | Fix |
|---|---|---|
| Wrong image in preview | No og:image tag; Telegram scraped page content | Add explicit og:image tag with HTTPS URL |
| Old image shows despite fixing og:image | Telegram cache | Add ?v=2 query param or delete/repost the message |
| No preview at all | TelegramBot user-agent blocked by server | Whitelist TelegramBot in WAF/Cloudflare rules |
| Preview shows logo instead of article image | og:image missing; Telegram picked first large image (logo) | Add og:image pointing to the correct image |
| Image shows but looks cut off | Image too tall or wrong aspect ratio | Use 1280x640 (2:1 ratio) for optimal Telegram display |
| Text-only preview despite having og:image | Image URL uses HTTP instead of HTTPS | Change og:image URL to use https:// |
| Duplicate og:image tags in page source | Multiple SEO plugins outputting conflicting tags | Deactivate conflicting plugins; use one authoritative OG plugin |
| OG tags present but Telegram doesn't read them | OG tags set by JavaScript (SPA/CSR) | Move OG tags to server-side rendering |
| Preview correct in @WebpageBot but wrong in channel | Old cached version in channel | Edit or delete/repost the channel message |
| og:image returns 404 | Image file moved, renamed, or deleted | Fix the image URL or re-upload the image |
The Specific Case of WordPress + Multiple SEO Plugins
WordPress sites running multiple SEO plugins (e.g., Yoast SEO and RankMath both active, or Yoast alongside a social sharing plugin) frequently end up with two or more og:image tags in the page source. Telegram reads the first one it encounters. If a plugin is outputting a stale or incorrect image first, that's what Telegram shows regardless of what your "main" SEO plugin says.
The fix: go to your page's source (right-click, View Source), search for og:image, and count how many appear. If there are two or more, deactivate the plugin causing the duplicate. In WordPress, check Settings in each SEO plugin for a "social" or "Open Graph" toggle and disable it in all but your primary plugin.
JavaScript-Rendered Pages
Single-page applications built with React, Vue, or Angular typically insert meta tags via JavaScript after the page loads. Telegram's crawler doesn't run JavaScript, so it only sees the initial HTML. If your OG tags aren't in that initial HTML, Telegram won't find them.
For Next.js, use the built-in metadata export (App Router) or next/head with server-side data. For other frameworks, look for SSR (Server-Side Rendering) or SSG (Static Site Generation) options. If refactoring isn't feasible, a pre-rendering proxy that injects OG tags before serving to crawlers is a viable workaround. See our guide on Next.js OG images for implementation details.
Frequently Asked Questions
Does Telegram support Twitter Card tags?
Telegram reads Twitter Card meta tags as a fallback when OG tags are missing. In practice, set proper og: tags and Telegram will use those. You don't need to maintain separate Twitter Card tags just for Telegram.
How long does Telegram cache link previews?
Telegram doesn't publish its cache TTL. Based on developer observations, caches typically expire somewhere between a few hours and a few days. For high-traffic URLs that have been widely shared, the cache may persist longer due to active refresh heuristics. There's no guarantee of a specific expiry time.
Can Telegram preview pages that require authentication?
No. Telegram's server-side crawler is anonymous. It has no session cookies, no login credentials, and cannot access content behind authentication walls. If your page requires a login to view, Telegram will either see the login page's OG tags or fail to load the page entirely.
Why does the preview show correctly on my phone but not for others?
Your phone might be serving a cached version you see locally while others see Telegram's cached version from before your fix. Try sending the URL to @WebpageBot to see what Telegram's servers currently have cached for that URL.
Do Telegram bots use the same preview system?
When a Telegram bot sends a message with a URL, the same preview system applies. The bot doesn't have special control over which image Telegram displays; it depends entirely on the OG tags of the linked page. If the bot uses the Telegram Bot API's parse_mode and sends messages with inline keyboards or media, previews behave like any other message.
🔗 Check Your Telegram Link Preview Now
Paste your URL into SharePreview to see what Telegram's crawler will find. Verify your image, title, and description before posting to your channel.
Test My Link on Telegram →Related Guides
- WhatsApp Link Preview: Why It's Wrong and How to Fix It
- Discord Link Embeds: OG Tags and Embed Settings
- Slack Link Preview: OG Tags and Unfurl Settings
- Facebook Link Preview: Complete Fix Guide
- Open Graph Tags: The Complete Reference Guide
- Social Media Preview Not Showing? Full Diagnosis Guide
- OG Image Size Guide for Every Platform