One video for Reels ads, TikTok App Bundle, Shorts: what length

Reels ads allow 0 s to 15 min, TikTok App Bundle 5 to 60 s, Shorts up to 3 min. A 21 to 30 second file satisfies all three. Read from each vendor page.

5 min readSume
All posts

A single file between 21 and 30 seconds fits all three pages I read. Meta's Reels ad page allows 0 seconds to 15 minutes, TikTok's Global App Bundle page allows 5 to 60 seconds and recommends 21 to 30, and YouTube Help allows Shorts up to 3 minutes.

Three pages, three ranges

I read each page on 2026-10-05. I did not fetch a page about organic Reels or organic TikTok length, so this post covers only the ad specs for those two and the Shorts page for YouTube.

Length limits by platform page (read 2026-10-05)
Platform pageMinimumMaximumNote
Meta Ads Guide, Instagram Reels ads0 s15 minutesMP4 or MOV, 4 GB maximum
TikTok Business Help, Global App Bundle5 s60 sRecommends 21 to 30 s
YouTube Help, ShortsNot stated on the page I read3 minutesApplies to Shorts

The overlap

The tightest window is the App Bundle one: at least 5 seconds and at most 60. Inside that, TikTok's own recommended 21 to 30 seconds is the target. Any file in that band is also valid for the other two pages.

Length is only one spec

Sources: Meta Ads Guide, TikTok App Bundle specs and YouTube Help. Duration is not the only spec: the App Bundle page lists 9:16 at 720x1280 or larger and the Reels page lists 1440x2560, so a file that fits the length may still need a size check.

One master, several cuts

Make the file once, then cut variants. If a model gave you a 30-second clip, the Timeline 1.0 plan and render paths take video[] slots with start, duration and source_in. A 24-second cut from a 30-second source is one slot with source_in 3 and duration 24. A single slot needs a spine too: send audio.mode: "silence" with duration_seconds 24 if the clip's own audio is not the spine.

Check with the plan

Run the plan first. It is unbilled and returns the duration and an estimate:

curl -X POST https://api.sume.com/v1/timeline-1.0/plan \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "audio": { "mode": "silence", "duration_seconds": 24 },
    "video": [{
      "source_url": "https://media.sume.com/artifacts/artf_demo/clip30.mp4",
      "start": 0,
      "duration": 24,
      "source_in": 3
    }]
  }'

What the plan returns

The result reports duration_seconds, segment_count, billable_minutes and estimated_cost_usd_micros. The public rate is $0.10 per rounded-up output minute, so a 24 second render bills one minute.

Then check the size

Check the file's real size too. Timeline output edges are even integers from 256 to 2160, with a 1080x1920 default.

Let the narrowest page set the master

Why not just use the longest window? Because a longer file has no advantage if the placement with the shortest window rejects it. The App Bundle page is the one with a 60 second ceiling, so a 90 second ad that is valid for Reels would be rejected there. When you ship to several placements, find the placement with the narrowest range and use that as the master length, then add longer versions only for the placements that allow them.

Write down the date

Keep a short table in your campaign notes with the date you read each page. Platforms update these pages, and a table with a date lets the next person tell whether a number is current. The captions in this post carry the read date for the same reason.

Cut a long source down

For a long source, the video trim docs allow a source up to 1800 seconds and an output up to 900 seconds, with a minimum output of 0.2 seconds. So you can cut a 60 second ad from a long recording in one call at $0.02, and then the 21 to 30 second variant from that.

Test the short end too

There is a subtle trap in treating a minimum of 0 seconds as an invitation. A 3 second file can pass the Reels page but fails the App Bundle page, which starts at 5 seconds. If you test variants of different lengths, run every variant against every placement you plan to use, and record which ones pass, instead of assuming a file valid for one is valid for all.

Fork late

A simple workflow is to generate once, trim to 30 seconds, probe the file, and only then fork. After the fork, only the placement-specific parts change: the caption position, the end card, and the file name. The length and the picture stay the same, and that keeps the comparison between placements honest.

The takeaway

Aim for 21 to 30 seconds, make one master, and let the stricter page decide.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume