What this Open Graph checker actually tests
Most "OG preview" tools read the tags and draw a card. That misses the failures that matter in practice, so this checker goes further:
- Fetches the share image and reads its real pixel dimensions and file size. A 1200×630 tag on a 300 KB PNG passes; the same tag on a 4 MB PNG fails on WhatsApp and looks fine everywhere else, which is exactly the kind of bug nobody notices for months.
- Compares canonical and og:url. When they disagree, LinkedIn and Facebook can attribute your share to the wrong URL and the share counts split.
- Checks the fallbacks. If og:title is missing, platforms fall back to the <title>, which is usually written for Google and too long for a card. We flag when the fallback will look bad, not just when the tag is absent.
- Reads robots and JSON-LD so you also learn if the page is quietly blocked from indexing or has broken structured data.
Each issue comes with a concrete fix, and the generated head block at the bottom is built from what the page already has so you only need to fill in the gaps.
The tags that matter, in priority order
| Tag | Used by | Why it matters |
|---|---|---|
| og:image | Everyone | Determines whether a link gets a large card or a grey box. Biggest driver of click-through. |
| og:title | Everyone | Card headline. 60 characters or fewer survives truncation on every platform. |
| og:description | Facebook, LinkedIn, Slack, iMessage | Shown under the title. X ignores it in the large card format. |
| twitter:card | X | Must be summary_large_image or X renders a small thumbnail. |
| og:url | Facebook, LinkedIn | Canonical URL for share counts and deduplication. |
| og:site_name | LinkedIn, Slack, Discord | Brand line above the title. |
| og:type | website or article. Affects how the object is stored in the graph. | |
| og:image:alt | X, Mastodon, Bluesky | Accessibility text for the image. |
Share image specs that work everywhere
- Size: 1200×630 px. This is the 1.91:1 ratio Facebook and LinkedIn crop to, X accepts it for summary_large_image, and Slack scales it down cleanly.
- Minimum: 600×315 px for a large card. Anything below 200×200 is rejected outright.
- Weight: under 300 KB is safe on every platform. WhatsApp regularly refuses images above about 600 KB, X and LinkedIn cap at 5 MB.
- Format: JPEG for photos, PNG for graphics with text. WebP is supported by Facebook, X and LinkedIn but not by every messaging app, so keep a PNG/JPEG fallback if WhatsApp matters to you.
- Safe area: keep text at least 60 px from the edges. Square crops (Slack, some mobile clients) cut off the sides.
- HTTPS only. An http:// image URL is silently dropped by Facebook and X.
Common mistakes this tool catches
- Relative image path.
og:image="/og.png"is not valid; crawlers need an absolute URL. - Image behind a redirect or an auth wall. The tag is correct but the image returns 302 or 403 to the crawler.
- Different image per platform, none of them right. twitter:image points at one file, og:image at another; both are 800 px wide.
- Duplicate tags from two plugins. The first one wins on most platforms, and it is usually the default one your theme injected.
- Canonical pointing at the staging domain. Copy-pasted from a template and never updated.
- noindex left on after launch. Not a social issue, but you will be glad you found it.
How to refresh a cached preview
Crawlers cache previews aggressively. After fixing your tags:
- Facebook and Instagram: paste the URL into the Sharing Debugger and press "Scrape again".
- LinkedIn: use the Post Inspector; it re-fetches on demand.
- X: there is no public validator any more; caching lasts about seven days. Adding a harmless query parameter (
?v=2) forces a fresh card immediately. - Slack and Discord: cache per workspace or server for a few hours; there is no manual purge.
- WhatsApp and iMessage: cache per device. Send the link from another device to confirm.
Frequently asked questions
- Why does my link show no image even though og:image is set?
- The most common causes are: the image URL is relative or http://, the file is over the platform's size limit (about 600 KB for WhatsApp, 5 MB for X and LinkedIn), the image is smaller than 200×200 px, or the crawler gets a 403/redirect when it fetches the file. This tool fetches the image the same way a crawler does and reports which one it is.
- What size should an Open Graph image be?
- 1200×630 pixels, under 300 KB, JPEG or PNG. That single file renders correctly on Facebook, LinkedIn, X (with twitter:card set to summary_large_image), Slack, Discord, WhatsApp and iMessage.
- Do I need both og: and twitter: tags?
- You need twitter:card, otherwise X shows a small thumbnail card. For everything else X falls back to the og: equivalents, so twitter:title, twitter:description and twitter:image are optional unless you want X-specific copy.
- I fixed the tags but the preview still looks old.
- Platforms cache previews for days. Use Facebook's Sharing Debugger or LinkedIn's Post Inspector to force a re-scrape. On X, add a query parameter such as ?v=2 to the URL to bypass the cache.
- Does this tool store the pages I check?
- No. The page and its image are fetched once to produce the report and are not stored. Requests are rate limited per network to keep the tool free.
- Can I check pages behind a login?
- No, and neither can Facebook or Google. Social crawlers fetch pages anonymously, so any page that needs a session will show whatever your login page's tags say.
