ScreenshotNeo

BlogGuides

X Image Size Limits: Dimensions, File Size, and Formats

A complete guide to X image dimensions, file-size limits, formats, aspect ratios, and the differences between posts, profiles, Media Studio, and ads.

By the ScreenshotNeo team1 October 20268 min read

Short answer: X image limits depend on where you upload the image. Use a 400×400 px image under 2 MB for a profile photo, 1500×500 px for a header, up to 8192×8192 px and 20 MB in Media Studio, and no more than 5 MB for an image ad. For an ordinary post, X currently says a single image with an aspect ratio from 2:1 through 3:4 displays in full, but the current visible help page does not expose a verified file-size or format limit.

Do not apply Media Studio’s 20 MB limit or an ad’s 5 MB limit to normal posts. X publishes separate requirements for each upload context.

Quick reference: X image limits

Upload context Dimensions or display rule File size Formats and caveats
Profile image 400×400 px recommended 2 MB maximum JPEG, GIF, PNG. Animated GIFs are not supported for profile or header use.
Header/banner 1500×500 px recommended Current maximum is not stated in the cited guidance Up to 60 px at the top and bottom may be cropped on different displays.
Ordinary post photo A single image with a 2:1 to 3:4 aspect ratio displays in full Current limit is not confirmed in the visible current help page The current article does not expose its linked file and type requirements.
Media Studio image Maximum 8192×8192 px 20 MB maximum JPG or PNG. These rules apply only to Media Studio.
Image ad Placement dependent; examples include 800×418 px at 1.91:1 and 800×800 px at 1:1 for App Button placements 5 MB maximum PNG and JPEG recommended. BMP and TIFF are not accepted. GIFs render as static images.

Profile picture requirements

X recommends a square 400×400 pixel profile image and sets a 2 MB maximum. JPEG, GIF, and PNG are supported. Animated GIFs are not supported for profile or header images.

Practical profile checklist

  • Export at 400×400 px.
  • Keep the file at or below 2 MB.
  • Use JPEG, GIF, or PNG.
  • Keep the subject centered because the image is displayed in a circular treatment in some contexts.
  • Use a still image rather than an animated GIF.

Source: X’s profile photo upload guidance and profile customization guidance.

Header and banner dimensions

The recommended X header size is 1500×500 pixels, a 3:1 aspect ratio. X warns that up to 60 pixels at the top and bottom can be cropped depending on the monitor and browser.

Safe-area checklist

  • Start with a 1500×500 canvas.
  • Keep logos, text, and faces away from the top and bottom edges.
  • Preview on both desktop and mobile layouts.
  • Do not assume the entire canvas is visible everywhere.

X’s cited guidance does not state a current maximum file size for headers. Avoid publishing an unsupported number; export a reasonably compressed JPEG or PNG and confirm the upload in the current X composer.

Ordinary post image limits

For a single photo in a normal post, X’s current help article says images with standard aspect ratios between 2:1 and 3:4 display in full. That range covers wide landscape images through relatively tall portrait images.

The visible current article does not expose the linked answer for ordinary-post file size and file type requirements. Because of that, a precise current megabyte limit should not be stated as fact without checking X’s upload interface or a separately verified current specification.

Choosing a post aspect ratio

Use case Useful starting ratio Why
Wide announcement or screenshot 2:1 or 16:9 Fits a broad composition while remaining inside X’s full-display range.
Standard social image 1:1 Simple to reuse across profile and post workflows.
Tall portrait or infographic 3:4 Uses the tallest ratio X says displays in full for a single photo.

Always preview the image in the current composer. The ordinary-post guidance is separate from Media Studio and advertising specifications.

Media Studio image limits

Media Studio accepts JPG and PNG images up to 20 MB and up to 8192×8192 pixels. X explicitly says these specifications are only for Media Studio and should not be followed for the X developer API, Pro Media API, desktop upload, or mobile upload.

Media Studio validation checklist

  • Confirm the file is JPG or PNG.
  • Keep the file at or below 20 MB.
  • Keep both dimensions at or below 8192 px.
  • Do not carry these limits over to ordinary posts.

X image ad limits

Image ads have a 5 MB maximum file size. X recommends PNG or JPEG, rejects BMP and TIFF, and renders GIF uploads as static images. Dimensions depend on the placement. For example, X lists 800×418 px for a 1.91:1 App Button image and 800×800 px for a 1:1 App Button image.

Before exporting an ad, choose the placement first, then follow that placement’s dimensions and ratio. A file that works for one ad placement may be unsuitable for another.

Formats: JPEG, PNG, and GIF

Format Where it is documented Considerations
JPEG/JPG Profile, Media Studio, ads Usually produces smaller photographic files; use an export quality that keeps text and edges readable.
PNG Profile, Media Studio, ads Useful for transparency, diagrams, and sharp UI screenshots; files can be larger.
GIF Profile guidance and ordinary X media guidance Animated GIFs are not supported for profile/header use. In image ads, GIFs render as static images.
BMP/TIFF Ads X says these are not accepted for image ads.

How to resize and compress an image safely

  1. Identify the destination: profile, header, ordinary post, Media Studio, or ad.
  2. Set the canvas dimensions for that destination.
  3. Keep the required aspect ratio so important content is not cropped.
  4. Export as JPEG for photos or PNG for transparency and crisp interface artwork.
  5. Check the file size after export.
  6. Upload a preview and inspect desktop and mobile presentations.

Command-line examples with ImageMagick

These examples are local processing commands, so they do not depend on an X API limit that may change.

# Profile image: fit inside a 400x400 square
magick input.jpg -resize '400x400^' -gravity center -extent 400x400 -strip -quality 86 profile.jpg

# Header: fit a 1500x500 canvas
magick input.jpg -resize '1500x500^' -gravity center -extent 1500x500 -strip -quality 86 header.jpg

# Post image: cap the long edge while preserving the source ratio
magick input.png -resize '2400x2400>' -strip -quality 90 post.jpg

After resizing, inspect the output dimensions and byte size:

identify profile.jpg header.jpg post.jpg
ls -lh profile.jpg header.jpg post.jpg

Common errors and fixes

Error or symptom Likely cause Fix
Profile image rejected File exceeds 2 MB, is not a supported format, or is an animated GIF. Export a still JPEG, GIF, or PNG at 400×400 px and keep it under 2 MB.
Header looks cropped Important content is near the top or bottom edge. Move content inward and account for up to 60 px of possible cropping.
Media Studio rejects a large image File exceeds 20 MB or a dimension exceeds 8192 px. Resize dimensions first, then compress below 20 MB.
Ad upload fails File exceeds 5 MB, uses BMP/TIFF, or does not match the placement. Use JPEG or PNG, stay at or below 5 MB, and follow the selected placement’s dimensions.
Ordinary post limit is unclear The current visible help article does not show its linked file-size answer. Use the current composer, keep the aspect ratio between 2:1 and 3:4, and avoid treating Media Studio or ad limits as post limits.
Text becomes unreadable Over-compression or excessive resizing. Use PNG for UI screenshots and diagrams, or raise JPEG quality while checking the final byte size.

Performance, reliability, and cost considerations

  • Dimensions affect transfer time: oversized images take longer to upload and process. Resize to the destination’s useful dimensions.
  • Compression affects legibility: aggressive JPEG compression can damage small text and thin lines.
  • Preview across layouts: headers can crop differently, and post presentation can vary by device.
  • Keep source files: retain an original so you can export a new ratio when X changes a placement or requirement.
  • Verify current rules: X’s help pages can scope limits to a specific product, and ordinary-post requirements are not fully exposed in the cited current page.

Capture an exact preview before publishing

A practical way to review how a public help page or draft preview renders is to capture it in a browser. A DIY workflow uses a headless browser such as Playwright:

import { chromium } from 'playwright';

const browser = await chromium.launch();
const page = await browser.newPage({ viewport: { width: 1440, height: 1200 }, deviceScaleFactor: 1 });
await page.goto('https://help.x.com/en/using-x/posting-gifs-and-pictures', { waitUntil: 'networkidle' });
await page.screenshot({ path: 'x-image-guidance.png', fullPage: true });
await browser.close();

Or skip the browser setup

ScreenshotNeo captures a URL with one request and can return PNG, JPEG, WebP, or PDF. Cookie and consent banners, newsletter popups, and chat widgets are removed before the shot. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed, and the response identifies the result with X-Page-Verdict and X-Billed headers. Its MCP server lets Claude, Cursor, and other MCP clients use take_screenshot, get_page_info, and capture_pdf.

See the ScreenshotNeo API documentation for all options. The same request in common clients:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://help.x.com/en/using-x/posting-gifs-and-pictures -o x-image-guidance.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://help.x.com/en/using-x/posting-gifs-and-pictures"}, timeout=90)
r.raise_for_status()
open("x-image-guidance.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://help.x.com/en/using-x/posting-gifs-and-pictures' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const fs = await import('node:fs/promises');
await fs.writeFile('x-image-guidance.webp', Buffer.from(await res.arrayBuffer()));

ScreenshotNeo includes full-page capture, element selection, custom CSS and JavaScript, device presets, retina scale, waits, blocking controls, caching with a chosen TTL, signed links, asynchronous jobs, bulk capture, and usage reporting. It bills only clean shots. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.

FAQ

400×400 pixels, with a 2 MB maximum. JPEG, GIF, and PNG are supported.

What is the X header size?

1500×500 pixels. Keep important content away from the top and bottom because up to 60 pixels may be cropped.

Is X’s 20 MB limit for every image?

No. The 20 MB and 8192×8192 limits are documented for Media Studio only.

What is the file-size limit for an ordinary X post?

The current visible ordinary-post help page does not expose a verified file-size limit. Do not substitute the Media Studio or ad limits.

Can I upload GIFs?

GIF support depends on context. Animated GIFs are not supported for profile or header use, and GIFs in image ads render as static images.

Which source should I check for changes?

Use X’s current help pages for ordinary posts, profile photos, Media Studio, and ads. Requirements are scoped to each upload context.