TikTok's Content Posting API caps a video post's caption, the title field, at 2,200 UTF-16 code units, not 2,200 plain-text characters. That distinction matters once a caption carries emoji, since some cost two units instead of one. It's a number straight from TikTok's own documentation, not something scheduling vendors worked out independently: TikTok's developer docs describe the title field's maximum length as 2200 in UTF-16 runes.
That 2,200 figure is specific to posts published through the API. Several vendor guides put the in-app limit for a caption typed directly into TikTok somewhere near 4,000 characters, though TikTok doesn't publish an official in-app number anywhere we could confirm. The 2,200 ceiling is the one that actually governs a TikTok scheduler, since every third-party tool publishes through the same API, not through the app.
UTF-16 code units are not the same as characters
A plain character counter treats every visible symbol as one unit. TikTok's API counts in UTF-16 code units instead, the same encoding JavaScript strings use internally. Letters, digits, and most punctuation are one unit each, but a lot of emoji sit outside the Basic Multilingual Plane and get stored as a surrogate pair: two 16-bit units for one visible character (MDN's reference on JavaScript string encoding covers why `.length` and visible character count can disagree). A caption that reads as 2,150 characters in a word processor can already be over the real limit if it leans heavily on emoji.
TikTok also names the field oddly: it's called `title`, not `caption`, even though it's the text that renders under the video in the app. Every scheduler has to map its own "caption" input onto that same `title` parameter when it calls the API, which is one reason the 2,200 figure gets described inconsistently across vendor documentation.
Video captions vs. photo-post captions
TikTok doesn't apply one caption rule across every post type the API accepts. A scheduled TikTok photo post splits the caption into a short title field capped at 90 characters and a separate description field capped at 4,000, both measured in plain characters rather than UTF-16 units. A scheduled video post has no such split: one field, one 2,200-unit ceiling.
| Post type | Caption field(s) | Maximum length |
|---|---|---|
| Video (direct post) | title | 2,200 UTF-16 code units |
| Photo (PULL_FROM_URL) | title + description | 90 characters + 4,000 characters |
Hashtags and mentions count against the same budget
TikTok's docs confirm the title field parses hashtags (#) and mentions (@), delimited by spaces or new lines, so they render as tappable tags instead of plain text. The docs don't carve out a separate allowance for them: every hashtag, mention, space, and emoji in a video caption draws from the same 2,200-unit pool. Ten medium-length hashtags can burn several hundred units before the actual message even starts.
What happens if you go over
TikTok's reference doesn't document the specific failure for an over-length title, only a generic `invalid_param` error with a note to check the message for details. Vendor write-ups disagree on what that message actually says: some report a distinct `content_too_long` code, others say the API doesn't name the offending field at all. Neither claim is confirmed in TikTok's own docs, so this article won't repeat either as fact. What is certain is that nothing downstream of the field validates length for you; a scheduler either truncates the caption before sending it or passes the overage straight to TikTok's API and finds out from the response.
How Synapse keeps a TikTok caption inside the limit
Synapse truncates a TikTok video caption with `title.slice(0, 2200)` before it reaches TikTok's API, the same truncation approach behind every per-platform caption override in a post built once for every platform. Because JavaScript strings are themselves UTF-16 under the hood, slicing a JS string to 2,200 already counts in the same units TikTok's docs use. That's not a coincidence engineered around the limit; it's what happens when the truncation method and the platform's own measurement share the same encoding.
Keeping a caption under the limit
A few habits keep a long TikTok caption from getting clipped mid-sentence:
Is the TikTok caption limit 2,200 characters or 2,200 UTF-16 units?
It's 2,200 UTF-16 code units, per TikTok's Content Posting API docs. A caption without heavy emoji use will land close to 2,200 characters anyway, since letters and digits are one unit each, but an emoji-heavy caption can hit the ceiling well before 2,200 visible characters.
Is the in-app caption limit also 2,200?
No. TikTok doesn't publish an official in-app figure, but several scheduling vendors report something closer to 4,000 characters for captions written directly in the app. The 2,200 limit is specific to posts published through the API, which covers every third-party scheduler.
Do hashtags count toward the 2,200-unit limit?
Yes. TikTok's docs describe hashtags and mentions as part of the same title field, with no separate budget called out, so every hashtag draws from the same 2,200 units as the rest of the caption.
Does the limit apply to TikTok photo posts too?
No, photo posts use a different split, a 90-character title plus a 4,000-character description, measured in plain characters rather than UTF-16 units. See scheduling a TikTok photo post for that breakdown.
What happens if my caption is longer than 2,200 units?
TikTok's documentation doesn't spell out the exact failure, only a generic invalid-parameter error. Vendor reports disagree on the details, so the safer approach is truncating the caption before it's sent rather than relying on the API to explain what went wrong.