TikTok Spark Ads vs standard ad video specs: what to render

TikTok lists .mp4 or .mov and no duration limit for Spark Ads, but 9:16 minimums, 500 MB and up to 10 minutes for non-Spark ads. Sume returns MP4.

4 min readSume
All posts

TikTok's video ad specification page splits the rules in two. Spark Ads list only the formats .mp4 or .mov and say there is no duration restriction. Non-Spark ads list aspect ratios with minimum sizes, up to 10 minutes, 500 MB or less, five container formats and a 516 kbps bitrate floor. Sume's Timeline, trim and video filter jobs all return MP4, which both rows accept.

Side by side

The Spark row has blanks where the other row has numbers. A blank on that page means the page did not list a value, not that the platform has no limit, so do not read it as unlimited.

TikTok In-Feed ad video specifications (read 2026-10-06)
ItemSpark AdsNon-Spark ads
Aspect ratio and sizeNot specified9:16 min 540x960 (recommended), 16:9 min 960x540, 1:1 min 640x640
DurationNo restrictionsUp to 10 minutes
File sizeNot specified500 MB or less
Formats.mp4 or .mov.mp4, .mov, .mpeg, .3gp, .avi
BitrateNot specified516 kbps or more
CodecNot specifiedNot specified

What to render

Render one MP4 and it fits both rows on format. For the non-Spark row, make it 9:16 at 1080x1920 (the Timeline default), keep it under the length you actually need, and check the size and bitrate after. A 15 to 30 second ad is nowhere near the 10-minute ceiling.

A Sume video model request that serves this: ask for aspect_ratio: "9:16", a duration the model lists, and resolution: "1080p" where the model offers it. The vertical request example explains why size is rejected and what to send.

A simple decision rule

Start from the strict row. If you render to satisfy the non-Spark limits, 9:16 at 1080x1920, a few tens of seconds and a file well under 500 MB with a bitrate above 516 kbps, the same file meets every value the Spark row lists. The Spark row names only a container and no duration limit, and an MP4 qualifies on both.

That means you do not need two pipelines. You need one render and one pre-flight check, then you pick the ad type in TikTok's own tools. Which type fits your campaign is outside the scope of the specification page, and this post does not take a view on it.

Two things can still go differently. A Spark row with blanks may be enforced elsewhere, and TikTok may change either row. Re-read the page before a large launch, and keep the clean master and the platform-specific export as separate files so a change in one rule does not force a regeneration.

Where the page leaves you guessing

Neither row names a codec. Sume's exact trim re-encodes with libx264 and yuv420p, per the trim doc, which is a common choice, but TikTok's page does not state that it is required or accepted. If an upload fails, the codec is the first thing to compare. Whether Spark Ads have any hidden size limit is also not on this page, so test one before building a batch.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume