Social preview image sizes, drawn to scale: the Open Graph cheat sheet
A social preview image is the image an app shows when someone shares your link. Each platform asks for a slightly different shape. Here are six of them at one scale, each over the dashed outline of 1200 x 630.
Facebook[2]
1200 x 630 px
Recommended minimum for sharp previews
LinkedIn[5]
1200 x 627 px
Minimum image dimensions
Google Discover[12]
1280 x 720 px
Google's own example of a large image
X large card
1200 x 600 px
From an X reference we could not find today
WhatsApp limit[7]
1200 x 300 px
The widest shape WhatsApp accepts
Square crop
630 x 630 px
The worst case to design for
What size should an Open Graph image be on each platform?
Facebook, LinkedIn, WhatsApp, Apple Messages and Google Discover each publish a size rule for link preview images, and the rules differ. The table states only what each platform says on its own page. Where a platform gives no number, the cell says so.
- Link preview
- The card with a title, a line of text and an image that an app shows in place of a bare link. Slack calls making one "unfurling".
- Open Graph
- A set of <meta> tags, defined at ogp.me, that tell an app which title, text and image to use for a page. The image tag is og:image.
- Aspect ratio
- Width divided by height. 1200 x 630 is 1200 / 630 = 1.905, which Facebook and LinkedIn write as 1.91:1.
- Safe area
- The part of an image that is still visible after a platform crops it to another shape.
- Crawler
- The program an app sends to fetch your page and read its tags, for example facebookexternalhit or Slackbot-LinkExpanding.
- Preview cache
- The copy of a preview that a platform stores, so it does not fetch your page on every share. It is why an old image can keep showing.
| Platform | Size | Aspect ratio | Max file size | Formats | Good to know |
|---|---|---|---|---|---|
| Facebook[2] | At least 1200 x 630 px | As close to 1.91:1 as possible | 8 MB | Not stated | Under 600 x 315 px the image is shown much smaller. The smallest allowed is 200 x 200 px. |
| LinkedIn[5] | At least 1200 x 627 px | 1.91:1 | 5 MB | Not stated | An image less than 401 px wide is shown as a thumbnail. |
| WhatsApp[7] | 300 px wide or more | 4:1 or less | Under 600 KB | Not stated | The <head> with the tags must be within the first 300 KB of the HTML. |
| iMessage (Apple Messages)[8] | At least 900 px wide | Not stated | 10 MB for all images, icons and video together | Not stated | Under 150 px wide the image may be ignored or shown as an icon. Apple advises against text in the image. |
| Google Discover[12] | At least 1200 px wide, more than 300,000 pixels in total | 16:9 | Not stated | Not stated | Large images also need max-image-preview:large (or AMP). Google crops the image itself. |
| Discord[11] | No size published (its example uses 1200 x 630) | Not stated | Not stated | PNG, GIF, JPEG, WebP, AVIF | The large layout needs twitter:card set to summary_large_image. The whole fetch must finish in 10 seconds. |
| Slack[9][10]Not documented | No size published | Not stated | Not stated | Not stated | Reads Open Graph and X Card tags. Use 1200 x 630: common practice, not documented. |
| X (Twitter)Not documented | No page to check today | Not verifiable | Not verifiable | Not verifiable | The old X Cards addresses now redirect to the documentation home page, and we could not find the reference there. The figures repeated from it are 2:1, 300 x 157 px minimum, 4096 x 4096 px maximum and under 5 MB: common practice, not documented. |
| TelegramNot documented | No size published | Not stated | Not stated | Not stated | Use 1200 x 630: common practice, not documented. |
| Mastodon[14]Not documented | No size published | Not stated | Not stated | Not stated | Preview cards are generated from Open Graph tags. Use 1200 x 630: common practice, not documented. |
| Pinterest[15]Not documented | No size published for link metadata | Not stated | Not stated | Not stated | Rich Pins read Open Graph or Schema.org metadata. The Rich Pins overview gives no image size. |
X cannot be checked today
The protocol itself sets no size
One preview image that works everywhere
One image of 1200 x 630 pixels, saved as PNG or JPEG under 600 KB, satisfies every documented rule in the table above. The remaining risk is cropping, and a safe area handles it.
- Centre 630 x 600 px. Survives every crop, a square included. Put the one thing that must always show here.
- Centre 1120 x 600 px. Survives a 2:1 and a 16:9 crop: 40 px in from the left and right, 15 px in from the top and bottom. Keep the title and the logo inside.
- The outer edge. Can be cut. Background only.
- 1200 x 630 pxMeets what Facebook recommends[2], the LinkedIn minimum of 1200 x 627 px[5], the Google Discover floor of 1200 px of width and 300,000 pixels (1200 x 630 = 756,000)[12], the 900 px Apple asks for[8] and the WhatsApp limit of 4:1[7].
- Under 600 KBThe tightest documented limit is the one WhatsApp sets[7]. A file that passes it is also under the 5 MB of LinkedIn[5] and the 8 MB of Facebook[2].
- PNG or JPEGOnly Discord publishes a list of accepted formats, and both are on it[11]. The other platforms name none, so a newer format is an untested bet.
- Title and logo in the centre 1120 x 600 pxA 2:1 or a 16:9 crop then cuts only background.
- The essential thing in the centre 630 x 600 pxA face, a logo or the key word placed there is still whole when the image is cropped to a square.
- Few words, largePreviews are shown at many sizes. Apple advises against text in the image for that reason[8], so keep to a short title that still reads when the card is small.
What each crop keeps of a 1200 x 630 image
A crop to a wider shape keeps the width, and its height is width / ratio. A crop to a narrower shape keeps the height, and its width is height x ratio.
| Cropped to | Used by | What is left | Cut from each side | Share kept |
|---|---|---|---|---|
| 1.91:1 | Facebook, LinkedIn | 1200 x 630 px | Nothing | 100% |
| 2:1 | X large card (not documented) | 1200 x 600 px | 15 px top and bottom | 95.2% |
| 16:9 | Google Discover | 1120 x 630 px | 40 px left and right | 93.3% |
| 1:1 | Square thumbnail, the worst case | 630 x 630 px | 285 px left and right | 52.5% |
How will your image size be cropped?
Type the width and height of any image to see what a centred crop to each preview shape keeps, and which documented minimums the size meets. The checks are the rules from the platform table.
Aspect ratio 1.905:1, 756,000 pixels in total.
Cropped to 1.91:1
1200 x 630 px, 100% kept
Facebook, LinkedIn
Cropped to 2:1
1200 x 600 px, 95.2% kept
X large card (not documented)
Cropped to 16:9
1120 x 630 px, 93.3% kept
Google Discover
Cropped to 1:1
630 x 630 px, 52.5% kept
Square thumbnail, the worst case
- Meets: Facebook: at least 1200 x 630 px
- Meets: LinkedIn: at least 1200 x 627 px
- Meets: Google Discover: at least 1200 px wide and more than 300,000 pixels
- Meets: Apple Messages: at least 900 px wide
- Meets: WhatsApp: 300 px wide or more, no wider than 4:1
Which Open Graph tags do I need?
The Open Graph protocol requires four tags on every page: og:title, og:type, og:image and og:url[1]. The set below adds the tags that individual platforms ask for. Put it in the <head> your server sends.
<meta property="og:title" content="How we cut our build time in half">
<meta property="og:type" content="article">
<meta property="og:url" content="https://example.com/blog/build-time">
<meta property="og:image" content="https://example.com/og/build-time-3f9a1c.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:type" content="image/png">
<meta property="og:image:alt" content="How we cut our build time in half, by Ada Example">
<meta property="og:description" content="Three changes to our pipeline, with the numbers before and after.">
<meta property="og:site_name" content="Example">
<meta name="twitter:card" content="summary_large_image">
<meta name="robots" content="max-image-preview:large">Open Graph tags use the property attribute, as the protocol writes them[1]. The last two are ordinary name tags.
- og:title
- The title of the page as it should appear in the preview. One of the four tags the Open Graph protocol requires. Facebook asks for it without the site name.[1][3]
- og:type
- What kind of thing the page is. Required by the protocol. Facebook treats a page without it as "website".[1][3]
- og:url
- The canonical address of the page, without session or tracking parameters. Required by the protocol.[1][7]
- og:image
- The address of the preview image. Required by the protocol. Write it as an absolute https:// URL: WhatsApp requires an absolute URL.[1][7]
- og:image:width
- The width of the image in pixels. With width and height present, Facebook can show the image on the first share and Discord does not have to download the image to measure it.[1][2][11]
- og:image:height
- The height of the image in pixels.[1]
- og:image:type
- The MIME type of the image. Optional.[1]
- og:image:alt
- A description of what is in the image, not a caption. The protocol says a page that sets og:image should set it.[1]
- og:description
- One or two sentences about the page. Optional in the protocol, but WhatsApp expects it and LinkedIn lists it. On WhatsApp 80 characters are enough.[1][5][7]
Why is my link preview not updating or wrong?
A link preview is wrong for one of three reasons: the platform kept an old copy, its crawler never saw the tags, or the image breaks one of that platform's limits. Find the symptom, then the fix.
The old image still shows after you changed it
The platform kept its own copy. Facebook caches images by URL and does not update them unless the URL changes.[3]
Fix: Save the new image under a new file name, update og:image, then refresh the page in the tools listed below.
No preview at all, only the bare link
The crawler never saw the tags. Apple Messages does not run JavaScript and does not follow meta redirects, so tags added in the browser do not exist for it.[8]
Fix: Put the tags in the HTML your server sends, inside <head>. Server-side redirects are followed.
The tags are there, but far down a heavy page
Crawlers stop reading early. WhatsApp needs the <head> within the first 300 KB of the HTML, Facebook needs the tags before the first 1 MB, and Apple limits the page to 1 MB.[4][7][8]
Fix: Move the meta tags to the top of <head>, above inline scripts and styles.
Title and text appear, the image does not
The image address is relative, or the server blocks the crawler. LinkedIn names both a blocked crawler and a protected directory as causes.[4][5][7][9]
Fix: Use an absolute https:// URL, and let the crawlers in: facebookexternalhit, WhatsApp, Slackbot-LinkExpanding and the others must get the image without a login.
The image is tiny or missing on one platform only
It breaks a limit of that platform: over 600 KB on WhatsApp, over 5 MB on LinkedIn, over 8 MB on Facebook, less than 401 px wide on LinkedIn, less than 150 px wide in Apple Messages.[2][5][7][8]
Fix: Export 1200 x 630 px and compress the file to less than 600 KB.
Discord shows a small thumbnail beside the text
Without a layout tag Discord uses its small-image layout.[11]
Fix: Add twitter:card with the value summary_large_image.
Google Discover shows a small image, or none
Large images are off by default, or the image is less than 1200 px wide.[12]
Fix: Add the robots tag max-image-preview:large and use an image at least 1200 px wide that is not your logo.
The first person to share the page gets no image on Facebook
The crawler has not measured the image yet.[2]
Fix: Add og:image:width and og:image:height so the crawler can show the image at once, or scrape the page in the Sharing Debugger before you share it.
The preview times out on a slow page
Discord gives the whole fetch, images included, 10 seconds. Facebook expects the page within a few seconds.[4][11]
Fix: Serve the page and the image fast, from a cache or a CDN, and keep the image small.
How long each platform keeps a preview, and how to refresh it
| Platform | Keeps it for | How to refresh | Tool |
|---|---|---|---|
| Facebook[3] | Images are cached by URL and are not updated unless the URL changes. | Give the image a new file name, then run the page through the Sharing Debugger, which scrapes it again. | Sharing Debugger |
| LinkedIn[6] | Shows the cached image for a link that was shared before. No duration published. | Enter the URL in Post Inspector. The change applies to new posts only; existing posts keep their preview. | Post Inspector |
| Slack[9] | About 30 minutes, for the whole service. | Wait about 30 minutes and post the link again. | None published |
| Discord[11] | About 30 minutes. | Share the URL with a new query string, such as ?v=2. | Embed Debugger (in the Discord developer documentation) |
| Telegram[16] | No duration published. | Open @WebpageBot in Telegram and send it the link. It returns an updated preview. | @WebpageBot |
X is missing from this list on purpose: its Cards pages, the validator included, are no longer on its documentation site. WhatsApp and Apple Messages publish no cache duration and no refresh tool.
How to generate Open Graph images automatically
A preview image for every page does not have to be drawn by hand. Design the card once as an HTML page fixed to 1200 x 630 px, then render that HTML to an image for each title. Any headless browser can do it; a screenshot API does it without a browser to run.
With CurlShot it is one request: send the HTML and set the viewport to the size of the card. The defaults for viewport_width and viewport_height are 1280 and 1024, so set both. Render the card when a page is published, save the file on your own site under a name that changes with the content, and point og:image at that file.
curl -X POST "https://curlshot.com/api/v1/screenshot" \
-H "X-Access-Key: YOUR_ACCESS_KEY" \
-H "Content-Type: application/json" \
-d '{
"html": "<body style=\"margin:0;width:1200px;height:630px;display:flex;flex-direction:column;justify-content:center;padding:80px;box-sizing:border-box;background:#f8fafc;color:#0f172a;font-family:sans-serif\"><div style=\"font-size:28px\">example.com</div><h1 style=\"font-size:72px;line-height:1.1;margin:24px 0 0\">How we cut our build time in half</h1></body>",
"viewport_width": 1200,
"viewport_height": 630,
"format": "png"
}' \
--output og-card.pngThe result is og-card.png, exactly 1200 x 630 px: a light card with the site name and a large title.
Questions people ask
What is the best Open Graph image size?
1200 x 630 pixels, an aspect ratio of 1.91:1. Facebook recommends at least that size, LinkedIn asks for at least 1200 x 627, and Google Discover and Apple Messages ask for 1200 and 900 pixels of width. One image of 1200 x 630 pixels meets all four.
What is the maximum file size for an og:image?
It depends on the platform. Facebook allows 8 MB and LinkedIn 5 MB, but WhatsApp asks for an image under 600 KB. Keep the file under 600 KB and it passes every limit that a platform has published.
Is 1200 x 630 the same as 1.91:1?
Yes, in practice. 1200 divided by 630 is 1.905 and the LinkedIn minimum of 1200 x 627 is 1.914. Facebook and LinkedIn both call that shape 1.91:1, and Facebook only asks for a ratio as close to 1.91:1 as possible.
Which Open Graph tags are required?
The Open Graph protocol requires four: og:title, og:type, og:image and og:url. In practice also add og:description, og:image:width, og:image:height, og:image:alt and twitter:card with the value summary_large_image, because individual platforms ask for them.
Why does my link preview show the old image?
The platform kept its own copy. Facebook caches images by URL and does not update them unless the URL changes, and Slack and Discord keep a preview for about 30 minutes. Give the new image a new file name, update og:image, then refresh the page in the Facebook Sharing Debugger and the LinkedIn Post Inspector.
Does X (Twitter) use Open Graph images?
X cannot be checked against its own documentation today: the Cards pages on its developer site now redirect to the documentation home page. The figures usually repeated from the old reference are a 2:1 image of at least 300 x 157 pixels and under 5 MB, requested with twitter:card set to summary_large_image. Treat them as common practice, not as a published rule.
How do I make a preview image for every page automatically?
Design the card once as an HTML page fixed to 1200 x 630 pixels and render it to an image for each title. With CurlShot that is one POST request with the HTML and viewport_width 1200 and viewport_height 630. Save the file on your own site and point og:image at it.
Sources
- [1]ogp.me, The Open Graph protocol. Checked .
- [2]Meta for Developers, Images in Link Shares. Checked .
- [3]Meta for Developers, A Guide to Sharing for Webmasters. Checked .
- [4]Meta for Developers, Meta Web Crawlers. Checked .
- [5]LinkedIn Help, Make your website shareable on LinkedIn. Checked .
- [6]LinkedIn Help, Use Post Inspector to refresh URL. Checked .
- [7]WhatsApp, Meta for Developers, Link Previews. Checked .
- [8]Apple Developer Documentation, TN3156: Create rich previews for Messages. Checked .
- [9]Slack, Slack Robots. Checked .
- [10]Slack Developer Docs, Unfurling links in messages. Checked .
- [11]Discord Developer Documentation, Link Previews. Checked .
- [12]Google Search Central, Get on Discover. Checked .
- [13]Google Search Central, Robots meta tags specifications. Checked .
- [14]Mastodon documentation, PreviewCard entity. Checked .
- [15]Pinterest Developers, Rich Pins overview. Checked .
- [16]Telegram Bugs and Suggestions, Link preview update (tip). Checked .
Read next
- Cheat sheetViewport sizes cheat sheet: phones to desktopsViewport sizes in CSS pixels, screenshot sizes and device pixel ratios of iPhone, Pixel, Galaxy, iPad and laptop screens, drawn to scale, and the sizes to test.
- ComparisonPNG, JPEG, WebP or PDF for website screenshotsA decision flow, a comparison table and our own file-size measurements for choosing PNG, JPEG, WebP or PDF when you save a screenshot of a web page.
- Field guideWhy website screenshots look wrong, and the fixesA field guide to 11 ways a website screenshot goes wrong, from blank lazy images to cookie banners and cut-off pages, with the cause and the fix for each.
- How-toFull-page screenshot on every device and browserExact keys and menu names to screenshot a whole web page in Chrome, Firefox, Edge, Safari, iPhone, iPad and Android, checked against each vendor.