Where these numbers come from
Every cap on this page is a constant in Hermoso's own publishing code — the number a post is refused against at the moment it is scheduled, rather than hours later at posting time. We publish them because almost nobody does, and because a caption checker whose numbers came from a blog post from 2019 is worse than counting by hand.
Each row links to that channel's page, which sets out the rest of its rules: what visibility states it genuinely has, whether media is required, and what identity has to be chosen before anything can post.
- X — 280 characters. X scheduler
- Threads — 500 characters. Threads scheduler
- Pinterest — 800 characters for the description, with the Pin title capped separately at 100. Pinterest scheduler
- YouTube — 100 characters for the title and 5,000 for the description. YouTube scheduler
- Instagram — 2,200 characters. Instagram scheduler
- TikTok — 2,200 characters for a video and 4,000 for a photo post; there are two caps, not one. TikTok scheduler
- LinkedIn — 3,000 characters. LinkedIn scheduler
- Facebook — 63,206 characters. Facebook scheduler
The one place a plain count is not enough
X does its own arithmetic. Every URL in a post counts as a fixed 23 characters no matter how long it is, so a 90-character link costs 23 and a 12-character link also costs 23. Characters in some scripts, including Chinese, Japanese and Korean, count as two. This checker reports a plain character count and says so; if your post carries a long link, X will give you more room than the number here suggests, and if it is in a CJK script it will give you less.
We show the plain count rather than a reimplementation of X's weighting on purpose. A counter that silently applies somebody else's formula is only useful while the formula is right, and being quietly wrong about a limit is worse than being plainly approximate about one.
The limit is rarely the real constraint
Fitting is the easy test. What actually decides whether a caption works is where it gets cut in the feed — and that point is much earlier than the cap, is not published by any of these networks, and moves with device width and font. Instagram's cap is 2,200 characters and shows a couple of lines; LinkedIn's is 3,000 and shows about three. Everything after that is behind a “more” nobody taps.
So the practical rule is the same everywhere and needs no number: put the point in the first line. The count below tells you whether a post is legal, not whether it will be read.
Two other things the checker reports for free, because they are usually what changed when a caption suddenly does not fit: the hashtag and mention counts, and the UTF-8 byte length. Byte length matters wherever a limit is expressed in bytes rather than characters — YouTube's description cap is one, and it is exactly the kind of limit an emoji-heavy caption crosses without ever looking long. The YouTube checker handles that case properly.
What this checker does not do
It does not write a caption, rewrite one or suggest hashtags. It does not post anything or connect to any account. It does not save what you type — reload the page and it is gone — and it does not check anything that is not a length: whether Instagram will accept a post with no image, whether a TikTok privacy level is valid, whether a Pinterest Pin has a board. Those are real refusals and they are all documented on the channel pages linked above, but they are not questions a character counter can answer.
If the caption is the part you were dreading
Hermoso writes the copy as part of making the ad, in your brand's voice, with the product and call to action it already knows about — then schedules it to the channels you have connected, with each of these caps enforced up front, so a post the network would refuse never sits in a queue overnight. The queue and all eight channels are on the social media scheduler page; for the copy on its own, the AI ad copy generator.
Frequently asked questions
What is the character limit on each social network?
X is 280, Threads 500, Pinterest 800 for a description with the Pin title capped separately at 100, YouTube 100 for a title and 5,000 for a description, Instagram 2,200, TikTok 2,200 for a video and 4,000 for a photo post, LinkedIn 3,000 and Facebook 63,206. These are the constants Hermoso's own publishing code refuses a post against at schedule time, and each has a channel page here explaining the rest of that network's rules.
Why does X's own counter disagree with this one?
Because X weights its count. Every URL counts as a fixed 23 characters regardless of its real length, and characters in some scripts including Chinese, Japanese and Korean count as two. This tool shows a plain character count and says so, rather than reimplementing somebody else's formula — a counter is only useful while its copy of the formula is current, and being quietly wrong about a limit is worse than being plainly approximate about one.
How long should a caption actually be?
Much shorter than the cap, and the number that matters is not published by anyone. Instagram allows 2,200 characters and shows a couple of lines before a More link; LinkedIn allows 3,000 and shows about three. Where the cut lands moves with device width and font, so no tool can give you a real figure. The rule that works everywhere needs no number: put the point in the first line. This checker tells you whether a post is legal, not whether it will be read.
Does TikTok have one caption limit or two?
Two. A video caption is capped at 2,200 characters and a photo post caption at 4,000, and which one applies depends on the media you attach — so a caption written for a photo post is refused if you swap in a video. Hermoso applies the right cap for the attached media and refuses over-length copy with the number rather than trimming it.
Is my caption sent anywhere?
No. The counting happens in your browser, there is no network request carrying your text and nothing is stored. Reload the page and it is gone, because no copy existed anywhere but in the tab.
Does it count hashtags and emoji?
Hashtags and mentions are counted and reported separately, and emoji count as characters like anything else. It also shows the UTF-8 byte length, which is the number that matters wherever a limit is expressed in bytes rather than characters — YouTube's 5,000-byte description cap is one, and an emoji costs four bytes there against one for a Latin letter, so an emoji-heavy caption can cross a byte limit without ever looking long.
Will it tell me if a post will be rejected for anything other than length?
No, and length is only one of several ways a post gets refused. Instagram requires media and has no draft state, TikTok requires a privacy level to be actively chosen, Pinterest requires a board and Facebook may need a specific Page named when a brand has more than one. Those are real refusals, but they are not questions a character counter can answer — each channel's page linked above sets them out in full.
Hermoso writes the caption, makes the ad and schedules it. Start free — 250+ earnable free credits, no card.
Start free → See pricing