X video ad under 30 MB: how many seconds fit at 6,000 and 5,000 kbps

X says keep video ads under 30 MB. At its 6,000 kbps (1080p) and 5,000 kbps (720p) targets that is 40 and 48 seconds. Check yours with Sume video inspect.

5 min readSume
All posts

At X's recommended bitrates, a video ad stays under the 30 MB size X recommends for about 40 seconds at 1080p (6,000 kbps) and about 48 seconds at 720p (5,000 kbps). The hard file cap is 1 GB, so the 30 MB figure is a performance recommendation, not a rejection rule. This page does the arithmetic and shows how to measure your own file before you upload it.

What X's page says

The numbers below come from X's own creative specs page, not from a third party. X recommends videos of 15 seconds or less, supports up to 2:20, and advises keeping files under 30 MB for optimal performance.

X video ad file and bitrate guidance, read 2026-10-09
ItemX spec
File typesMP4 or MOV
File size1 GB max; under 30 MB strongly recommended
Length15 seconds or less recommended; up to 2:20 supported
Bitrate, 1080p6,000 to 10,000k (6,000k recommended)
Bitrate, 720p5,000k to 8,000k (5,000k recommended)
Frame rate29.97 or 30 FPS; up to 60 FPS accepted

The arithmetic

File size is bitrate times duration divided by eight. Treat 30 MB as 30,000,000 bytes, which is 240 megabits. If you read it as 30 MiB the answers rise by about 5 percent.

At 6,000 kbps: 240,000 kilobits divided by 6,000 is 40 seconds. At 5,000 kbps: 240,000 divided by 5,000 is 48 seconds. At the top of the 1080p range, 10,000 kbps, the same budget gives 24 seconds. A 15-second ad at 6,000 kbps is 90,000 kilobits, which is 11.25 MB, so X's recommended length sits well inside the recommended size.

Seconds that fit in 30 MB (240 megabits), computed 2026-10-09, as listed below.

  • 5,000 kbps (720p target): seconds in 30 mb 48; size of a 15 s ad 9.375 MB
  • 6,000 kbps (1080p target): seconds in 30 mb 40; size of a 15 s ad 11.25 MB
  • 8,000 kbps (720p ceiling): seconds in 30 mb 30; size of a 15 s ad 15 MB
  • 10,000 kbps (1080p ceiling): seconds in 30 mb 24; size of a 15 s ad 18.75 MB

Measure the real file with Sume

Sume's video inspect reads a clip already in your workspace and returns a probe with duration_seconds, width, height, fps, video_codec and size_bytes. Send frames: false to get the probe without stills. Divide size_bytes by duration_seconds, multiply by eight, and you have the average bitrate including audio.

Sume does not let you set bitrate. Its render and trim endpoints reject codec and crf style fields, so you cannot dial a bitrate down to fit 30 MB. What you control is length and frame size: a shorter cut with video trim, or a smaller output width and height on a timeline render. Trim is $0.02 per job and timeline is $0.10 per output minute rounded up, with a one-minute minimum (Sume catalog, read 2026-10-08).

def avg_kbps(size_bytes, seconds):
    return size_bytes * 8 / seconds / 1000

def seconds_for(size_mb, kbps):
    return size_mb * 1_000_000 * 8 / (kbps * 1000)

print(round(seconds_for(30, 6000), 1))   # 40.0
print(round(seconds_for(30, 5000), 1))   # 48.0
print(round(avg_kbps(11_250_000, 15)))   # 6000

What to do if you are over

If the probe shows more than 30 MB, shorten first. X recommends 15 seconds or less anyway, and X loops videos shorter than 60 seconds. Cut the range with video trim (the source file is not changed, and a new MP4 comes back), then probe the result again.

If the clip is already short and still large, the cause is usually frame size or frame rate from the source. Re-render at a smaller size or at 30 fps; Sume's timeline output.fps accepts 24, 25, 30 or 60. Expect the result to land near X's bitrate range, but confirm with the probe, because Sume documents no bitrate target.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume