How to Test Link Previews on Facebook, LinkedIn, and X
Check how Facebook, LinkedIn, and X display your link before posting. Fix stale previews by checking page metadata and refreshing each platform’s cache.
To test a link preview before posting, publish the page with its intended metadata, then check the URL in each platform’s own preview workflow: LinkedIn’s Post Inspector, Facebook’s Sharing Debugger, and X’s post composer. If a preview is old, refresh that platform’s cached view and test again. Each service fetches and caches URLs independently, so a successful refresh on one does not confirm what the others will show.
A preview checker is a diagnostic aid, not a guarantee of the exact layout every user will see. The platform must be able to fetch your public page and its preview image. A third-party screenshot of the page can help inspect what is visibly rendered, but does not replace platform-specific preview testing.
1. Prepare the page before testing
- Publish the page first. Make sure the URL is publicly accessible to the platform’s crawler. A preview tool cannot show metadata from a page it cannot fetch.
- Set the intended preview metadata. Check the page’s Open Graph title, description, and image, along with the normal page title and content. Preview cards commonly draw on Open Graph metadata. Confirm that the image URL points to the image you intend to share.
- Use the final URL. Test the exact public URL you plan to post, including any path or query string that matters. Redirects can lead to a different final page than expected.
- Test each destination separately. Use LinkedIn’s Post Inspector, Facebook’s Sharing Debugger, and X’s composer workflow. Do this after every metadata or image change.
If you need to inspect the rendered page itself, a browser screenshot can show what loads at a URL. It is useful for checking visible content, but it does not prove that a social platform has re-fetched its cached card.
2. Test and refresh a LinkedIn preview
Use LinkedIn Post Inspector to enter the URL and inspect the preview information LinkedIn fetches. If it shows old information, use the inspector’s refresh function, then check the URL again before creating a new post.
LinkedIn says refreshing through Post Inspector affects the preview image and information for new posts that include the URL. Existing posts keep their old preview. If the stale card is already in a published post, refreshing the URL does not rewrite that post’s preview.
3. Test and refresh a Facebook preview
Use Meta’s Sharing Debugger to inspect the URL. The workflow described by the available cross-platform guidance is to use Scrape Again to request a fresh fetch for Facebook and Messenger. Check the tool’s current instructions and button labels, since they can change.
After the fresh scrape, inspect the information shown and correct the page metadata or image if needed. Then scrape again. A refreshed Facebook result says nothing conclusive about LinkedIn or X: repeat the checks on those platforms too.
4. Test an X preview
Compose a post containing the URL and inspect the preview in X’s composer before publishing. The available research reports that X’s standalone Card Validator has been retired, but did not find an official X source confirming its current status or a replacement refresh tool. Check current X Help before relying on a specific validator or cache-refresh process.
If the composer does not show the card you expect, confirm that the page is public and its metadata and image are current. Then try again after the page changes are available. Do not assume that refreshing a URL on Facebook or LinkedIn also refreshes X.
5. Diagnose the result
| What you see | Likely explanation | What to do |
|---|---|---|
| The old image or description appears | The platform has cached an earlier scrape. | Refresh the URL in that platform’s tool where supported, then inspect again. LinkedIn’s refresh applies to new posts, not existing ones. |
| No preview appears | The platform may not be able to fetch the page or image, or the composer may not have loaded the card. | Check public accessibility, redirects, metadata, and the image URL. Retry in the relevant platform workflow. |
| One platform looks right and another does not | Platforms fetch and cache independently and may render differently. | Run the platform-specific check again; do not treat one platform’s result as a pass for all. |
| A third-party preview differs from the social post | The third-party rendering is an approximation, not the destination’s exact card. | Use the destination’s own inspector or composer as the final check. |
| An existing post still has the old image | Refreshing LinkedIn’s URL preview affects future posts only. | Expect the existing LinkedIn post to retain its preview; test the refreshed URL on a new post. |
6. Use screenshots to inspect the page itself
A screenshot can help answer a different question: what does the page look like when a browser loads it? For example, capture the public page after its intended visual changes and inspect whether the hero image or content is present. This can help identify a visibly broken page, but a screenshot cannot establish what a platform’s cached link card contains. Pair page inspection with the native platform checks above.
ScreenshotNeo is a website screenshot API and MCP server for developers. Its URL capture can provide a visual check of a page; social preview refreshes still need to be checked on the platform that will display the link.
Or skip the browser setup
Capture the page with one API request. See the ScreenshotNeo API documentation for options.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
ScreenshotNeo accepts cookie or consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers report the page verdict and billing status. Its MCP server gives AI agents tools to take screenshots, get page information, and capture PDFs. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000.
Sign up for 1,000 free screenshots a month, with no card required.
Performance, reliability, and cost
- Performance: Run the platform checks after the final page and image are published, so you avoid repeating scrapes for unfinished changes. Keep a checklist of the three destinations because their caches are separate.
- Reliability: Use each platform’s own tool or composer to inspect its preview. A general-purpose renderer and a page screenshot are approximations of the destination card.
- Cost: The workflows described here use the platforms’ preview tools. If adding automated visual checks, account for the screenshot service’s plan and capture volume; ScreenshotNeo’s free tier has 1,000 shots a month, and paid plans begin at $5 for 3,000.
FAQ
Why is my link preview showing the old image?
The platform may have cached an earlier scrape. LinkedIn documents this behavior for URLs shared before. Refresh the URL in the platform’s tool where available, then verify again there.
Does refreshing LinkedIn update a post that is already published?
No. LinkedIn says Post Inspector refreshes the URL preview for new posts; existing posts retain their current preview.
How do I test a link preview before posting?
Check the URL in LinkedIn Post Inspector and Facebook Sharing Debugger, then inspect the card in X’s composer. Verify every destination separately.
Can a screenshot API tell me exactly what Facebook, LinkedIn, or X will show?
No. A screenshot API captures a web page. Use the destination’s own preview workflow to check its cached link card.


