Twitter video ad specs: X Ads sizes, length, and file rules
X recommends video ads of 15 seconds or less, up to 1 GB (ideally under 30 MB), H.264 at 29.97 or 30 fps, in six sizes from 9:16 to 1.91:1.

X (Twitter) recommends video ads of 15 seconds or less, with up to 2:20 supported, as an MP4 or MOV file of up to 1 GB, though it strongly recommends keeping files under 30 MB. Use H.264 with a 4:2:0 color space, AAC-LC audio, and 29.97 or 30 fps, in one of six sizes: 1080×1080 (1:1), 1920×1080 (16:9), 1080×1920 (9:16), 2064×1080 (1.91:1), 1440×1800 (4:5), or 1080×1620 (2:3). A Sume Timeline 1.0 render can produce any of those sizes at 30 fps and an exact length, but it can't target a bitrate, so check the file size before you upload.
X's figures are quoted from its X Ads creative specs page, read on 2026-09-28; X can change them. Sume facts come from the Timeline 1.0 and Video inspect docs, the Sume API reference, and Sume's media compiler as it works today. For organic Posts uploaded through the X API, see X (Twitter) video upload specs.
What are X's video ad specs?
These lines apply to any Video Ad on X. Each ad type then adds its own size notes, covered in the next section.
| Spec | X's spec |
|---|---|
| File type | MP4 or MOV |
| File size | 1 GB max; X strongly recommends keeping files under 30 MB |
| Length | 15 seconds or less recommended; up to 2:20 supported (select advertisers can request up to 10 minutes) |
| Frame rate | 29.97 or 30 fps; higher is acceptable, up to 60 fps |
| Video codec | H.264, Baseline, Main, or High profile, with a 4:2:0 color space |
| Video bitrate | 6,000–10,000k for 1080p (6,000k recommended); 5,000–8,000k for 720p (5,000k recommended) |
| Audio codec | AAC LC (low complexity) |
| Captions | Closed captioning or text overlays strongly recommended |
| Branding | A logo, if used, persistent in the upper left hand corner |
| Looping | Videos under 60 seconds loop |
What size should a Twitter video ad be?
X lists the same six aspect ratios for every video ad type, then recommends sizes per type:
- The six ratios: 1:1 at 1080×1080, 16:9 at 1920×1080, 9:16 at 1080×1920, 1.91:1 at 2064×1080, and the newer 4:5 at 1440×1800 and 2:3 at 1080×1620.
- Standalone video ads: 1200×1200 for 1:1 and 1920×1080 for 16:9. X says larger videos are better optimized for when people click to expand them.
- Video ads with a website card or app buttons: 800×450 for 16:9 and 800×800 for 1:1.
- Vertical Video Ads, a full-screen, sound-on unit in X's Immersive Media Viewer: 9:16 recommended, from 720×1280 up to 1080×1920, up to 60 fps, a 25 Mbps maximum and a 5–10 Mbps target bitrate, and under 15 seconds recommended.
How do I make an X video ad with Sume?
Generate the shots, then conform them in one POST /v1/timeline-1.0/render. It reads only your workspace's media.sume.com files, such as earlier Sume outputs (which URLs each endpoint takes), and needs an Idempotency-Key. Today its sound comes only from the audio spine and an optional soundtrack, not from the clips.
output.widthandoutput.heighttake even integers from 256 to 2160, so all six of X's sizes are exact.output.fps:30. Timeline renders at 24, 25, 30, or 60 fps, with no 29.97 option.audio.duration_seconds:15, the longest length X recommends. It sets the output length.- 4:5 and 2:3: today no Sume video model lists either ratio, so render them from a 9:16 clip.
fitis a scale/crop mode,coverby default.
curl -X POST https://api.sume.com/v1/timeline-1.0/render \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: x-ad-4x5-001" \
-d '{
"audio": {
"url": "https://media.sume.com/artifacts/artf_demo/voice.wav",
"duration_seconds": 15
},
"video": [
{ "source_url": "https://media.sume.com/artifacts/artf_demo/shot-1.mp4", "start": 0, "duration": 8 },
{ "source_url": "https://media.sume.com/artifacts/artf_demo/shot-2.mp4", "start": 8, "duration": 7 }
],
"output": { "width": 1440, "height": 1800, "fps": 30 }
}'Can I keep a Sume render under X's 30 MB suggestion?
Not by setting it. Today Timeline encodes H.264 with libx264 at a constant quality (-crf 20) in yuv420p (4:2:0), with AAC audio at 192 kbps, and it refuses codec, crf, and other encoder keys with a 400. The file size follows the picture, so check each render:
- Run
POST /v1/video-inspectwithframes: falseon the render'svideo_url. That probe is unbilled and returnssize_bytes,duration_seconds,fps, andpix_fmt. - Average bitrate is
size_bytes× 8 ÷duration_seconds, audio included (how to check a video's bitrate). - If a file is over 30 MB, cut it shorter or render a smaller frame (how to reduce video file size).
What can't a Sume render do for an X ad?
- Pin a logo to the upper left corner, where X asks a persistent logo to sit. Timeline compose overlays a still at
top,center, orbottom, and today it always centers the still horizontally, so there is no corner position. - Caption long ads. Sume's caption API burns captions into the picture (burn captions onto a video), but today the caption job refuses a source over 60 seconds or one with no audio stream.
Sources
Related posts
More in Media tools
- YouTube Masthead specs: video size, autoplay, and captions
A YouTube Masthead plays a Public or Unlisted YouTube video, ideally 16:9 at 1920×1080 or higher, and autoplays muted for up to 30 s on desktop.
- YouTube multi-language audio: add dubbed tracks, made with AI
YouTube multi-language audio lets one video carry dubbed tracks you upload yourself. The rules, the upload steps, and how to make each track with AI.
- YouTube video size: 16:9 resolutions and upload settings
The standard YouTube video size is 16:9, and 1080p is 1920×1080. Every 16:9 size and bitrate YouTube recommends, and its 256 GB upload limit.
- YouTube watermark size: 150×150 minimum, under 1 MB
YouTube's video watermark must be a square image of at least 150×150 pixels and under 1 MB. When it shows, where it's hidden, and how to make one.
Written by Sume