TikTok
Render a 9:16 film for TikTok, with the post and ad limits, the safe-zone templates and the vawe commands.
At the end of this page you have a 1080 × 1920 film for a TikTok post or ad. TikTok publishes limits for ads on ads.tiktok.com and for posts on support.tiktok.com. The two sets differ.
The limits
The sourced table is in Video specs by platform. Read on 2026-10-31 and 2026-11-01:
- In-feed ad: 9:16 at 540 × 960 or more is recommended. 16:9 needs 960 × 540 or more, and 1:1 needs 640 × 640 or more. Up to 10 minutes, 500 MB or less, formats
.mp4,.mov,.mpeg,.3gpand.avi. - Post: not verified.
support.tiktok.comanswered 503 on 2026-10-31 and 2026-11-01. Search excerpts give 720 × 1280 or more and up to 10 GB, and disagree on length (10 or 60 minutes). Read the TikTok upload screen before you rely on a length. - TikTok publishes no frame rate and no loudness target on the pages read.
Safe zone
TikTok publishes safe-zone templates for ads, as downloadable files. The Ads help page says the zone depends on the dimension, the caption length and any added formats. It gives no pixel list. There are files for left-to-right regions, files for Arabic, and files that include anchors. Download the template that fits your ad from the TikTok Ads help page.
For a post, TikTok publishes no pixels. As an estimate, use the Meta numbers for Reels ads on Instagram Reels. They are not a TikTok rule.
Make the film
Start a 9:16 page
bin/vawe new my-tiktok --request "a 15 second hook with captions" --aspect 9:16 --length 15The page gets <meta name="aspect" content="9:16"> and <meta name="duration" content="15">.
Look at the frame
bin/vawe still films/my-tiktok/page.html --at 2 --aspect 9:16Compare the PNG in out/still/ with the TikTok template for ads, or with the estimate above for posts.
Draft, then ship
bin/vawe dev films/my-tiktok/page.html --aspect 9:16
bin/vawe ship films/my-tiktok/page.html --aspect 9:16
bin/vawe ship --status --waitship needs a fresh critique and the owner approval. See Ship. The final is an .mp4, a format on both TikTok lists.
Many films from one page
To render one film per row of data, read Batch from data. ship takes --param key=value and puts it in the file name.
Limits
- A final is 60 fps.
shiphas no fps flag. TikTok publishes no frame rate on the pages read. - The ad page lists a bitrate of 516 kbps or more.
shipencodes with-crf 16and sets no bitrate, so check the bitrate of a final before you upload. - Loudness: TikTok publishes no target. See Loudness and the mix.
Video specs by platform
Vertical social
Batch from data
From the blogHTML video aspect ratio: 16:9, 9:16 and 1:1