X (Twitter) Image Size Guide
Every X image dimension in one table, and a live preview of your own image in any of them. It draws the crop, the safe zone, the avatar that covers the bottom-left of your header and the sides the app trims, then exports the corrected version at the exact pixel size. Free, no account, and your image never leaves your browser.
Pick a placement to see its exact size and how it crops.
PNG, JPG or WebP, up to 5MB. Read in your browser, never uploaded.
The header is the one placement that crops differently by device.
The strip across the top of your profile. The avatar covers the bottom-left corner and the app trims the sides. Keep anything that has to be readable in the middle band. The circle is about 134 pixels across on the web profile and it hangs half over the bottom edge, so the whole bottom-left corner is spoken for.
The table and the crop diagram work without an upload. Add an image and this becomes a verdict: too small, correct ratio, or cropped by this many pixels.
Every X image size
| Placement | Pixels | Ratio | Max size | Formats |
|---|---|---|---|---|
| The strip across the top of your profile. | 1500 × 500 | 3:1 | 5MB | JPG, PNG, WEBP, GIF |
| Your avatar, everywhere it appears. | 400 × 400 | 1:1 | 5MB | JPG, PNG, WEBP, GIF |
| One image attached to a post. | 1600 × 900 | 16:9 | 5MB | JPG, PNG, WEBP, GIF |
| One tall image attached to a post. | 1200 × 1500 | 4:5 | 5MB | JPG, PNG, WEBP, GIF |
| One square image, or any image in a multi-image post. | 1200 × 1200 | 1:1 | 5MB | JPG, PNG, WEBP, GIF |
| The small thumbnail on a link preview. | 800 × 800 | 1:1 | 5MB | JPG, PNG, WEBP, GIF |
| The wide image on a link preview. | 1200 × 628 | 2:11.91:1 exactly | 5MB | JPG, PNG, WEBP, GIF |
Animated GIFs get their own ceiling of 15MB, and a post carries up to 4 images. Alt text runs to 1,000 characters and does not touch your character limit, so there is no reason to skip it.
Export at exactly these numbers and X re-encodes once. Upload something larger and it resizes first, then re-encodes, which is where the softness people blame on the platform actually comes from.
The header is the only placement that changes shape between the web profile and the app. Every other one crops the same way everywhere.
Every size in one table
Header, profile photo, in-stream, portrait, square and both link preview cards, with ratios, the 5MB cap and the accepted formats.
Your image, cropped live
Upload one and see exactly what survives each placement, with the safe zone drawn over it.
Export at the right size
One click for a correctly cropped PNG at the exact pixel dimensions, so nothing is upscaled.
Your image stays put
Read in your browser and cropped on a canvas. Nothing is uploaded, and SVG is refused on purpose.
The header crop nobody accounts for
A header is 1500 by 500, and knowing that is not enough to make one that works, because two things sit on top of it that no size table mentions.
The first is the avatar. On the web profile it is a circle about 134 pixels across, near the left edge, hanging roughly half below the bottom of the header. Whatever you put in the bottom-left corner is behind it. This is what happens to the logo people centre vertically and align left out of habit: it renders perfectly in the export and is covered on the profile.
The second is the phone. The app shows the header in a shallower box than the 3:1 you uploaded, so it scales the image to fill the width and trims the sides, losing roughly a third of the width overall. A tagline that reaches comfortably across the canvas is cut off at both ends on the device most of your visitors are using.
Which gives one rule that survives both: everything that has to be read belongs in the middle band, horizontally centred and kept clear of the bottom-left. Upload your header above and the tool draws the avatar circle and the mobile trim lines straight onto it, which takes about four seconds and is the only way to be sure.
Why your image looks soft
X re-encodes every image you upload. That is not the problem on its own, and it is not something you can turn off. The problem is what happens before the re-encode: if the dimensions do not match the placement, the image is resampled first, and a resample followed by a compression pass loses noticeably more than a compression pass alone. Text and flat colour show it first, which is why a screenshot of code looks worse on X than a photograph does.
So export at the exact numbers in the table. Not close to them, at them. If the graphic is mostly text or flat colour, export it as a PNG, where flat areas stay flat. If it is a photograph, export a JPG at high quality, because a PNG of a photograph is a large file that gets re-encoded to a JPG at the far end anyway, and the round trip costs you more than it saves. Either way, stay under 5MB, where the ceiling is, rather than right up against it.
The one case for doubling the dimensions is a graphic that has to stay crisp on a high-density screen and will be viewed large. Export it at twice the placement size and let the browser downscale once, which looks better than an upscale in either direction. Below the placement size there is nothing to be done: pixels that were never there cannot be recovered, and the tool above says so plainly when your image is too small rather than quietly stretching it.
Which ratio survives the timeline
The feed has opinions. A single attached image renders at 16:9 and anything you upload is cropped toward it, so 1600 by 900 is the shape that arrives intact. 4:5, at 1200 by 1500, is the tallest shape the timeline shows whole, and it is worth using deliberately: it occupies more vertical space in the feed than a landscape image does, which is most of why it performs.
Square is the safe default for a post with more than one image. Two to 4 images are arranged in a grid and each one is cropped again to fit its cell, so anything near an edge is at risk and the subject belongs in the middle. The link preview card is its own case: 1200 by 628 for the large one, which is the 2:1 shape that link previews use almost everywhere else, so one export usually serves every platform at once.
If you are mocking up any of this rather than shipping it, the post preview renders an image in the slot a real post gives it, and the character counter confirms the caption fits. One note on mockups generally: X’s interface font is Chirp and it is licensed for X’s own use rather than for third parties, so an honest mockup substitutes a system font rather than shipping the real one. bbuddy is not affiliated with or endorsed by X Corp, and these numbers are published by X and reproduced here as reference.
Getting the size right is a checklist item.
Having something worth putting in the frame, every week, on every platform, is the part that takes the time. bbuddy reads your brand, drafts posts built for X rather than broadcast everywhere at once, generates the image that goes with them, and either queues the lot for your approval or publishes it itself.
Every image it produces is sized for the placement it is going into, so nothing arrives cropped through the middle of a word.
Frequently asked questions
What size is an X (Twitter) header in 2026?
1500 by 500 pixels, which is 3:1. That is the size to export at. It is also the size that still looks wrong if you centre a logo in it, because the avatar sits over the bottom-left corner and the app trims the sides, so the usable area is narrower and shallower than the canvas suggests.
Why does my X header look cropped on mobile?
Because the app shows the header in a shallower box than the 3:1 you uploaded, so it scales the image to fill and loses roughly a third of the width, about a sixth from each side. Anything that has to survive belongs in the middle. The preview above draws those trim lines on your own image.
What size is an X (Twitter) profile picture?
400 by 400 pixels, square, displayed as a circle. The corners are always cut, so a design that relies on them will lose them. It also renders as small as 24 pixels beside a reply, which is the size worth checking a logo at before you commit to it.
What is the best image size for a post on X?
1600 by 900 for a single image, which is 16:9 and the shape the timeline shows without cropping. 4:5 at 1200 by 1500 is the tallest that survives intact and it takes more vertical space in the feed. Anything taller than that loses its top and bottom.
Why do my images look blurry on X?
Almost always because the image was resized before it was re-encoded. X compresses every upload, and compressing something it has just had to scale up or down compounds the loss. Export at the placement size rather than under it, because upscaling is the one operation that always looks bad, use PNG for anything containing text or flat colour and JPG for photographs, and the difference is visible immediately.
What is the maximum image file size on X?
5MB for a still image and 15MB for an animated GIF, in JPG, PNG, WEBP, GIF. A post carries up to 4 images, and each one can have up to 1,000 characters of alt text, which does not count against your character limit.
Does this tool upload my image anywhere?
No. Your image is read with FileReader, cropped on a canvas and saved straight back to your downloads, all inside your browser. There is no request to any server in the tool at all. SVG files are refused, because an SVG is a document that can carry script and a size guide has no use for vectors.
Free size guide now, a channel that runs itself next..
Cropping one header takes a minute. Filling the feed every week is the part that takes your Thursday.
Cancel any time · Secure checkout · 5-minute setup