TikTok ad text is fixed white; a brand typeface must be burned in
TikTok shows ad text in white, fixed font, no links, @ or hashtags. A brand typeface must be burned into the video; what Sume's caption API can set.

The TikTok rule
On TikTok's video ads specification page (read 2026-10-09), non-Spark ad captions are "displayed in white with a uniform font that can't be customized" and cannot carry clickable links, @ symbols or hashtags. Spark Ads take the caption from the organic post, shown up to four lines. So the ad text field cannot carry a brand typeface. Any typeface you want viewers to see has to be pixels in the video.
What Sume's caption API lets you set
The video captions docs describe styles and a design object that overrides colors, typography, placement, phrasing and motion for a request. The typography fields are base_weight, active_weight, active_scale, font_size_ratio, safe_width_ratio and stroke_width_px. The separate font field chooses a face only for Hangul styles, from a list of open-license Korean faces. There is no field for uploading a Latin brand font.
| Surface | Font control | Color control | Links, @, hashtags |
|---|---|---|---|
| TikTok ad caption text | None (uniform white) | None | Not supported |
| Sume burned-in caption, Latin style | Weight, size, stroke; no custom family | Hex or rgba via design.colors | Your text; TikTok's rule applies to the ad text field only |
| Sume burned-in caption, Hangul style | Choice of listed open-license faces | Hex or rgba via design.colors | Same |
What to do with a brand typeface
If the brand font is a requirement, the practical routes are to set the type in your own design tool and place the finished frames in the clip, or to accept the closest Sume style and tune weight, size, stroke and color. Do not expect the font field to accept a Latin family: the docs reject names outside their list so that a caption never falls back to a face you did not select.
Keep the claim in the video separate from the claim in the ad text. Words in the ad's caption field follow TikTok's white-text rule; words burned into the picture follow your design, and may have to pass the platform's other ad policies on their own.
Cost
A caption job is $0.20 for clips of up to 60 seconds per the docs page. A restyle with source_caption_id re-burns the earlier source without a second recognition pass and keeps the same price. Budget two or three passes for style tuning: three passes on one 30-second ad is 3 x $0.20 = $0.60.
Spark Ads are different
Spark Ads boost an organic post. TikTok's page says their captions are extracted directly from the organic video caption, with up to four lines displayed, and lists .mp4 or .mov with no duration restriction. The font rule for the ad text is the same in spirit, since the caption is still platform text, so the same advice applies: whatever must look a certain way belongs in the video itself.
For non-Spark ads the page also lists .mp4, .mov, .mpeg, .3gp and .avi, up to 10 minutes, up to 500 MB. Burned-in captions do not change any of those limits, though a second render can change file size, so check the file after the final caption pass.
Sources
Related posts
More in Use cases
- Real footage trimmed and captioned on Sume: TikTok AI disclaimer?
TikTok requires an AI disclaimer for fully AI-generated or significantly AI-modified media. Which Sume jobs use no generative model, and which ones do not.
- TikTok Ad Teardown Before You Remake It: Trending Search and Ingest
Research what works on TikTok, then read one reference clip into shots, on-screen text and audio facts before a remake brief. Sume costs and dest-first limits.
- TikTok Non-Spark Ad Upload Specs: Check Your Render Before You Upload
TikTok non-Spark ads need 9:16 at 540x960 or more, up to 500 MB, 516 kbps or higher. Use Timeline 1.0, video trim and video inspect to meet and check them.
- TikTok AI disclaimer sits at the bottom: keep burned captions higher
TikTok's ad disclaimer shows at the bottom of in-feed video for the whole ad. Place Sume burned-in captions higher with placement.anchor_ratio and test.
Written by Sume