Open Graph Checker.
Paste a URL and see how it renders on X, Facebook and LinkedIn — with every Open Graph and Twitter tag listed. No JavaScript is executed: what you see here is what crawlers see.
What you'll get
- How your link looks on X, Facebook and LinkedIn
- Every Open Graph and Twitter tag, with what's missing
- The exact image crawlers will fetch — no JavaScript executed
What does an Open Graph checker do?
An Open Graph checker fetches a URL the way a social crawler does: raw HTML over HTTP, no JavaScript, no cookies. It then reports which meta tags it found and how X, Facebook and LinkedIn will assemble them into a card. It answers the one question a normal browser can't. What does the crawler actually see?
The gap is bigger than most people expect. Your browser runs your framework's JavaScript, carries your login session and applies every client-side patch; a crawler does none of that. A page can look perfect in DevTools and still ship a blank card, because the tags only exist after hydration.
Which tags decide the card?
This tool reads the full stack: <title> and meta description as the base layer; the six core Open Graph tags (og:title, og:description, og:image, og:url, og:type, og:site_name); the Twitter card family (twitter:card, twitter:title, twitter:description, twitter:image); plus rel=canonical to catch og:url mismatches. Each platform walks that stack differently:
| Platform | Reads | Fallback behavior |
|---|---|---|
| X / Twitter | twitter:* first | Falls back to og:* field by field; no twitter:card at all still yields a card on most links |
og:* only | Ignores twitter:*; missing og:title falls back to <title> | |
og:* | Missing tags fall back to <title> and meta description | |
| Slack / Discord | og:*; Discord also honors twitter:card | Missing og:image means a text-only unfurl |
Why does my preview look wrong?
- The tags are injected by JavaScript. Crawlers read the raw HTTP response and never run scripts. Server-render or prerender the head — client-side meta management is invisible to every major platform.
- The image URL is relative. The image is fetched out of context, and some crawlers won't resolve a relative path. Use a full
https://URL. - The platform cached an old version. The first share pins the card, and edits afterwards don't propagate until the cache expires or you force a re-scrape.
- Bot protection is challenging the crawler. A firewall that serves challenge pages to non-browsers feeds crawlers a card built from the challenge HTML. Your real tags never get read.
- The image is too large or the wrong type. X drops images over 5 MB, Facebook over 8 MB, and most platforms won't render SVG at all. PNG, JPEG or WebP at 1200 × 630 is the safe combination.
How do I refresh a platform's cache?
- Facebook — the Sharing Debugger has a "Scrape Again" button that re-fetches on demand.
- LinkedIn — the Post Inspector re-crawls the URL every time you inspect it.
- X — no public refresh tool since the Card Validator lost its preview; X re-crawls once its cache expires.
- Slack and Discord — both cache unfurls. The workaround that works everywhere is changing the URL, and a throwaway query string counts.
What this checker deliberately skips
It never executes JavaScript, and that's a feature: the platforms don't either. It only reads public pages; private and reserved addresses are refused. And the three previews are approximations. Platforms tweak their card UI constantly, so we track the stable part — which tags each platform reads and in what order — rather than chasing pixels.
Frequently asked questions
Is this Open Graph checker free?
Yes. No signup, no watermark. An hourly per-IP cap keeps the tool responsive; beyond that, any public URL is fair game.
Does the checker execute JavaScript?
No, deliberately. Facebook's, X's, LinkedIn's and Slack's crawlers don't either. If your meta tags only exist after hydration, this checker shows exactly the blank card those platforms will show. That's the point.
Why do X, Facebook and LinkedIn show different cards for the same URL?
They read different tags. X prefers twitter:* and falls back to og:* per field; Facebook reads og:* exclusively; LinkedIn reads og:* with <title> as a last resort. Same URL, three assembly rules.
The tags here look right, but the platform still shows old data.
That's the platform's cache, not your page. Force a re-scrape with Facebook's Sharing Debugger or LinkedIn's Post Inspector, or just change the image URL. A throwaway query string does it.
Do I need twitter:card if I already have Open Graph tags?
Strictly no, since X falls back to Open Graph. But an explicit summary_large_image is the difference between a full-width image and whatever X decides to render that week.
What size should og:image be?
1200 × 630 pixels. It matches Facebook's documented ideal, survives X's 2:1 crop, and sits one pixel row from LinkedIn's 1200 × 627. Our free OG image generator outputs exactly that.
Will checking a URL do anything to my site?
One controlled GET request for the HTML and, if present, one for the og:image (capped at 2 MiB). No JavaScript runs and no other assets load. About as invasive as a single crawler visit.
Why can't it read my localhost or staging site?
The checker only fetches public URLs. Private, loopback and reserved addresses are refused by design. Paste a deployed URL instead.
Ship social cards that never go stale
Shotium renders OG images and screenshots from one clean API — signed URLs keep your key private, and images update whenever the signed parameters change.
No card required. Failed renders never bill, and nothing auto-charges.