Social card renderer
Every official card validator wants to fetch your page, which means it must be published, publicly reachable, and past whatever cache the platform is holding. Paste the tags instead — from a template you have not deployed, from a staging site, or from a page's source — and see what each platform will make of them, with the problems listed.
Issues
How it unfurls
Tags read
How to use
- Paste your tags. A whole
<head>, a block of<meta>tags, or plainog:title: My titlelines all work. - Read Issues first — missing tags, relative image URLs, insecure image URLs, and image dimensions outside what the large-card layouts expect.
- The unfurl panels show the fields each platform uses and its fallback order, so you can see which platform will show what.
- Tags read confirms exactly what was parsed, which is the fastest way to catch a typo in a property name —
og:desciptionsimply will not appear.
The fallback chains, which is what actually decides your card
No platform requires the full set; each falls back. Title: og:title, then twitter:title, then <title>, then the bare URL. Description: og:description, then twitter:description, then <meta name="description">, then nothing — and a card with no description is markedly less clicked. Image: og:image, then twitter:image; with none, the card is text-only and takes a third of the space.
Because of the fallbacks you rarely need the Twitter-specific duplicates — og:title and og:description serve X perfectly well. The one twitter: tag that does matter is twitter:card: without summary_large_image, X renders the small square thumbnail even when you have supplied a beautiful 1200×630 image.
The five mistakes that break real cards
A relative og:image. Crawlers have no base to resolve against — the tag is simply ignored. Every URL in Open Graph must be absolute, including og:url.
An image that needs authentication or blocks bots. Crawlers are not logged in, do not run JavaScript, and are blocked by some WAF rules. If the image is behind a login, a signed URL that expires, or a bot filter, the card renders empty and there is nothing in your HTML to suggest why.
Wrong dimensions. 1200×630 (1.91:1) is what the large-card layouts crop to. Below 600×315 most platforms drop to the small thumbnail; a square or portrait image gets centre-cropped, which is how half a headline ends up in the card. Declaring og:image:width and og:image:height lets platforms lay the card out before the image downloads, which avoids a first-share flash of a text-only card.
Aggressive caching. Platforms cache what they scraped, often for days. Facebook's Sharing Debugger has a "Scrape Again" button; LinkedIn's Post Inspector re-fetches; Slack caches per workspace and is the hardest to clear. A change to a live page's tags will not show in an existing share, which is exactly why previewing from source before you publish is worth doing.
Text inside the image. Cards are rendered small, and mobile smaller still. Text below roughly 40px in a 1200px-wide image is unreadable in the feed. Keep image text short and large, and never rely on it to carry the message — that is what the title is for.
FAQ
Why not just fetch my page like the real validators do?
A browser tab cannot fetch a cross-origin page without CORS permission, which your site will not have granted to this one. That constraint is also the feature here: pasting works for staging sites, for local templates, and for pages that are not published yet — the cases the official validators cannot handle.
Do I need Twitter-specific tags?
Only twitter:card, in practice. X reads the Open Graph tags for everything else. Adding the full duplicate set is harmless but doubles the tags you have to keep in sync.
How do I force a platform to re-read my tags?
Facebook Sharing Debugger → Scrape Again; LinkedIn Post Inspector → Inspect; X's card validator was retired, so posting to a draft is the check. Slack has no public purge — changing the URL (a new query parameter) is the reliable workaround.
Where do I generate the tags in the first place?
The OG / Twitter card meta builder builds the full set from fields, and the SERP snippet preview generates the title, description and canonical alongside their search-result rendering.