The recommended Open Graph image size is 1200×630 pixels — a 1.91:1 aspect ratio. That single size renders as a full-width card on Facebook, LinkedIn, and Slack, and satisfies X's large-image format too. Get the dimensions right and your links look professional everywhere they're shared; get them wrong and you get a cropped thumbnail or no image at all.
The number to remember: 1200 × 630
If you take away one thing: set your og:image to 1200×630 pixels. It's the size every major platform is built around, it's sharp on retina/high-DPI screens (which is why 600×315 — the old minimum for a large card — now looks soft), and it works as a universal default.
<meta property="og:image" content="https://yoursite.com/og-image.png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta name="twitter:card" content="summary_large_image" />
Adding the explicit width/height tags helps platforms render the card before the image finishes downloading — worth including.
Platform-by-platform specs
| Platform | Recommended | Aspect ratio | Notes |
|---|---|---|---|
| 1200×630 | 1.91:1 | Under 8MB; smaller files render faster | |
| 1200×630 | 1.91:1 | Same as Facebook; caches aggressively | |
| X (Twitter) | 1200×630 | 1.91:1 or 2:1 | Needs summary_large_image; else shows a small square |
| Slack / Discord | 1200×630 | 1.91:1 | Reads standard OG tags |
| 1200×630 | 1.91:1 | Prefers files under ~300KB or it may skip the image |
The good news: 1200×630 covers all of them. You don't need a matrix of sizes.
The file rules that quietly break previews
Dimensions are only half the story. These trip people up constantly:
- Use an absolute URL.
og:imagemust be a fullhttps://…URL, not/og-image.png. Relative paths are the single most common reason images don't appear. - Keep the file reasonable. Under 1MB is a safe target — some platforms silently skip images that are too large (WhatsApp is especially strict). PNG or JPG; avoid WebP for OG images since not every scraper supports it.
- Don't inject the tag with JavaScript. Social scrapers, like most AI crawlers, read raw HTML and don't run scripts. If your
og:imageis added client-side (a common tag-manager pattern), scrapers never see it. It belongs in the server-rendered<head>. - Serve it over HTTPS. Mixed-content images get dropped.
Test before you share
Never trust a link preview to "just work" — always verify. Our free OG / Social Card Previewer fetches any URL and shows exactly how the card will render on X, LinkedIn, and Facebook, flags missing tags, and generates the complete tag set if you don't have one yet. Paste your URL, confirm the 1200×630 image resolves, and you'll never ship a broken preview.
Each platform also has its own debugger to force a re-scrape after you fix something — useful because they cache old previews (see why your link preview isn't showing for the full troubleshooting flow).
Why this matters beyond social
Open Graph tags increasingly do double duty. Beyond social cards, they're a clean, machine-readable summary of what a page is about — a signal some AI systems and link-unfurlers read to describe your page. A correct og:title, og:description, and og:image is cheap insurance that your content presents well wherever it's surfaced, not just on Facebook.
Bottom line
Default every page to a 1200×630 og:image with an absolute HTTPS URL, keep the file under ~1MB, put the tags in server-rendered HTML, and add summary_large_image for X. Then preview the result before you share. That's the whole recipe for link cards that look right everywhere.