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.
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
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
<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
curl -I \ https://example.com/media/cover.jpgThe 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
<!-- 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.
Social Preview Can Have Multiple Independent Cache Layers
page HTML cache ↓CDN / reverse proxy cache ↓image cache ↓platform crawler cache ↓preview already attached to a postThat 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
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
/media/article-cover-v1.jpg/media/article-cover-v2.jpg or /media/article-cover.jpg?v=2The 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
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
[ ] 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 requestDifferent 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.

