Where else this text fits — live, across every limit
Everything is computed in your browser — nothing you type is uploaded or stored. Need the text styled too? The UltraTextGen generator turns it into 100+ copy-paste fonts.
Hard limits vs. soft limits
Two different things get called a "character limit," and it changes what going over actually costs you.
| Type | What happens if you go over | Examples |
|---|---|---|
| Hard limit | The platform rejects it. The post won't send, the name won't save. | X post 280 · Discord nickname 32 · TikTok username 24 · SMS segment |
| Soft limit (truncation) |
You can type more, but readers stop seeing it unless they tap "more". | Instagram caption after 125 · LinkedIn post after ~140 on mobile / ~210 on desktop · YouTube description after ~157 |
The soft limit is the one most people are actually writing against, and almost no counter shows it. A LinkedIn post has 3,000 characters and roughly 140 useful ones: the rest is behind a tap nobody takes. So the tool above renders the fold directly — type into it and you see the exact text that appears before "see more", with everything after the cut dimmed behind a line, plus how the same opening holds up on every other feed that truncates.
Where each feed cuts, and on which device:
| Feed | Mobile | Desktop | What that means for a hook |
|---|---|---|---|
| LinkedIn post | ~140 | ~210 | Write to 140 and it survives both — the widest device gap of any feed here. |
| Instagram caption | ~125 | ~125 | The tightest fold on this list — roughly one sentence before "... more". |
| YouTube description | ~157 | ~157 | What shows under the title before "Show more"; also what search often surfaces. |
| Facebook post | ~477 | ~477 | The most forgiving fold — a full short paragraph lands before the cut. |
Writing the hook itself is a different craft from measuring it — for what actually earns the tap, see styling LinkedIn hooks to stand out.
Two honest caveats. These are observed UI behaviour, not published limits, so treat them as "what reliably shows" rather than exact thresholds — and feeds also cut on line count, so three early line breaks can truncate a post well short of any character number. If your opening depends on a list, check it in the real composer too.
Every platform character limit in this checker
The same limits the live checker above uses, as a reference table. Jump to: X/Twitter · Discord · Instagram · TikTok · SMS · how each platform counts.
Posts & messages
| Platform | Limit | Notes |
|---|---|---|
| X / Twitter post | 280 | Weighted: every URL = 23, most emoji/symbols/styled letters = 2 — see how X counts |
| Discord message | 2,000 | 4,000 with Nitro; longer messages become a .txt attachment |
| Instagram caption | 2,200 | Truncated with "more" after the first lines |
| TikTok caption | 2,200 | |
| LinkedIn post | 3,000 | "See more" cuts the hook at ~140 on mobile, ~210 on desktop — write to 140 and it survives both |
| Facebook post | 63,206 | |
| YouTube description | 5,000 | |
| Pinterest pin description | 500 | |
| Telegram message | 4,096 | 1,024 for a photo/video caption |
| Threads post | 500 | |
| Bluesky post | 300 | Counted by graphemes (what you see), not code points |
| Reddit post title | 300 | |
| Zalo post/status | 2,000 |
Bios & profiles
| Field | Limit |
|---|---|
| Instagram bio | 150 |
| TikTok bio | 80 |
| LinkedIn headline | 220 |
| WhatsApp About | 139 |
| Telegram bio | 70 |
| VK status | 140 |
Usernames, titles & SMS
| Field | Limit | Notes |
|---|---|---|
| Discord nickname | 32 | |
| TikTok username | 24 | Letters, numbers, underscores, periods only |
| Instagram username | 30 | |
| YouTube title | 100 | |
| SEO meta title | ~60 | Google truncates by pixel width — treat as a guideline |
| SEO meta description | ~155 | Same — pixel-width truncation |
| SMS text message | 160 / segment | Drops to 70 per segment the moment one non-GSM character (emoji, curly quote, ş, ő, Vietnamese diacritics…) appears — see SMS counting |
Why your character count doesn't match the platform's
"How many characters is this?" has more than one correct answer, because platforms count in different units. The same text can have four different lengths:
| Counting mode | What it measures | Who uses it |
|---|---|---|
| Graphemes | What you visually see — an emoji with skin tone is 1 | Bluesky; roughly how Instagram treats emoji |
| Code points | Unicode characters — 👍🏽 is 2 (thumb + skin tone) | Most web platforms and this tool's main "Characters" stat |
| UTF-16 units | How JavaScript and many apps store text — 𝗯𝗼𝗹𝗱 letters cost 2 each | HTML form fields (maxlength), many games and app backends |
| UTF-8 bytes | Storage size — é is 2, 中 is 3, 𝗯 is 4 | Amazon listing fields (200-byte titles, 250-byte search terms), Steam names, databases |
All four are shown live in the stats above, so when a form says your text is too long while your word processor disagrees, you can see exactly which count the form is using. Two platforms need special rules on top:
X / Twitter counts by weight, not characters. Per X's own published algorithm (the twitter-text library), every URL counts as exactly 23, basic Latin letters count as 1, and almost everything else — CJK characters, most emoji, and every "fancy font" Unicode letter — counts as 2. A fully styled 𝗯𝗼𝗹𝗱 post therefore fits only 140 visible letters in the 280 budget. The "X / Twitter post" option in the checker above implements this real algorithm.
SMS is counted in segments, and one character can triple your bill. A text message holds 160 characters only while every character is in the old GSM-7 alphabet. One emoji, curly quote (’ pasted from Word), or accented letter outside it (ş, ő, ą, Vietnamese diacritics…) silently switches the whole message to Unicode mode — 70 characters per segment, 67 when it splits. The "SMS text message" option above detects this and names the exact character that flipped your message.
Counting fancy fonts and styled text
Styled Unicode text — 𝐛𝐨𝐥𝐝, 𝓈𝒸𝓇𝒾𝓅𝓉, 𝔤𝔬𝔱𝔥𝔦𝔠 letters from the UltraTextGen generator — looks like normal letters but usually lives in Unicode's supplementary planes, so each letter costs 2 UTF-16 units, 4 bytes, and 2 of X's 280. That's why a 10-letter styled name can be rejected by a 12-character game field. Paste your styled text into the counter above to see its real cost in every counting mode before you use it — and if a name keeps getting rejected, see why game names get rejected.
Character counting, answered
Do spaces count as characters?
Yes, on effectively every platform. A space is an ordinary character and it uses one of your 280 on X, one of your 150 in an Instagram bio, and one septet in an SMS. That is why this tool shows "Characters" and "Chars (no spaces)" side by side: use the with-spaces number for any platform limit, and the without-spaces number only when a client or university brief asks for it, which is a billing convention rather than a technical one.
Do emoji count as one character?
Rarely. A plain emoji is usually 1 code point but 2 UTF-16 units; one with a skin tone or made of a joined sequence (like a family emoji) can be 4, 7 or more. On X every emoji counts as 2 of your 280, and in an SMS a single emoji switches the whole message from 160-character GSM-7 to 70-character Unicode segments. The Graphemes stat shows what you see; Characters and UTF-16 units show what the field charges you.
Why does the platform say I'm over when my counter says I'm under?
Because you and the platform are counting in different units. Most count Unicode code points, but HTML form fields and many apps count UTF-16 units — where a styled letter costs 2 — Amazon listing fields count UTF-8 bytes, X uses a weighted count, and UCAS counts a line break as 2. Pick your destination at the top of the tool and it counts the way that destination counts, instead of giving you a generic number.
How do I get my text under the limit?
Go over and the tool shows what to cut, with the exact saving each option gives you in that platform's own counting unit: convert styled Unicode back to plain, remove emoji, straighten curly quotes and dashes, collapse double spaces, drop hashtags, or trim to fit on a word boundary. Every one is a single click and can be undone, so you can try the cheapest fix before you start rewriting.
Do fancy fonts count as more characters?
Usually double. Styled Unicode letters — bold, script, gothic and most other fancy alphabets — mostly live above U+FFFF, so each visible letter costs 2 UTF-16 units, 4 UTF-8 bytes, and 2 of X's 280. A 10-letter styled name can therefore be rejected by a 12-character game field. Paste it in and use "Convert fancy text to plain" to see and recover the difference instantly.
Are invisible characters counted too?
Yes, and they are the most common reason a count is mysteriously higher than it looks. Zero-width spaces, byte-order marks and filler characters pasted in from other apps take up your budget while showing nothing. The tool flags them under the text box and offers a one-click removal.
Is this counter free, and does it store or upload my text?
Yes, completely free with no signup. Every count, check and fix runs client-side in your browser with plain JavaScript — nothing you type is uploaded, logged, or stored anywhere.
Need that text in a fancy font?
UltraTextGen turns plain text into bold, italic, cursive, and 100+ other Unicode font styles that work in any bio, post, or chat — free and instant.
Open UltraTextGen →Characters to Words Converter
Turn 500, 1,000, or any character count into words and pages.
LinkedIn Headline Generator
Style a headline with a built-in 220-character live counter.
Zalgo Text Generator
Glitch text with a "will it fit?" check for Discord and X limits.
ASCII Art Generator
Turn a word into big block-letter ASCII art with six font styles.
Curved Text Generator
Bend text along an arc or circle and export as SVG or PNG.