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.

Updated February 2026

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

  1. User types or pastes a URL into Telegram
  2. Telegram's client sends the URL to Telegram's backend
  3. Telegram's backend crawler fetches the URL and reads OG tags
  4. The preview card (image, title, description) is assembled server-side
  5. The message is sent with the preview embedded
  6. All recipients receive the same pre-built preview
🤖 Telegram's Crawler Does Not Run JavaScript Like most social media scrapers, Telegram's crawler reads the raw HTML returned by your server. It does not execute JavaScript. If your OG tags are set by client-side code (React, Vue, Angular SPA), Telegram won't see them. Use server-side rendering or static HTML.

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.

1280 × 640
2 : 1 ratio

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.

⚠️ Multiple og:image Tags Kill Previews CMS plugins (especially WordPress SEO plugins) sometimes output duplicate og:image tags when multiple plugins are active simultaneously. Telegram takes the first value, which may be stale or wrong. Use View Source to check for duplicates and deactivate conflicting plugins.

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 Facebook Twitter / X LinkedIn WhatsApp
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

IssueMost Likely CauseFix
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