env.dev

OpenGraph Image Sizes 2026: Facebook, LinkedIn, X, Slack, Discord

Recommended OpenGraph image sizes per platform in 2026. Universal safe size, aspect ratios, file size limits, and how each platform crops on mobile.

Last updated:

Use 1200×630 pixels (1.91:1 aspect ratio) as the universal default OpenGraph image size in 2026. It renders correctly on Facebook, LinkedIn, Slack, Discord, iMessage, WhatsApp, and Telegram, and falls back acceptably on X. Go to 1200×675 (16:9) only if X is your primary channel.

The universal safe size: 1200×630

1200×630 is a 1.91:1 aspect ratio. It was defined by Facebook in its sharing best practices documentation around 2013, and every other unfurler adopted the same shape to match the dominant platform. Even X — which prefers 16:9 — renders 1200×630 correctly, just with a small vertical crop.

Why this exact size? 1200×630 hits the Facebook minimum of 600×315 at 2× density, is large enough to look crisp on retina screens, and small enough to stay well under platform file-size limits (Facebook 8 MB, X 5 MB, LinkedIn 5 MB).

Per-platform sizes in 2026

Facebook

  • Recommended: 1200×630, 1.91:1
  • Minimum: 200×200 (rejected below this)
  • Warning threshold: 600×315 (shown as "may render poorly")
  • Max file size: 8 MB
  • Mobile crop: shows full 1.91:1, no crop

LinkedIn

  • Recommended: 1200×627, 1.91:1 (LinkedIn's published number; 1200×630 works identically in practice)
  • Max file size: 5 MB
  • Mobile crop: 1.91:1, trimmed edges on narrow viewports
  • Cache: 7 days — use Post Inspector to force re-scrape after changes

X (summary_large_image)

  • Recommended: 1200×675, 16:9
  • Minimum: 300×157
  • Max file size: 5 MB
  • Accepts: PNG, JPEG, WebP, GIF (static first frame)
  • If you supply 1200×630, X crops a thin strip from top and bottom

X (summary)

  • Recommended: 144×144 minimum, square (1:1)
  • Shown as a small thumbnail next to text — use only for compact cards

Slack

  • Recommended: 1200×630, 1.91:1
  • Max file size: 5 MB
  • Cache: 24 hours
  • Requires a valid Content-Type header on the image response

Discord

  • Recommended: 1280×640, 2:1
  • Also accepts: 1200×630, 1.91:1
  • Max file size: 8 MB
  • Requires og:image:width and og:image:height to render inline previews correctly
  • Older desktop clients reject WebP — use PNG or JPEG

iMessage

  • Recommended: 1200×630, 1.91:1
  • Max file size: 5 MB
  • Square-crops to a tile on the iOS lock screen, so keep key content centered

WhatsApp

  • Recommended: 1200×630, 1.91:1
  • Soft cap ~300 KB — larger images are sometimes downgraded or skipped
  • Requires og:image to be absolute HTTPS; HTTP is silently ignored

Telegram

  • Recommended: 1200×630, 1.91:1
  • Max file size: 5 MB
  • Honors og:image:width and og:image:height for layout before the image finishes downloading

Why aspect ratio matters more than pixel count

Every platform scales the image to fit its preview card. What it can't fix is the aspect ratio — if you supply a square image to Facebook, it letterboxes or crops heavily. Key content (headline, logo, key visual) should live in the center 66% of the image to survive every platform's crop.

X crops a 1200×630 image top and bottom to hit 16:9. Slack on mobile sometimes square-crops to a thumbnail when space is tight. iMessage on lock screen always square-crops. Designing with a center-safe zone avoids surprises.

File format: PNG vs JPEG vs WebP

FormatBest forCompatibility
PNGGraphics with text, logos, UI screenshotsUniversal
JPEGPhotos, gradients, full-bleed imageryUniversal
WebPSmaller file size for the same qualityBreaks on older Slack and Discord clients
GIFNot recommended — first frame only, wastes bytesUniversal but inefficient
AVIFNewer format, tiny filesNot supported by most unfurlers yet

Recommendation: PNG for anything with text (crisp edges), JPEG for photos. Skip WebP and AVIF until the ecosystem catches up.

File size limits

  • Facebook: 8 MB hard cap
  • X: 5 MB hard cap
  • LinkedIn: 5 MB hard cap
  • Discord: 8 MB hard cap
  • WhatsApp: 300 KB soft cap (above this, downgrades or skips)
  • Practical universal target: under 1 MB for fast unfurls and no surprises

Dynamic OpenGraph images with Satori or @vercel/og

If you have a lot of pages (blog posts, user profiles, product pages), generating OG images by hand is a chore. The modern approach is to render them programmatically with Satori — Vercel's library that turns JSX into SVG, then rasterises to PNG. It runs at the edge in Vercel, Cloudflare Workers, or Node.

Minimal Satori-in-Worker example
import satori from 'satori';
import { Resvg } from '@resvg/resvg-js';

const svg = await satori(
  <div style={{ display: 'flex', background: '#0b0d0f', width: 1200, height: 630, color: '#fff' }}>
    <h1 style={{ margin: 'auto', fontSize: 72 }}>Hello, OpenGraph</h1>
  </div>,
  { width: 1200, height: 630, fonts: [{ name: 'Inter', data: interBuffer, weight: 700 }] }
);
const png = new Resvg(svg).render().asPng();

Two constraints to know: Satori uses flexbox only (no grid), and the WASM bundle for Resvg is ~6 MB, which won't fit in strict edge runtimes. For Cloudflare Workers, generate at build time and ship PNG assets — that's the approach env.dev itself uses.

Testing at different sizes

Chrome DevTools' device mode shows how your preview will look, but the ground truth is always the platform's own validator. Use the Facebook Sharing Debugger and LinkedIn Post Inspector for authoritative rendering. For Slack, Discord, and iMessage: paste the link into a test channel or DM to yourself.

Ready to implement? The Meta Tag Generator produces a full tag set with the right og:image:width / og:image:height declarations, and the OpenGraph cheatsheet is the one-page reference.

Was this helpful?

Frequently Asked Questions

What is the best OpenGraph image size in 2026?

1200×630 pixels at a 1.91:1 aspect ratio is the universal safe default. It renders correctly on Facebook, LinkedIn, Slack, Discord, iMessage, and falls back acceptably on X.

Should I use a different size for Twitter/X?

Only if X is your primary channel. X prefers 1200×675 at 16:9 for summary_large_image cards, but it accepts 1200×630 and crops the top and bottom. Set both og:image and a separate twitter:image if the tradeoff matters.

Can I use WebP for OpenGraph images?

Not reliably. Facebook and LinkedIn support WebP, but some Slack and Discord clients reject it. Stick to PNG for graphics with text and JPEG for photos.

Stay up to date

Get notified about new guides, tools, and cheatsheets.