Open Graph image not updating
Replacing the file is not the same as changing the URL a platform already stored. Paste the page above and read the image URL in the result. Checking one URL is free, and it does not ask you to sign up. If that URL already returns the new picture and the share still shows the old one, the platform is serving a stored copy.
Why the old image sticks
- Facebook caches the image by its URL. Facebook's image guide says the crawler scrapes and caches the metadata from the URL you share, and that it caches every referenced image based on that image's URL. Replacing the bytes at the same address does not update the stored image. The guide's instruction is to use a new URL for the new image, and to leave the old file in place, because existing stories can still point at it. Changing the image for a page does not rewrite a share that was already posted. You refresh that stored preview separately. The first person to share an uncached URL can also see a card with no picture, because the crawler has to download the image before it can draw it. og:image:width and og:image:height let that first share render without waiting for the download. The same guide says you can pre-cache by running the page URL through the Sharing Debugger, or by a force-scrape with the Graph API.
- Point og:image at a new URL, then scrape. Give the new file its own address. A new filename does that. A query string on the image URL, such as og.png?v=2, is also a different URL, which is what Facebook's rule is about. Then put that address in og:image and scrape the page again in the Sharing Debugger at developers.facebook.com/tools/debug. You need to be logged in. The scrape updates the metadata Facebook has stored, including the image URL it will fetch. A query string on the page, such as ?v=2 on the article, is a different page. It does not change an image Facebook already saved under the old image URL, and the undecorated URL keeps the card it had. FacebookExternalHit is the crawler Meta documents for a link shared on Facebook, Instagram, or Messenger. The Instagram Link Preview Checker page covers that shared cache. This checker shows the tags your server sends and downloads the image URL. It does not clear Facebook's cache.
- Your own cache can answer first. If this checker still shows the old image URL, the HTML being fetched is the old HTML: a cached document, a CDN in front of the page, or a tag that never shipped. If the tag is the new URL and the downloaded file is still the old picture, the cache is on the image itself. A long Cache-Control max-age, or a CDN that ignores the new file, serves the previous bytes to every crawler. The new URL is how you miss that cache. Confirm the image URL on its own returns image/jpeg or image/png, with no login page, before you scrape again. SVG is a miss where a platform publishes a format list. Facebook's guide lists JPEG, GIF, and PNG.
- X, Slack, LinkedIn, and the rest. X does not publish a scrape-again tool, and it does not publish a rule that image bytes stay keyed to the image URL. The old Card Validator no longer shows a preview. A query string on the page is a different URL, fetched on its own. The original URL updates when X fetches it again. Slack caches the crawl for around 30 minutes and publishes no debugger. Share a URL Slack has not cached, or wait. Discord's link-preview docs say a preview is cached for about 30 minutes, and the way they document for seeing a change immediately is a new query string. The Embed Debugger at discord.com/developers/embeds shows the tags Discord read. LinkedIn's tool is Post Inspector. LinkedIn's help says that refresh applies to new posts, messages, and articles. Anything already published keeps the preview it had. WhatsApp, iMessage, and Reddit publish no refresh tool. The Refresh a Link Preview Cache page lists the tool each platform actually documents. A post or message that already stored a card keeps it. Fix the image URL, confirm it here, then share the link again where the platform requires a new post.
Tags covered: og:image · og:image:url · og:image:width · og:image:height · og:url · twitter:image
More checkers
Twitter Card ValidatorOpen Graph CheckerLinkedIn Link Preview CheckerDiscord Embed PreviewWhatsApp Link Preview CheckerSlack Link Preview CheckeriMessage Link Preview CheckerFacebook Link Preview CheckerOpen Graph Image SizeTelegram Link Preview CheckerReddit Link Preview CheckerNext.js Open GraphRefresh a Link Preview CacheBluesky Link Preview CheckerMastodon Link Preview CheckerMicrosoft Teams Link Preview CheckerFix a Broken Open Graph PreviewInstagram Link Preview CheckerPinterest Link Preview CheckerTikTok Link Preview CheckerYouTube Link Preview CheckerThreads Link Preview CheckerSnapchat Link Preview CheckerHow to Add Open Graph TagsDiscord Link PreviewX (Twitter) Link PreviewWordPress Open GraphShopify Open GraphAll platforms
What each platform reads
- X / Twittertwitter:card, twitter:* → og:* fallback1200×630 (min 300×157), < 5 MB
- Facebookog:title, og:description, og:image1200×630, 1.91:1
- LinkedInog:title, og:image (og: only)1200×627, 1.91:1
- Discordog:site_name, og:*, theme-color, twitter:cardLarge image needs summary_large_image
- Slackog:site_name, og:title, og:description, og:image1200×630
- WhatsAppog:title, og:description, og:imageKeep < 300 KB
Guidance based on each platform's public documentation and observed behavior. Platforms change their rules without notice.
FAQ
+Is Peekly free?
Yes. Checking a single URL is free forever — no signup and no limit on one-off checks. Batch watching and monitoring may arrive later as a paid Pro plan; the free single-URL tool stays.
+Why does my link show no image when I share it?
Usually one of four things: there's no og:image tag, the image URL is relative instead of absolute, the image is behind a login, firewall or bot block, or the file is too big or in an unsupported format like SVG. Peekly checks all four and tells you which one it is.
+What size should my og:image be?
1200×630 pixels (a 1.91:1 ratio) as a PNG or JPG under about 300 KB. That size works for large cards on X, Facebook, LinkedIn, Discord, Slack and WhatsApp.
+Do I need twitter: tags if I already have Open Graph tags?
X reads og:title, og:description and og:image as fallbacks, but you still need twitter:card set to summary_large_image if you want the big image card. Without it, X shows a small thumbnail.
+I fixed my tags but the old preview still shows. Why?
Platforms cache link previews, sometimes for days. Facebook and LinkedIn let you force a refresh with their own debugging tools. On X, Slack and Discord the cache usually expires on its own, or you can add a query string such as ?v=2 to the URL.
+Do you store the pages I check?
No. We fetch the page once to read its <head>, show you the result, and don't save the page or the result. We only fetch public http(s) URLs, and private or internal addresses are blocked.
+Are the previews pixel-perfect?
They're close approximations of each platform's current card layout, built from the same tags the platforms read. Platforms change their designs from time to time, so treat them as a very good guide rather than a screenshot.
$9
One time
A written fix for the batch.
Up to 25 URLs. We check og:image, Twitter cards, size, redirects, and cache, then send copy-paste meta tags within 48 hours. The free single-URL check stays free.