Work through each section before publishing. Every item is something that silently breaks a preview on at least one major platform.
Open Graph basics
- [ ]
og:titleis present and under 60 characters - [ ]
og:descriptionis present and between 150–160 characters - [ ]
og:imageis set to an absolutehttps://URL (not a relative path) - [ ]
og:imageis publicly reachable — open it in an incognito window to confirm - [ ]
og:imageis at least 1200×630 pixels at a 1.91:1 ratio (the safe cross-platform size; the minimum before platforms show a small thumbnail is ~600×315) - [ ]
og:urlmatches the canonical URL of the page - [ ] All four tags appear in the server-rendered
<head>, not injected by client-side JavaScript
Run the free Open Graph Checker to see which tags are missing, invalid, or too small.
Twitter / X
- [ ]
twitter:cardis set — usesummary_large_imagefor a full-width image card,summaryfor a small thumbnail - [ ] If using
summary_large_image, the image is at least 300×157 pixels at approximately a 2:1 ratio - [ ] A 1200×630
og:imagealready satisfies thesummary_large_imagerequirement — no separate image needed unless you want different framing on X
Canonical and metadata
- [ ] A
<link rel="canonical">tag is present and points to the current page's URL - [ ]
<title>is between 50–60 characters (longer titles are truncated in search results) - [ ]
<meta name="description">is between 150–160 characters - [ ] The page title and
og:titleare consistent (they can differ slightly, but should not contradict each other) - [ ]
og:urland the canonical both agree on the same URL (trailing slash,wwwvs. nowww,httpvs.https)
Per-platform check
Different platforms cache and render differently. Once your tags are correct on the live page, verify on each platform you share to:
- LinkedIn — use Post Inspector to force a cache refresh; LinkedIn caches scrapes for approximately 7 days
- X (Twitter) — paste the URL into a new draft post to see the live card; the Twitter Card Validator also shows the parsed tags
- Facebook — use the Sharing Debugger to re-scrape and confirm
- Slack and Discord — paste the URL in a channel; these scrape on-demand and generally reflect the current live page
- WhatsApp and iMessage — read
og:imagedirectly; keep the image file under ~300 KB for reliable rendering
If a platform shows a stale preview after you have fixed the tags, force a cache refresh using that platform's inspector tool before concluding something is still broken.
How to check each tag
Run the Open Graph Checker for og:* tags and the Twitter Card Validator for twitter:* tags. Both show exactly what a crawler would read from any URL and flag missing or malformed values before you share.