Character limits by platform.
The hard limit column is what the platform accepts. The visible column is roughly how much appears in a feed before a reader has to tap or click to see the rest. Truncation points are approximate by nature — they move with device width, line breaks, and attached media — so they are given as the ranges publishers actually observe rather than as false precision.
| Platform | Field | Hard limit | Visible before the fold |
|---|---|---|---|
| X (free) | Post | 280Links always cost 23, regardless of real length. | ~280Short enough that the whole post shows. |
| X (Premium) | Post | 25,000Basic, Premium, and Premium+ tiers. | ~280Past 280 the post collapses behind Show more. |
| Post | 3,000 | 140–210Nearer 140 on mobile, 210 on desktop. | |
| Caption | 2,200Maximum 30 hashtags per post. | ~125Then a "more" link. | |
| Bio | 150 | 150Fully visible on the profile. | |
| TikTok | Caption | 4,000Raised from 2,200; older guides are stale. | ~100One or two lines over the video. |
| Post | 63,206 | ~250Then See more. | |
| Threads | Post | 500Plus a longer text attachment. | ~250 |
| YouTube | Title | 100 | ~60Search and suggested feeds clip earlier. |
| YouTube | Description | 5,000 | ~150Above the Show more control. |
| Pin description | 500 | ~50Close-up view shows more. | |
| Subject line | no hard capClients accept far more than they show. | ~50Mobile inboxes clip earliest. |
A limit tells you when you will be rejected. A fold tells you when you will be ignored. Only one of them is a writing constraint.
Count it the way the platform counts it.
Paste a post below. The counter reports plain length, then shows how each platform would score the same text — including X's rule that every link costs a flat 23 characters and that many non-Latin code points weigh two. Nothing you type leaves your browser.
Where this text fits
Runs entirely in your browser. No text is uploaded, logged, or stored.
Almost nobody taps "see more".
The truncation point is the real constraint on a social post, because the text after it is opt-in. Everything that has to land — the claim, the tension, the reason to keep reading — has to happen before the cut.
- 1Lead with the claim
Put the specific, falsifiable statement first. Not context, not a greeting, not a throat-clearing preamble.
- 2Spend the fold on tension
The visible lines should create a reason to expand. A summary removes that reason.
- 3Keep proof below
Numbers, caveats, and sourcing belong after the cut, where the reader has already chosen to continue.
Why your counter and the platform disagree.
Three rules break naive counting. Each one produces the same failure: a post that looks like it fits, then gets rejected or silently mangled at publish time.
Links are a fixed cost
X wraps every link in t.co, so any http or https URL counts as exactly 23 characters — a five-character link and a two-hundred-character tracked link cost the same. Shortening a URL to save room on X does nothing.
Not every character weighs one
Under X's published weighting, Latin text and common punctuation weigh one unit; most other code points, including CJK characters, weigh two. A post that is 280 characters long can be 400 units heavy.
Emoji are worse than they look
A plain emoji usually costs two units. Add a skin-tone or flag modifier, or a zero-width-joiner sequence like a family emoji, and one visible glyph can cost several units.
Placeholders expand later
Copy written with a token that becomes a link at publish time has to be counted as the expanded link. Validate at the pre-expansion length and an approved post can turn undeliverable the moment it ships.
A limit you do not check is a limit you will break.
These numbers are not trivia in MarketMaster — they are deterministic gates. Generated campaign copy is measured before any human is asked to approve it, using the same weighting shown above, so an over-length asset fails as a mechanical error instead of arriving as a publishing surprise.
Counted with the t.co link rule, so validation and publish agree.
Checked per asset before review.
Held to the visible line, not the client's tolerance.
Measured in words, because a slide fails on line count.
Before you schedule a post
- Weighted, not raw: Did you count links at 23 and non-Latin characters at two?
- Expanded, not tokenised: Did you count the final URL rather than the placeholder standing in for it?
- Fold first: Does the claim land inside the visible window on mobile, not just on desktop?
- Per-platform, not shared: Did the same copy get re-checked against each destination's own limit?
- Fresh numbers: Are you working from current limits rather than a guide written before TikTok's caption expansion?
Character limit FAQ
What is the character limit for a post on X?
A free X account can post 280 characters. X Basic, Premium, and Premium+ subscribers can post up to 25,000. X does not count naively: every link counts as a flat 23 characters, and many non-Latin code points count as two.
What is the LinkedIn post character limit?
3,000 characters. The number that changes results is the fold — roughly 140 characters on mobile and 210 on desktop before the see-more link, shifting with line breaks and attached media.
How long can an Instagram caption be?
2,200 characters with a maximum of 30 hashtags, but only about the first 125 characters show before the caption is truncated. The bio is a separate 150-character field.
Why does my character count differ from the platform's?
Most counters measure string length; platforms do not. Links, non-Latin characters, and emoji all carry weights above one. Counting by string length will tell you a post fits when the platform will reject it. The counter above applies the real weighting.
Should I write to the maximum character limit?
No. The hard limit is where you get rejected, not a target. Write for the truncation point, because that is all most readers see, and treat the remaining allowance as room for proof rather than filler.
How current are these numbers?
They were verified on 28 July 2026 and are re-checked as part of our release process. Platforms change limits without announcement — if you find one of these out of date, we would rather hear about it than keep publishing it.
Stop counting posts by hand.
MarketMaster writes channel-native copy from one source and validates every asset against these limits before a person is asked to approve it — so length failures surface as errors, not as rejected posts. When you adapt one pillar across channels, use the AI content repurposing workflow so each format respects these limits.