Make a Twitter card image
X still reads twitter:image (and falls back to og:image). The large card is 1200×628 — two pixels shorter than the Facebook number everyone memorized. This page locks the canvas to that size so the preview you approve is the crop X will show.
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×628 · X summary_large_image
How it works
- 1Write the line you want next to the tweet preview — shorter than an OG title, because X already shows the domain and the tweet text above the card.
- 2Use the hero layout if you have a screenshot to drop in; keep faces and logos inside the safe zone, since X trims the rim on mobile.
- 3Download the 1200×628 PNG, host it, and set twitter:card=summary_large_image plus twitter:image (or reuse og:image if you only want one file).
The size, honestly
The generic 1200×630 Open Graph file is so close that most sites reuse it, and X will accept it. The two missing pixels rarely matter. What does matter is the layout: X’s large card letterboxes less than Slack and puts more weight on the image than the title. If the card is mostly type, start here; if you just need one file for every crawler, Generate an Open Graph image is the better default. Profile chrome is a different crop entirely — that is X Header Image Generator.
| Canvas | 1200×628 px |
|---|---|
| Ratio | 1.91∶1 |
| Used by | X summary_large_image |
| 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.
1200×628 pixels. X’s own docs still say a 2∶1 ratio is acceptable, but the large card they render from a link is 1.91∶1, same family as og:image. I export 1200×628 so the file matches the card, not the older 1200×600 blog posts that still rank.
Both. twitter:image wins when it is present; otherwise X falls back to og:image. If you already have a solid og:image and you do not want two files, one 1200×630 PNG referenced from both tags is fine. Use this page when the X preview is the one you are designing for, not as a reason to host two nearly identical assets.
X caches aggressively. After you replace the file at the same URL, the card validator (cards-dev.twitter.com/validator is gone; use the post composer preview or the Card Validator replacement in the developer portal) still serves the old bytes for hours. Change the filename or add a cache-busting query when you iterate, and wait. A 404 on twitter:image also silently falls back to a random page image.
No. X’s large card is a still image. An animated GIF becomes the first frame, and a video belongs in the tweet itself, not in the link card. Export a PNG from this tool. If you already have a WebP you like, convert it with WebP to PNG and point twitter:image at the PNG.
X has historically capped twitter:image around 5 MB, and in practice anything over a megabyte is wasted — the card is displayed at a few hundred pixels wide. A type-led PNG from this tool lands between 80 and 250 KB. If a photo-led card balloons, drop it through PNG to JPG at quality 80 before you upload.
summary_large_image, unless the link is a citation you want to stay small. The small summary card crops to a square thumbnail and hides most of the work you put into a 1200-wide composition. Set twitter:card to summary_large_image and give it this 1200×628 file.
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.
Generate an X header image
Make a 1500×500 X / Twitter header in your browser. No upload — the canvas leaves the left side clear for the avatar, and the PNG never leaves the device.
Make a Facebook Open Graph image
Design a 1200×630 Facebook share image in your browser. No upload — Facebook’s Debugger caches, this page does not. Download a PNG and host it yourself.
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.