In the TikTok app a caption can run to 4,000 characters. Through TikTok’s Content Posting API, the route scheduling tools use, the limit is 2,200. A caption written to the first number can fail at the second, so this checks both.
Runs in your browser. Nothing you type leaves this page.
documented means TikTok publishes the number. observed means people measured it, and it can change without notice.
| What | Limit | How known |
|---|---|---|
| Caption in the app | 4,000 characters | observed |
| Caption through the Content Posting API | 2,200 | documented |
| Photo post title, through the API | 90 | documented |
| Photo post description, through the API | 4,000 | documented |
4,000 characters in the app, observed. TikTok raised it from 2,200 in 2023, but we have found no TikTok page that states the new figure, only reports of the change.
2,200, documented. TikTok’s Content Posting API reference says of the video caption: “The maximum length is 2200 in UTF-16 runes.” That is the limit a scheduling tool hits, and it is why so many guides still say 2,200. Photo posts through the API take a 90-character title and a 4,000-character description.
We read “UTF-16 runes” as UTF-16 code units. The counter above counts the same way, so most emoji count as 2.
This page checks one platform. PostSiete takes one idea and writes a native draft for LinkedIn, X, Instagram, Threads, Facebook, TikTok and YouTube Shorts, each measured against its platform’s limit while it is written, and previewed as it will post.
Start free, no card → Free plan, then $12/month Pro or $39/month Siete. Flat, not per seat. Self-hostable.PostSiete Lens puts the real count inside the composer on X, LinkedIn, Instagram, Threads and Facebook while you type. It does not run on TikTok yet. Free Chrome extension, no account, no trial. It reads — it never posts for you.
Add to Chrome — free →Yes. Hashtags are part of the caption text and count at their literal length.
Both are right about different things. 4,000 is the app; 2,200 is TikTok’s posting API, which is what a scheduler uses.
No. The counting runs in your browser; the page makes no network request with your text.
post_info.title: “The maximum length is 2200 in UTF-16 runes.” Updated 24 August 2026.