0% прочитано

Telegram Shows the Open Graph Image but LinkedIn Does Not: Debugging Social Preview Caches

One platform may already show the new Open Graph image while another still serves an older preview. That does not always mean your meta tags are wrong. Debug HTML, SSR, og:image accessibility, HTTP responses, and each crawler cache separately.

29 жовтня 2026 р. 9 хв читанняFrontend

After changing a cover image or SEO metadata, you may see a strange result: Telegram already displays the new og:image, while LinkedIn still shows the old image or no image at all.

The first reaction is usually simple: "Open Graph is configured incorrectly."

But if one platform already reads the correct image, that is a strong signal that the problem may not be the tags themselves. It may be when and how a particular platform last crawled the page.

A social preview has at least two separate layers: what the page serves now and what a particular platform has already stored in its own cache.

Correct Open Graph Does Not Mean Every Platform Refreshes Immediately

Telegram, LinkedIn, and other services do not have to fetch a page at the same time.

Each service has its own crawler, re-fetch behavior, and cache.

The same URL can therefore show different previews on different platforms at the same moment.

First Verify the HTML the Crawler Actually Receives

Inspect Open Graph tags in the server response
curl -s https://example.com/article \  | grep -iE \    'og:title|og:description|og:image|og:url'

Do not start by blaming cache until you confirm that the current HTML response actually contains the expected values.

This matters especially for client-rendered applications. If meta tags change only after JavaScript runs in the browser, a social crawler may never see them.

For that case, SSR or server-rendered meta tags are often essential.

Verify the Core Open Graph Tags

Minimal set for an article page
<meta property="og:title"      content="Article title"> <meta property="og:description"      content="Article description"> <meta property="og:image"      content="https://example.com/media/cover.jpg"> <meta property="og:url"      content="https://example.com/article"> <meta property="og:type"      content="article">

If Telegram already shows the correct image, og:image is probably reachable by at least one external crawler.

Still, verify the full tag set, absolute URLs, and the absence of conflicting values.

Verify the og:image URL Itself, Not Just the Page

Inspect the image HTTP response
curl -I \  https://example.com/media/cover.jpg

The image must be reachable without authentication or a private browser session.

Check the HTTP status, Content-Type, redirects, and whether a crawler can actually fetch the file.

If the URL works only in your browser because of cookies or private access, a social platform may fail to retrieve it.

Use Absolute URLs for Social Preview Metadata

Absolute URL for og:image
<!-- Better --><meta property="og:image"      content="https://example.com/media/cover.jpg"> <!-- Avoid relying on --><meta property="og:image"      content="/media/cover.jpg">

The Tricky Case: Image Content Changed but the URL Did Not

Imagine that /media/post-cover.jpg was replaced with a new file while the URL stayed the same.

Your browser may show the new file correctly, especially after clearing local cache.

But a social platform may already have cached the old asset under that URL and have no reason to download it again immediately.

When image content changes, a new URL or versioned path is often more reliable than replacing a file at the old address.

Social Preview Can Have Multiple Independent Cache Layers

Caching may exist at several layers
page HTML cache    ↓CDN / reverse proxy cache    ↓image cache    ↓platform crawler cache    ↓preview already attached to a post

That is why "I changed the tag" does not automatically mean "LinkedIn already sees the new tag."

The first debugging goal is to identify which layer still holds the stale state.

Telegram and LinkedIn Do Not Validate Each Other’s Cache

If Telegram shows the new cover, that proves Telegram was able to retrieve it.

It does not prove that LinkedIn has re-crawled the page.

Likewise, an old LinkedIn preview does not prove that the current Open Graph markup is wrong.

Editing an Existing Post May Not Rebuild Its Old Preview

Another separate case appears when a link was already attached to a post and the page or cover changed later.

Even after the URL is re-crawled, the card already attached to an existing post may behave differently from a fresh insertion of the same link.

During debugging, compare a newly generated preview with the card that was already attached to an older post.

Debug in the Right Order

Debugging sequence
1. Inspect HTML without browser JavaScript.2. Verify og:title / og:description / og:image / og:url.3. Fetch og:image directly.4. Check HTTP status and Content-Type.5. Inspect redirects.6. Confirm the image URL is absolute.7. Check whether content changed under the same image URL.8. Inspect the cache of the specific platform.9. Test a fresh insertion of the URL.10. Only then change Open Graph logic.

Do Not Rewrite Correct Code Because of a Stale Cache

This is one of the most frustrating traps.

When a preview looks wrong, it is easy to start changing SSR, meta tags, canonical URLs, or media generation even though the current HTML is already correct.

You can create a new bug while trying to fix a stale cache.

Use Stable URL Versioning for Replaceable Covers

A new resource identifier after content changes
/media/article-cover-v1.jpg/media/article-cover-v2.jpg or /media/article-cover.jpg?v=2

The important idea is not the exact query format. It is that changed image content can receive a new resource identifier.

This reduces dependence on when an external crawler decides to refresh the old URL cache.

For SPAs, Verify the Server HTML

In a Vue/Inertia application, the browser may show the correct title and meta after hydration while a social crawler only sees the initial HTML response.

That means checking DevTools after the page fully loads is not always enough.

A stronger check is to inspect raw HTML with curl or another client that does not execute JavaScript.

Make Sure User-Agent Does Not Accidentally Change the HTML

Compare responses for different User-Agent values
curl -s \  -A "Mozilla/5.0" \  https://example.com/article \  | grep -i 'og:image' curl -s \  -A "SocialPreviewBot" \  https://example.com/article \  | grep -i 'og:image'

Normally, the page should serve the same Open Graph data regardless of crawler.

If a reverse proxy, middleware, or bot-protection layer changes the response for a particular User-Agent, that becomes a separate cause of incorrect previews.

Server Logs Help With Crawler Debugging

If it is unclear whether the platform actually revisited the page, web-server logs can help.

They may show request time, User-Agent, HTTP status, and whether the crawler fetched the og:image resource separately.

This is stronger evidence than assuming that a manual refresh action necessarily caused a new crawl.

Keep a Small Social Preview Test Matrix

Minimal verification matrix
[ ] raw HTML contains current OG tags[ ] og:image returns 200[ ] og:image Content-Type is image/*[ ] image is public[ ] redirects are valid[ ] canonical and og:url point to expected page[ ] SSR output matches browser-visible metadata[ ] Telegram shows expected preview[ ] LinkedIn fresh preview shows expected data[ ] server logs confirm crawler request

Different Platform Previews Do Not Automatically Mean Different HTML

When Telegram already sees the new Open Graph image while LinkedIn still shows the old one, that is not a reason to immediately rewrite your SEO logic.

First prove the current server HTML, og:image accessibility, HTTP response, and SSR output.

If those are correct, the next suspect is the platform-specific cache or an already stored card attached to an older post.

Debug social preview as a chain: HTML -> image URL -> HTTP -> crawler -> platform cache -> specific post card.

If one platform already sees the correct image and another does not, debug not only Open Graph but also crawl timing and the cache of the specific platform.