OG Pilot
og:image size

og:image size cheat sheet 2026

Ship 1200ร—630, close to 1.91:1, and keep the file under 600 KB. That is the open graph image size that meets the floors and caps Facebook, LinkedIn, WhatsApp, and iMessage actually publish. X does not publish a current size.

Platform sizes for og image size queries

Every number below is from the vendor page linked under the table. A cell says "Not published" when that page does not state the figure. Telegram is omitted: its public API describes link previews, and it does not publish an og:image pixel size, file cap, or format list.

PlatformRecommendedAspect ratioMinimumMax file sizeFormatsCrop / safe areaMeta tags
FacebookAt least 1200ร—630 for high-resolution devices.Close to 1.91:1.200ร—200. Use at least 600ร—315 for a larger link post. Smaller than that still shows, but much smaller.Must not exceed 8 MB.Not stated on the images page.Stay near 1.91:1 so Feed can show the full image without cropping. No safe-area inset is published.og:image. Set og:image:width and og:image:height so the crawler can render before it downloads the file.
X (Twitter)Not published.Not published.Not published.Not published.Not published.Not published.No current Cards markup reference on docs.x.com to cite. The old size page now redirects to the platform overview.
LinkedIn1200ร—627 is the sharing-module minimum. Recommended ratio is 1.91:1. No separate larger size is published.1.91:1.1200ร—627. The same help page says images under 401 px wide display as a thumbnail.5 MB for the sharing module.Not stated for the sharing module. JPG, PNG, and GIF are listed under single-image ads, a different spec.No safe area for link shares. A tip on the same page says square and vertical images might be cropped when ads are shared organically.og:title, og:image, og:description, og:url. Width and height are not in that list.
SlackNot published.Not published.Not published.Not published.Not published.Not published.Slackbot-LinkExpanding looks for oEmbed, Twitter Card tags, and Open Graph tags, then fetches an image the tags point at.
WhatsAppNo single pixel size. Under 600 KB, at least 300 px wide, width/height of 4:1 or less.4:1 or less (width รท height).300 px wide.Under 600 KB.Not stated.Not published. WhatsApp may relax the rules, and says not to rely on that.og:title, og:description, og:url, and og:image in the head. The image URL must be absolute. The head must sit inside the first 300 KB of HTML.
iMessageAt least 900 px wide. No height is published. TN3156 calls this a guideline.Not published.Under 150 px wide may be ignored or shown as an icon. Icons should be square and at least 108 px.No per-image cap. The page itself is limited to 1 MB. Icons, images, and videos together are limited to 10 MB.Not stated for the preview image.The preview size changes by device. Avoid text in the image. No safe-area inset is published.og:image and og:title. Put the site name in og:site_name, not in the title. Also supply a favicon, apple-touch-icon, or link rel icon.
DiscordNot published. The quick-start sample sets width 1200 and height 630. That sample is not a requirement.Not published.Not published.Not published. A link shows at most 4 images..png, .gif, .jpg, .jpeg, .webp, and .avif.Not published. summary_large_image shows a large image under the text. With no layout tag, the image is small. Two or more og:image tags become a gallery.og:title or twitter:title, og:description or twitter:description, og:image or twitter:image, plus width, height, and og:image:type. twitter:card summary_large_image selects the large layout.

Sources: Meta, Images in Link Shares, Open Graph protocol, X developer overview (the old large-image card URL redirects here), LinkedIn, make your website shareable, Slack robots, Slack unfurls, WhatsApp link previews, Apple TN3156, and Discord link previews.

Copy-paste tags for 1200ร—630

og:image, og:image:width, and og:image:height are in Meta's images doc and on ogp.me. og:image:type, og:image:secure_url, and og:image:alt are protocol properties. twitter:card summary_large_image is the value Discord uses for a large image, and the value Apple names for social-post previews. WhatsApp's doc only requires og:title, og:description, og:url, and an absolute og:image.

HTML meta tags

<meta property="og:title" content="Page title" />
<meta property="og:description" content="One or two sentences. WhatsApp says about 80 characters is enough." />
<meta property="og:url" content="https://example.com/page" />
<meta property="og:image" content="https://cdn.example.com/og.jpg" />
<meta property="og:image:secure_url" content="https://cdn.example.com/og.jpg" />
<meta property="og:image:type" content="image/jpeg" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="What the image shows" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:image" content="https://cdn.example.com/og.jpg" />
<meta name="twitter:image:alt" content="What the image shows" />

OG Pilot API request (1200ร—630 response)

curl -X POST "https://ogpilot.com/api/v1/images" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"token":"YOUR_JWT_TOKEN"}'

# Documented completed JSON includes:
# "width": 1200,
# "height": 630,
# "url": "https://cdn.ogpilot.com/..."

# There is no width or height request field.
# Required JWT claims: iss (verified domain), sub (API key prefix).
# Optional: iat, template, title, description, path.
# Sign the JWT on your server. Docs: https://ogpilot.com/docs

POST /api/v1/images takes token only. The documented JSON response reports width 1200 and height 630. The template canvas is 1200ร—630, and the preview variant is a JPEG limited to that size. Prefer an SDK over hand-rolled signing. Setup is on /docs.

MCP config and tool calls

Remote MCP URL: https://ogpilot.com/mcp
Transport: Streamable HTTP
Auth: OAuth 2.1 with PKCE
Docs: https://ogpilot.com/docs/mcp

generate_og_image
{ "url": "https://example.com/pricing" }
Optional style. Default is auto-detect.
Returns image_url. The schema has no width or height field.
The card is rendered on the 1200ร—630 template.

compress_image
{
  "image_url": "https://cdn.example.com/og.jpg",
  "width": 1200,
  "height": 630
}
width defaults to 1200. height defaults to 630.
format defaults to jpeg. fit defaults to cover.

generate_og_image needs a signed-in account with an active plan.
compress_image works on a guest connector session.

generate_og_image builds the card. compress_image is the call that takes width and height. Connector steps are on /docs/mcp.

Get an API key, or install MCP

The table above is the size. The API returns the 1200ร—630 file. MCP lets an agent generate that file or resize one you already host.

Or generate one now before you wire auth.

Check the card, then pick a stack

After the tags are live, run the URL through the Open Graph debugger. Framework paths for the same image are the OG image API comparison, the Next.js guide, and the WordPress plugin.

og:image size questions

What og:image size should I use?

If you ship one file, use 1200 by 630 pixels, close to 1.91:1, and keep it under 600 KB. Meta's images doc asks for at least 1200 by 630 for high-resolution devices and a ratio close to 1.91:1, with an 8 MB cap. LinkedIn's sharing module asks for at least 1200 by 627 at 1.91:1 and at most 5 MB. WhatsApp wants the image under 600 KB and at least 300 pixels wide. Messages wants at least 900 pixels wide. A 1200 by 630 file under 600 KB meets those published floors and caps. X does not publish a current size to check it against.

What is the maximum og:image file size?

It depends on the platform. Meta says the file must not exceed 8 MB. LinkedIn's sharing module says 5 MB. WhatsApp says under 600 KB. Messages limits the main page resource to 1 MB and associated resources, icons, images, and videos together, to 10 MB. Those are guidelines. Slack and X do not publish a file cap in the docs cited on this page. Discord's link-preview limits table does not publish an image byte cap.

Does every platform read og:image:width and og:image:height?

The Open Graph protocol defines them as optional structured properties. Meta's images doc says to set them so the crawler can render the image without downloading it first. Discord says to provide them, and without them Discord fetches the image to measure it. WhatsApp's link-preview doc does not require them. LinkedIn's shareable-site article lists og:title, og:image, og:description, and og:url, and does not mention width or height.

Does X publish an og:image size?

Not in a current Cards reference this page can cite. The old summary-card-with-large-image URL on developer.x.com now redirects to https://docs.x.com/overview, which is the platform overview and not a size table. This page does not repeat sizes from third-party cheat sheets.

Does the OG Pilot API take a width and height?

No. POST https://ogpilot.com/api/v1/images accepts a JSON body field token. The documented JSON response includes width 1200 and height 630. The template canvas is 1200 by 630. MCP generate_og_image takes a page url and an optional style, and returns image_url. compress_image is the tool that accepts width and height, defaulting to 1200 and 630.

How do I check the image after I publish it?

Paste the public URL into the Open Graph debugger at /open-graph-debugger. That checker is not Meta, LinkedIn, X, WhatsApp, Messages, or Slack. Use the platform tool where one exists: the Meta Sharing Debugger and LinkedIn Post Inspector. WhatsApp's doc says to compose a message and wait up to 10 seconds. X does not publish a replacement for the retired Card Validator.