Quick answer: the X header is 1500×500 pixels (3:1), the avatar is 400×400 (shown as a circle), and in-stream images display best at 1600×900 landscape (16:9) or 1600×1600 square. The banner's lower-left corner is overlapped by the avatar, so design the two as one composition.

The header and avatar are one image

On X the profile picture is not tucked beside the banner — it sits directly over the lower-left of the header canvas. Designers who treat them as two independent files end up with the avatar circle cutting through a letter or a face. Build the header knowing a roughly 200-pixel circular tile occupies the bottom-left, and keep that area empty or deliberately part of the background.

The size table

Asset Dimensions Ratio Format / limit
Header / banner 1500×500 3:1 JPG/PNG/GIF
Avatar 400×400 1:1 Circle crop; upload 400×400
In-stream image, landscape 1600×900 16:9 Collapsible in feed
In-stream image, square 1600×1600 1:1 Largest in-feed footprint
In-stream image, portrait 1600×1200 4:3 Feeds crop in preview
Multiple images 2–4 varies Collage crops
Summary card image 1200×628 1.91:1 Pulled from og:image

Header design

The 3:1 strip is short, so it works best as a supporting statement rather than a poster: brand color, a one-line description of what you build, maybe a cadence like "shipping weekly". Small text fails on the header because it is only 500 pixels tall and gets covered by the browser chrome on some profiles. Keep type above a 28-pixel equivalent in the 1500×500 canvas and centered or to the right of the avatar overlap.

In-stream images

X collapsed all its historical image cropping in 2023 and now shows the full image with no forced crop, but the feed preview still favors certain ratios:

  • Square (1600×1600) takes the most vertical space in the feed.
  • Landscape (1600×900, 16:9) is the standard for product screenshots and charts; it matches the 16:9 ratio most deck exports already use.
  • Portrait (1600×1200) uploads in full but the preview is smaller.

Multi-image posts render as a collage with hard crops, so square sources are the safest for two- and four-image posts.

Posted URLs generate a summary card from the page's Open Graph tags, using the same 1200×628 (1.91:1) image as LinkedIn and most other networks. If the card is missing, the og:image is missing or blocked — the Open Graph image size guide has the fix.

Why X image quality matters for indie hackers

X is still the primary launch network for developer tools, and the visual pattern is well established: a landscape screenshot card that reads at feed size, a pinned header that states the product, and a link card to the page. Pixel-fine screenshots matter here — the audience opens images and reads the UI, so export PNG, not JPEG. The social media image sizes hub covers the other networks in the same launch set.

Building the launch set

A launch day needs a header, an avatar-safe square, a set of landscape 16:9 screenshots and announcement cards, and a 1.91:1 link card. These are different ratios of the same brand, and building them together avoids the banner that does not match the feed cards. Neatico generates the header and the feed set from one product description, so the profile and the announcement read as one launch.

Frequently asked questions

What is the X (Twitter) header size? 1500×500 pixels at 3:1. Leave the lower-left corner clear because the circular avatar overlaps it.

What size is the X avatar? 400×400 square, displayed as a circle. Keep the face or logo in the center.

What is the best image size for tweets? 1600×1600 square for the biggest feed footprint, or 1600×900 landscape for screenshots and product shots. Use PNG for UI text.

Why does my link card show the wrong image? X reads the page's og:image. Fix the tag and re-run the card validator; changing the file alone does not clear the cached preview.