Published July 2026 · 7 min read

Share images
that survive every crop.

Every platform claims to want a different share image. In practice one file at 1200x630 covers almost all of them, because they all crop from the centre. What differs is how much they crop, and that is what decides where your text can go.

Ship this 1200 x 630 Ratio 1.91:1 Safe area centre 1000 x 520 Format PNG or JPEG

The one size to make

Make 1200 x 630. It is the size Facebook documented years ago, it is what X reads for summary_large_image, and it is what LinkedIn, Slack, Discord and iMessage all accept without complaint. Every other recommendation you will find is a variation on it.

The reason one file works is that no platform scales your image to fit its slot. They crop it, and they crop from the centre. So the question is never "what size" but "how much of the edge am I willing to lose".

What each platform actually does

PlatformDisplayed ratioEffect on a 1200 x 630
X (Twitter)2:1Trims about 45px from top and bottom
Facebook1.91:1Shows it whole
LinkedIn1.91:1Shows it whole
SlackVariesLetterboxes, no crop
iMessageNear squareCrops hard to the centre
WhatsAppNear squareCrops hard to the centre

iMessage and WhatsApp are the aggressive ones. Both pull something close to a square out of the middle, so a headline that runs the full width of a 1200px canvas will lose its first and last words in a text message preview.

The safe area

Keep anything that must be readable inside the centre 1000 x 520. That leaves 100px of margin left and right and 55px top and bottom, which is enough to survive the 2:1 trim and most of the square crop.

Logos are the usual casualty. A mark tucked into the bottom-right corner is exactly what a square crop removes. If the logo matters, put it near the centre or accept that it is decoration for the platforms that show the full frame.

!

Do not put text in the outer 100px on any side. It reads fine in your design tool and disappears in a group chat.

Text size, and why it is bigger than you think

A share card renders at roughly 500px wide in a timeline. That is a 2.4x reduction from your 1200px canvas. Type set at 40px in the file lands at about 17px on screen, which is body-copy size, not headline size.

Set your headline at 60px or more on the 1200px canvas. Six to eight words is the practical ceiling. If it does not fit in eight words it is a subtitle, not a share card.

File format and weight

PNG for anything with flat colour, text or a logo. JPEG only if the card is dominated by a photograph, and then at quality 80 or so. Keep the file under 1 MB; several scrapers give up above that and fall back to no image at all, which is worse than a plain card.

Avoid WebP and AVIF here. Support in link scrapers lags well behind support in browsers, and a card that fails to render is invisible.

The tags that make it work

Four tags do the job. og:image with an absolute URL, og:image:width and og:image:height so the scraper can lay out the card before it downloads the file, and twitter:card set to summary_large_image. Without that last one X renders a small square thumbnail instead of the wide card.

The URL must be absolute and publicly reachable. A relative path or a URL behind auth produces a card with no image, and most scrapers cache that failure for hours.

Common mistakes