Make a Facebook Open Graph image
Facebook invented the 1200×630 number and then spent a decade caching it harder than anyone else. This page makes the file. The Sharing Debugger (developers.facebook.com/tools/debug) is still how you evict a stale one after you replace it.
Template properties
The copy and marks on the card. Files stay on this device.
Background
Gradient or solid, then direction, grid and grain.
Gradient direction
1200×630 · facebookexternalhit
How it works
- 1Compose the 1200×630 card with the split layout if you have a photo, or centered if it is a title-and-logo announcement — Facebook crops the edges, so stay inside the overlay.
- 2Download the PNG and host it at a stable, publicly crawlable HTTPS URL. Do not put it behind a login or a bot wall.
- 3Add og:image, og:image:width=1200 and og:image:height=630 to the page, then scrape it in Facebook’s Sharing Debugger so the cache starts clean.
The size, honestly
Same 1200×630 canvas as the generic Open Graph tool, different job: Facebook’s crawler (facebookexternalhit) is the one that will punish a 72dpi 600-wide JPG, ignore a file behind a login, and keep serving a deleted image for days. I keep this page for that checklist. If you just need one card for every network, start at Generate an Open Graph image. If the share is going to LinkedIn’s feed, LinkedIn OG Image Maker documents their slightly shorter 1200×627 habit.
| Canvas | 1200×630 px |
|---|---|
| Ratio | 1.91∶1 |
| Used by | facebookexternalhit |
| Export | PNG, composed in this tab |
Frequently asked questions
No — that is the whole reason I built this. The conversion runs in your browser using WebAssembly, so your files never leave your device; there is no server in the loop at all. It also means the tool keeps working offline once the page has loaded, and there is no file size limit beyond your device’s memory.
At least 600×315, recommended 1200×630, ratio 1.91∶1. Below 600 on the long edge Facebook may skip the large preview and fall back to a tiny square. I export 1200×630 and treat anything smaller as a bug. 1080×1080 squares belong to feed posts you upload, not to og:image.
The Sharing Debugger caches the scrape. Open developers.facebook.com/tools/debug, paste the public URL, hit “Scrape Again”. If the file URL did not change, add a ?v=2 query or rename the file — Facebook keys the cache on the image URL, not on your HTML. og:image:width and og:image:height in the markup also stop it from guessing.
Yes. og:image is a URL, not a same-origin rule. A CDN or a static host is fine. What fails is a file that 403s the Facebook crawler (hotlink protection, a bot firewall, or a signed URL that expired). Test with curl -A facebookexternalhit; if that cannot GET the PNG, neither can Facebook.
Treat JPEG and PNG as the safe pair. WebP has worked on and off depending on the year and the app (iOS vs Android vs in-app browser). AVIF is not a bet I would make for a share card. Export PNG here; if the card is a photograph and you need fewer bytes, convert with PNG to JPG and keep a .jpg URL.
Yes. Without them Facebook’s first scrape sometimes reserves a small slot, then never upgrades it. Set both to 1200 and 630 to match this export. og:image:type=image/png is optional but cheap insurance next to the URL.
Facebook’s feed crops harder than Slack — they steal more of the rim to fit different surfaces (mobile feed, messenger, desktop). Keep faces, logos and the last word of the title inside the safe-zone overlay. If the composition is a full-bleed photo, use the split layout so type lives on the uncropped half.
Related tools
Generate an Open Graph image
Make a 1200×630 Open Graph PNG in your browser — free, no upload. Title, logo and background stay on the device; download the file when it looks right.
Make a LinkedIn share image
Build a 1200×627 LinkedIn link preview in your browser. No upload, no signup — export a PNG, host it, and let LinkedIn’s Post Inspector fetch the public URL.
Make a Twitter card image
Compose a 1200×628 X / Twitter summary_large_image in your browser. No upload, no account — type, logo and photo stay on the device until you download the PNG.
Make a Discord embed image
Design the 1200×630 image Discord shows when a link is pasted. Runs in the browser — no bot, no webhook, no upload. Download a PNG and point og:image at it.