TikTok safe zones are files, Meta's are percentages: which to use
Meta gives Reels safe zones as 14% top, 35% bottom, 6% sides; TikTok gives downloadable files. How to build to both and place captions on Sume.

Two ways of publishing the same idea
Meta's Instagram Reels ad page (read 2026-10-09) gives safe zones as numbers: leave at least 14% of the top, 35% of the bottom and 6% on each side free of text, logos and key design elements. TikTok's specification page (read 2026-10-09) says safe zone dimensions vary by aspect ratio, caption length and additional formats, and offers downloadable safe zone files in left-to-right and right-to-left versions. The first can be computed; the second has to be overlaid.
| Platform | Form | What you can compute |
|---|---|---|
| Instagram Reels ad | Percentages: top 14%, bottom 35%, sides 6% | Free band of 51% of the height and 88% of the width |
| TikTok non-Spark ad | Downloadable LTR and RTL files, varying by ratio and caption | Nothing from the page text alone |
The Meta band in numbers
The free height is 100% - 14% - 35% = 51% of the frame, running from 14% down to 65% of the height measured from the top. The free width is 100% - 6% - 6% = 88%. At Meta's recommended 1440x2560, that is a 1,267 by 1,306 pixel area (88% of 1440 is 1,267.2; 51% of 2560 is 1,305.6). At a 1080x1920 render the same percentages give 950 by 979 pixels.
Using the Meta band as a first pass
Because the TikTok figure is a file, the efficient path is to build to Meta's numbers and then overlay TikTok's file on the result. A caption that sits inside the Meta band is not guaranteed to sit inside TikTok's, which varies with the caption and format, but it is a good starting point and costs nothing to check.
On Sume, video captions accept design.placement.anchor_ratio, the center of the caption line as a fraction of frame height, and safe_width_ratio under typography. Keep the anchor near the middle of the Meta band, around 0.4, and keep safe_width_ratio under 0.88 so that wrapped lines stay inside the side margins. Both are request-time checks: a number outside its documented range returns a 400 before any render is billed.
Cost of trying
The docs state $0.20 per accepted caption job for clips up to 60 seconds, and a restyle with source_caption_id keeps the earlier timings with no second speech pass at the same price. Two attempts on a 30-second ad are 2 x $0.20 = $0.40. If you are fitting several ads to the same template, tune one first and reuse the design values.
Checking the result
Render one test frame with the caption at its anchor, then lay TikTok's downloadable file over it in any editor. If the caption crosses a marked region, move anchor_ratio by a few hundredths and re-render. Because a restyle reuses the earlier timings, this loop is cheap in time as well as money.
Right-to-left languages need the right-to-left file, which the TikTok page offers separately. If your ad runs in both directions, check both overlays before you queue the batch, because the bands are not mirror images of each other in every format.
Keep a record of the final anchor_ratio and safe_width_ratio values for each ratio you ship. When a platform updates its guidance, you can re-read the page, compare the numbers, and change only the values that moved rather than rebuilding the template.
Sources
Related posts
More in Use cases
- TikTok Shop: labeling real footage as AI is itself a violation
TikTok Shop's page counts labeling non-AI content as AI-generated as a false disclosure. How to keep a clearly camera-shot cut apart from a generated one.
- TikTok Spark Ads have no duration limit: what file to post
TikTok's ad specs list mp4 or mov and no duration limit for Spark Ads, with captions taken from the organic post. Cut the post, not the ad.
- TikTok Symphony avatars skip shoes and hats: what to do instead
TikTok's Symphony avatar help page lists shoes, hats and sunglasses as unsupported product avatars. See the page's rules, then test an alternative on Sume.
- Audio version of an article with TTS: cost and the 20,000-char split
A 6,000-character article is one Sume TTS job at 29 cents. A 30,000-character one is two jobs plus a 1-cent concat, $1.45 total. Steps and code included.
Written by Sume