Reddit video ad specs: MP4 or MOV, 1 GB, 30 FPS

Reddit video ads take MP4 or MOV up to 1 GB at 30 FPS or less, 2 seconds to 15 minutes, with sizes like 1200x1200 and 900x1200. How to render to them.

4 min readSume
All posts

Reddit's video ad file is an MP4 or MOV (ProRes is not supported), at most 1 GB, at most 30 FPS, and 2 seconds to 15 minutes long, with 5 to 30 seconds recommended. For mobile it lists 1200x1200 (1:1), 900x1200 (3:4) and 1200x1500 (4:5). Everything below is from Reddit Ads Help, read 2026-09-29; Reddit can change it, so check that page before you upload.

What are the Reddit video ad specs?

Reddit video ad file rules, from Reddit Ads Help, read 2026-09-29.
ItemReddit's spec
File typeMP4 or MOV (ProRes not supported)
Maximum file size1 GB
Maximum frame rate30 FPS
Length2 seconds to 15 minutes; 5 to 30 seconds recommended
Headline300 characters; 100 or fewer recommended
ThumbnailJPG, PNG or GIF, up to 3 MB

Which video sizes does Reddit list?

Reddit says any aspect ratio can be used, but a ratio it does not list may cause formatting discrepancies such as letterboxing. Its size table is split by placement.

Reddit video sizes by placement, from Reddit Ads Help, read 2026-09-29.
RatioResolutionListed for
Square 1:11200 x 1200 pxMobile
Portrait 3:4900 x 1200 pxMobile
Portrait 4:51200 x 1500 pxMobile
Landscape 4:31440 x 1080 pxMobile and desktop
Landscape 16:91920 x 1080 pxMobile and desktop

How do I render a clip to those sizes with Sume?

Sume's Timeline 1.0 sets the frame itself. output.width and output.height take even integers from 256 to 2160, so every size above fits, and output.fps takes 24, 25, 30 or 60. The default output is a 1080x1920 MP4. Send fps: 30 (or 24 or 25) explicitly: if you omit it, the render follows the source clips, and a 60 FPS source would break Reddit's cap.

Every source URL must already be a media.sume.com file in your workspace, such as an earlier Sume job's output. A Timeline render takes sound only from its audio spine and optional soundtrack, so each clip's own audio is dropped (current code). The request below renders one clip into Reddit's 1200x1500 portrait size at 30 FPS with a silent spine.

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: reddit-4x5-001" \
  -d '{
    "audio": { "mode": "silence", "duration_seconds": 8 },
    "output": { "width": 1200, "height": 1500, "fps": 30 },
    "video": [
      { "source_url": "https://media.sume.com/artifacts/artf_demo/clip.mp4",
        "start": 0, "duration": 8, "fit": "cover" }
    ]
  }'

How do I check the file before I upload it?

Run the finished video through Video inspect 1.0. It reads one media.sume.com clip without re-encoding it, and the probe reports width, height, fps, container, video_codec, duration_seconds and size_bytes. The probe and stills are unbilled. Compare those with the table: fps at most 30, a size that matches a listed row, length inside 2 seconds to 15 minutes, and size_bytes under 1 GB. Reddit's page does not say whether it means decimal or binary gigabytes, so leave a margin.

What can Sume not promise here?

Timeline's documented output fields are size, frame rate and fades. The docs list no bitrate or codec field, so you cannot tune the file to a bitrate target, and Sume cannot promise that Reddit accepts a given render. Reddit checks the file on its side, so treat the probe as a pre-check, not approval. For the square case in other tools see make a video square.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume