How to Test URL Unfurl and Link Previews Before Sharing
Sharing a link with a broken or embarrassing preview — wrong title, missing image, someone else's description — is easy to avoid. Testing takes less than a minute, and catching it before you share is far better than discovering it after.
This guide walks through exactly how to test URL unfurl results before any share: a plain-English explainer of what URL unfurling is, why pre-share testing matters, a complete step-by-step testing process, how to test link previews on each major platform, common URL unfurl issues and fixes, and the best practices that keep your link previews from breaking in the first place.
→ Test any link now with TryUnfurl — free, no login
What Is URL Unfurling?
URL unfurling is the process every social network and chat app runs when you paste a link. The platform fetches your page, reads Open Graph and Twitter Card tags from the <head>, downloads your og:image, and renders a preview card — title, description, image, site name — right in the message or post. Facebook does it. LinkedIn does it. Slack, Discord, iMessage, WhatsApp, Telegram, Microsoft Teams all do it.
When the URL unfurl is wrong, the fix is almost always on your page (a missing tag, a broken image, JS-only rendering) or in the platform's cache (fixed tags, stale preview). Testing catches both failure modes before your audience sees either.
Why Test URL Unfurl Before Sharing?
Link previews are generated from your page's metadata at the moment the link is first shared. If your metadata is wrong:
- The wrong image appears
- The wrong title is shown
- No preview card appears at all
- Different platforms show different (inconsistent) information
Platforms also cache previews — so a broken URL unfurl that goes out at launch can stick around for hours or days, even after you fix the underlying metadata. Once it's cached, you have to force each platform to re-scrape, which is extra work you can skip entirely by testing first.
A 30-second test catches:
- Broken
og:imageURLs that returned fine to your browser but 404 to crawlers - Tags that are in the DOM but were injected client-side (invisible to crawlers)
- Image dimensions below LinkedIn or Facebook's minimums
- CDN cache serving old HTML after a deploy
- Title or description truncation on specific platforms
Complete Step-by-Step Testing Process
Step 1 — Check your page's metadata
View your page source (Ctrl+U or Cmd+U) and look in the <head> section for:
og:titleog:descriptionog:imagetwitter:cardog:url
Open Graph tags are the universal baseline every major platform reads. If any are missing, add them before testing further. See the Open Graph tags guide for the complete reference and implementation examples.
Step 2 — Test across all platforms at once
Paste your URL into TryUnfurl. It renders preview cards for Twitter/X, Facebook, LinkedIn, Slack, Discord, and iMessage simultaneously — showing you both the visual preview and the raw metadata values.
This is the fastest way to spot cross-platform inconsistencies: an image that works on Facebook but fails on Slack, or a title that's correct on most platforms but truncated on Twitter.
Step 3 — Check the raw metadata values
In TryUnfurl, look at the detected metadata underneath the preview cards:
- Is
og:titleunder 60 characters? - Is
og:descriptionunder 155 characters? - Does
og:imageload at the right URL? - Are
og:image:widthandog:image:heightdeclared? - Is
og:urlthe canonical URL?
Step 4 — Verify the image loads publicly
Open the og:image URL in a private/incognito browser window. If it doesn't load there, platform crawlers can't fetch it either.
Step 5 — Test the live deployed URL
Always test the actual live URL — not a localhost address or staging environment. Platform crawlers fetch pages from outside your network and need a publicly accessible URL with a valid domain and SSL certificate.
Step 6 — Run the platform-specific debuggers
For high-stakes shares, validate on each platform's official tool:
| Platform | Testing tool |
|---|---|
| Sharing Debugger | |
| Twitter / X | Card Validator |
| Post Inspector | |
| Rich Results Test |
These also double as cache-busters: each tool re-fetches your page and updates the platform's internal URL unfurl cache.
Step 7 — Sanity-check in-app
The final check: paste your link into a draft post, a private Slack channel, or an iMessage to yourself. Confirm the real card matches what the tester showed.
Platform-Specific Testing
Different platforms care about different details. Here's what to look for on each when you test link previews:
og:title,og:description,og:image,og:urlall present- Image at least 1200 × 630 px for the full-width card
- No duplicate Open Graph tags on the page
- Scrape Again in the Sharing Debugger to force a re-fetch after a fix
Twitter / X
twitter:cardexplicitly set (usuallysummary_large_image)twitter:imageset or Open Graphog:imagefallback available- Run the URL through the Card Validator — each validation clears the cache for that URL
- Image at least 1200 × 627 px (LinkedIn is stricter than most platforms)
- LinkedIn ignores Twitter Card tags entirely — Open Graph only
- Use Post Inspector → Regenerate preview to clear LinkedIn's cache
Slack
- Open Graph tags server-rendered (Slackbot doesn't run JavaScript)
- Image accessible to Slackbot (check WAF rules)
- Delete and re-share to force a fresh URL unfurl after a fix
Discord
- Append
?v=2(or any query string) to force a new URL unfurl past Discord's cache - Image at least 300 × 157 px
- Angle brackets around a URL suppress the embed — make sure they're not in your pasted text
For full platform-by-platform guides, see Facebook, LinkedIn, Slack, Discord, iMessage, WhatsApp, Teams, and Telegram.
What to Look for When Testing
| Check | What to look for |
|---|---|
| Title | Correct, under 60 chars, not truncated |
| Description | Accurate, under 155 chars |
| Image | Correct image showing, not pixelated, not missing |
| Image size | 1200 × 630 px — anything smaller may be skipped |
| Consistency | Same info across all platforms |
| No fallback | Not reverting to generic <title> or page text |
| Canonical match | og:url matches the URL you're actually sharing |
| HTTPS | All URLs (page and og:image) are HTTPS |
Troubleshooting Common URL Unfurl Issues
og:imageis a relative URL —/images/og.jpginstead ofhttps://example.com/images/og.jpg. Crawlers don't guess.- JavaScript-rendered tags — TryUnfurl shows empty metadata because the page uses client-side rendering without SSR. Switch to server-side rendering, static site generation, or pre-rendering.
- Wrong page being previewed — a redirect is sending the crawler to a different URL than intended.
- OG tags present but image too small — the tags exist but the image dimensions are below platform minimums (LinkedIn wants 1200×627px; Facebook downgrades below 600×315px).
- Stale CDN cache — TryUnfurl shows old metadata because your CDN hasn't been purged since the last deploy.
- Signed-URL
og:image— a signed CDN URL that expires will eventually return 403 to crawlers. - Blocked bot user-agents — aggressive WAFs can block
facebookexternalhit,Slackbot,Discordbot,LinkedInBot,Twitterbot. Check your access logs.
Deeper diagnosis lives in the link preview troubleshooting guide and the 7 root causes of broken previews.
Best Practices for Link Preview Optimization
Once your URL unfurl tests pass, lock in the quality with a few habits:
- Treat
og:titleas ad copy, not SEO copy. Write for the click. - Design the
og:imagefor the crop. Keep the brand and value prop in the center 800×400 px. - Set a site-wide default
og:image. No page should ever ship naked. - Ship tags server-rendered. Never inject OG tags via client-side JS.
- Audit monthly. Run evergreen pages through the bulk URL unfurl checker to catch silent regressions.
- Automate in CI/CD. Use the TryUnfurl API to assert
og:image,og:title, andog:descriptionafter every deploy. - Document your OG image pipeline. Marketing shouldn't need to ask engineering every time.
Test Your Link Now
Paste any URL into TryUnfurl to see exactly how it will look when shared — across every major platform, in under 30 seconds. Testing multiple URLs? The bulk URL unfurl checker runs up to 100 URLs in one pass.