env.dev

OpenGraph Image Sizes 2026: Per-Platform Cheat Sheet

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.

What is the safest universal OpenGraph image size?

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).

What are the per-platform image 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 does aspect ratio matter 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.

Which image format should you use: PNG, JPEG, or 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.

What are the per-platform 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

How do you generate dynamic OpenGraph images with Satori?

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.

How do you test OpenGraph images across platforms?

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.

References

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?

Read next

OpenGraph Image Not Showing: 8 Causes and Fixes

Why your og:image is not rendering on Facebook, LinkedIn, Slack, Discord, or iMessage — caching, absolute URLs, size limits, hotlink protection, and robots.txt blocks.

Continue →

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.

Should mobile and desktop use different OG images?

No. Use a single 1200×630 image with key content (headline, logo, key visual) inside the center 66% so it survives every platform crop. Mobile clients on Slack and iMessage square-crop on tight layouts, and serving two URLs only doubles your origin requests without changing what most platforms cache.

What happens if I supply a square OpenGraph image?

Facebook letterboxes or heavily crops a square image to fit its 1.91:1 link card. X cuts the top and bottom to hit 16:9. LinkedIn shows it as a small thumbnail when the width drops under 401 px. Supply a 1.91:1 image as og:image and reserve square assets for X summary cards or favicons.

Stay up to date

Get notified about new guides, tools, and cheatsheets.