OG image generator

Make a 1200 × 630 share card, then check the Open Graph tags on a page you already have. Both run in this browser, and nothing is uploaded.

The preview is the export: one 1200 × 630 canvas, downloaded exactly as drawn.

YOURSITE.COM

A large card, at about the width one gets in a feed. Nothing is cropped at 1.91 : 1.
The same file on a small summary card and in several chat clients: the middle square, edges gone.

Add a logo or a background image

Click, or drop a file. It is read on this device and never sent anywhere.

What the OG image is actually doing

Paste a link into Slack, LinkedIn, X or Facebook and the client fetches the page, reads a few <meta> tags from the <head>, and builds a card. og:image is the picture on it: usually the only thing a person sees before deciding to click, and the piece most sites leave to a crawler’s guess — which is how a careful article ends up illustrated with a stock photograph of a laptop.

1200 × 630, and where 1.91 to 1 comes from

The wide slot is 1.91 to 1. Facebook’s documented minimum is 600 × 315, and 1200 × 630 is exactly twice that: the smallest file that fills the slot on a high-density screen without upscaling. Wider buys nothing but bytes; below 600 × 315 the network stops offering the wide card and the link renders as a thumbnail beside two lines of text.

The square matters too. A small summary card on X, previews in several chat clients and LinkedIn’s narrower slots crop to a square out of the middle, so anything within 285 pixels of either edge disappears — which the second preview above shows.

The three traps

Type set for a monitor. A card renders 300 to 500 pixels wide on a phone, about a third of the file’s size, so type that looks generous at 32px arrives at 11px. Set the headline between 60 and 80 pixels, and never below about 34.

Weight. A flat card is a PNG of about 100 KB, a gradient closer to 700 KB because a PNG stores every one of those slightly different pixels, a photograph several megabytes. Facebook accepts 8 MB and X 5 MB, but a crawler that times out shows nothing. A gradient or a photograph belongs in a JPEG; both weights are printed under the button.

Transparency and SVG. An alpha channel is composited against whatever colour the client picks, frequently black, so fill the background. And no major crawler rasterises SVG: an og:image pointing at one produces an empty card.

Why og:image must be an absolute URL

A browser resolves /img/card.png against the page it is on. A crawler does not: it reads the tag as a string, with no base to resolve against, so a relative path fetches nothing. Write the scheme and host out, serve it over https, and make sure it needs no login — a staging site behind basic auth is the usual reason a card is blank for everyone but you. og:image:width and og:image:height beside it let the network lay the card out before the file arrives.

After you change a tag

Every network caches the card it scraped, so editing the markup changes nothing until that cache clears: Facebook’s Sharing Debugger, LinkedIn’s Post Inspector and X’s card validator each re-scrape on demand. And if your head tags are added by JavaScript, view-source has no og: tags at all — which is why a card works in preview and fails when shared.

Designing a site? Siter.io builds it from Figma.

Hey there 👋  Friends from designmodo are here to help!