Link Preview Not Working? Find Where It Breaks
A missing preview can start with your page, its image, the sharing app, or an old cached result. Find which layer failed before changing tags or clearing caches.
Start with the exact link you shared
Copy the complete URL from the message or post. Keep its path and query parameters. A homepage, a product page, and a shortened link are different tests. If you only test the homepage, you can miss a problem on the page your audience opens.
Open the URL in a private browser window. A login screen, access challenge, expired download, or unexpected destination is already a useful clue. A page that works with your own cookies may not be public.
Then inspect the link with Proovd. Its layouts approximate supported platforms using fetched metadata. They do not read each platform's private cache or prove that an existing post has refreshed.
Check the response before the tags
If you can use a terminal, fetch the page without your browser session:
curl -sS -L -D - 'https://example.com/article'This makes a GET request, follows redirects, and prints response headers and the returned body. Look for the final status, final page, and an HTML response containing your content. A successful status alone is insufficient: a login form or security interstitial can also arrive as HTML with status 200.
If you see a challenge, investigate your hosting or firewall logs. The Cloudflare preview troubleshooting guide explains that branch. Merely sending a crawler's user-agent string does not reproduce a request from the platform's real network.
Read what the page actually returns
Search the returned HTML for og:title, og:description, og:image, and og:url. Compare their values with the page you intended to share. The Open Graph specification defines the properties; start with the values that are actually present rather than adding every possible tag.
If the tags appear in your browser's Elements panel but are absent from the fetched response, investigate rendering. Our React and Vite guide explains how that difference happens. If every page returns the homepage's values, follow the same preview on every page guide.
Test the image as a separate request
Copy the exact image URL from the metadata and open it without signing in. It should return an image, rather than a file-sharing viewer or an HTML error. Expiring URLs and protected images can stop working after the page was first checked.
Use the OG image checker to inspect the image, then follow the unreachable image URL checklist if it cannot be fetched. Keep format, dimensions, and accessibility separate: a correctly sized image is still unusable if the crawler cannot download it.
Only then investigate the sharing platform
When the live response is correct, test a fresh share on the affected platform. Facebook has its own Sharing Debugger; LinkedIn has Post Inspector. Those services can help inspect what their platform fetches. A third-party simulator cannot clear their cache.
There is no universal refresh button or dependable cache lifetime across all apps. Changing a query parameter may test a different URL, but redirects or canonical handling can make that experiment inconclusive. It does not repair metadata. Use the cache guide alongside the platform-specific article below.
Choose the next check from the symptom
- No image: fetch the image URL and check the response.
- Homepage preview on a detail page: compare the original HTML for both paths.
- Old title or image: compare the live response with a fresh platform inspection.
- One app only: check its settings and behaviour before rebuilding the website.
- A URL you do not own: report the result to the owner; inspecting it does not give you control of its tags.
Keep a note of the exact URL, response, and changed value while testing. That makes the next recheck a comparison rather than another guess.