Ad specs / TikTok
TikTok ad specs and character limits
TikTok ad character limits, image sizes and hard floors. Every figure quoted from TikTok's own documentation with the date it was read, 2026-08-10.
read 2026-08-10 Source: https://ads.tiktok.com/help/article/tiktok-auction-in-feed-ads
Character limits and sizes
| Placement | Headline | Body text | Max file |
|---|---|---|---|
| For You feed: in-feed video (non-Spark) 9:16 540 x 960 or larger | not stated | not stated | 500 MB |
| For You feed: Spark Ad (boosted organic post) | not stated | not stated | — |
Where two numbers are given, the first is what stays visible and the second is what the field accepts. They're different questions. Copy over the cap gets rejected at upload. Copy over the visible limit runs, and gets cut off. Most guides publish only one of the two.
- custom audience minimum: 1000 — TikTok: "There is a requirement to have 1,000 total matched users in a Custom Audience to use it in an ad group." This is a floor on the audience itself, not on the ad group — a customer list that matches fewer than 1,000 users cannot be used at all, so a small business's list will often not qualify. Say so rather than recommending it.
These are the numbers that decide whether a campaign delivers at all, and none of them produces an error message when you cross it.
For You feed: in-feed video (non-Spark) — Body text
TikTok's own in-feed specification page states no character count for ad text — it was checked and the number is not there. So none is asserted. Write the caption short because it sits over video and truncates behind a 'See more', but do not treat any specific number as TikTok's published limit. TikTok does state the caption is "Displayed in white with a uniform font that can't be customized" and "Does not support any clickable links, symbols (@), or hashtags".
For You feed: Spark Ad (boosted organic post) — Body text
TikTok: ad captions are "Extracted directly from the organic video captions. A maximum of 4 lines can be displayed". You do not write this copy at ad level — it comes from the post. Four lines is not a character count and is not enforced here.
Why an ad group here refuses to spend
TikTok punishes anything that looks like an ad, so the usual variant grid — same footage, four headlines — tests the wrong axis. The thing that moves performance here is whether the creative reads as a native post, and that is a property of the whole video rather than of a line of copy. Test creative concepts against each other, not captions. Also: ad captions cannot contain clickable links, @ symbols or hashtags, so any copy that leans on one will be rejected or read as broken. And Spark Ads run against a real organic post, which means the comment thread is public and permanent — the same exposure Reddit has.
- Which call-to-action buttons this platform offers.
- Which ad categories are restricted here, and what declaring one does to your targeting.
- How this platform tracks conversions, and its default attribution window.
Listed rather than omitted. A spec sheet with no gaps is either complete or hiding something, and from the outside those look identical.
Check a campaign against this spec
AdPlaybook holds this spec as dated data and checks a finished campaign against it — character counts, audience floors, forbidden exclusions — before you paste anything into TikTok Ads Manager. It is arithmetic, not a judgement call, so it runs on every campaign and costs nothing.