Character Counter
Type or paste text below for a live character count, shown both with and without spaces. The count runs in your browser as you type, so nothing is uploaded and nothing is stored.
Character Limits You Are Probably Checking Against
Almost every character limit in daily use comes from one of four places: a social platform, a search result, a mobile network, or an ad format. The current figures:
| Where | Limit | Counted as |
|---|---|---|
| X / Twitter post (standard) | 280 | Weighted — see below |
| X / Twitter post (Premium) | 25,000 | Weighted |
| SMS, single segment | 160 (GSM-7) / 70 (UCS-2) | Septets or 16-bit units |
| SMS, per segment when split | 153 (GSM-7) / 67 (UCS-2) | Septets or 16-bit units |
| Title tag in Google results | ~60 | Pixel width, ~600px |
| Meta description in Google results | ~155 | Pixel width, ~920px desktop |
| Instagram caption | 2,200 | Code points |
| Instagram bio | 150 | Code points |
| LinkedIn headline | 220 | Code points |
| LinkedIn post | 3,000 | Code points |
| YouTube video title | 100 | Code points |
| YouTube description | 5,000 | Code points |
| Bluesky post | 300 | Graphemes |
| Mastodon post | 500 by default | Code points |
| Reddit post title | 300 | Code points |
| Google Ads headline | 30 | Code points |
| Google Ads description | 90 | Code points |
| Pinterest pin description | 500 | Code points |
Two of these are not really character limits at all. Google does not truncate a title or description at a character count — it truncates at a pixel width, roughly 600px for titles and 920px for descriptions on desktop, considerably less on mobile. A title full of narrow letters ("illiterati") survives past 60 characters; one full of capitals and wide letters ("WARM WOMBAT WORKWEAR") gets cut before it. The 60/155 figures are averages that happen to work for ordinary mixed-case English, which is why they are quoted everywhere. Treat them as a guide, and put the words that matter first so a truncation costs you nothing important.
Why an Emoji Costs More Than One Character
The count above measures UTF-16 code units — the unit JavaScript uses for string length, and the same unit behind most web form validation, Java, C# and Windows APIs. For ordinary Latin text one code unit is one visible character and the distinction never surfaces. Emoji break it immediately.
Every code point above U+FFFF is stored as a surrogate pair: two code units. Nearly all pictographic emoji live up there, so a single smiling face is 2. It gets worse when emoji are built by composition:
- 😀 a plain emoji — 2 code units
- 👍🏽 a hand plus a skin-tone modifier — 4
- 🇺🇸 a flag, which is two regional-indicator letters — 4
- 👨👩👧👦 a family, which is four emoji stitched together with three invisible zero-width joiners — 11
That last one is a single glyph on your screen and eleven characters to a form validator. If you have ever had a 275-character post rejected as too long, an emoji is usually why.
Accented and non-Latin characters have a subtler version of the same problem. "é" has two valid encodings: the single precomposed code point U+00E9, or a plain "e" followed by a combining acute accent at U+0301 — two code units, pixel-identical on screen. Text pasted out of certain PDFs, macOS filenames and some XML pipelines arrives decomposed, so an accented French or Vietnamese passage can count noticeably higher than the same text typed fresh. Normalising it (NFC) collapses the pairs back down.
X applies its own arithmetic on top of all this. Its 280 limit is weighted: characters in the Latin-1 range and common punctuation count as 1, and everything else — CJK, Arabic, Cyrillic, emoji — counts as 2. A post in Japanese therefore gets about 140 visible characters, not 280.
SMS: 160, 70, and the Segment Nobody Mentions
The 160-character figure is a genuine engineering constant, not a product decision. The GSM standard packs seven-bit characters into eight-bit bytes, and 140 bytes of payload holds exactly 160 septets. That alphabet covers unaccented Latin letters, digits and basic punctuation. Nine characters — { } [ ] ~ ^ \ | and € — sit in an extension table and quietly consume two septets each.
The moment your message contains a character outside that alphabet — a curly "smart" apostrophe pasted from Word, an em dash, an emoji, an accented name — the whole message re-encodes as UCS-2 and capacity drops from 160 to 70. One curly quote can more than halve your allowance.
Longer messages get split into segments and reassembled by the handset. Each segment spends 7 bytes on a reassembly header, which costs 7 septets of payload:
| Encoding | Single message | Per segment when split |
|---|---|---|
| GSM-7 | 160 | 153 |
| UCS-2 | 70 | 67 |
So a 161-character GSM-7 message is billed as two segments totalling 306 characters of capacity, and a 306-character message is three. If you are sending at volume, checking the count before you send is the difference between one billable segment and two.
"Excluding Spaces" — Who Actually Wants That
The second figure looks redundant, because virtually no platform limit excludes spaces. It exists for people who are being paid or charged by volume of text.
Translation, transcription and typesetting work has historically been priced per unit of text rather than per hour, and several of those units are character-based. Continental European agencies often quote per "standard line" of roughly 55 characters; some clients specify that spaces are excluded from the count, others that they are included, and the difference is around 15–18% of the invoice on ordinary English prose. A quote given against the wrong count is a quote given at the wrong price. A handful of academic and grant forms also state their limits excluding spaces, usually where the field was designed around a typesetting constraint.
If you are on either side of that kind of transaction, agree which number you are both using before work starts. If you are checking a social or SEO limit, ignore the no-spaces figure entirely.
Trimming to Fit Without Wrecking the Sentence
When you are over by a small margin, the reflexive fix — deleting adjectives — is usually the worst-reading one. Cheaper cuts, roughly in order of how little they cost you:
- Contractions. "do not" to "don't", "it is" to "it's". Two to three characters each, free of any change in meaning outside formal registers.
- Digits over words. "three" to "3", "per cent" to "%". Fine in headlines, ads and posts; wrong in body prose, where style guides generally want small numbers spelled out.
- Ampersands and slashes in headline positions only.
- The trailing URL. X and most platforms count a link as a fixed length (23 characters on X) regardless of how long it really is, so shortening the URL itself saves nothing.
- Whole clauses. Below about 90% of a limit, deleting the weakest clause reads better than compressing every clause.
Then leave headroom. Sitting exactly on 280 or exactly on 160 is fragile: a platform that weights characters differently, an autocorrect that swaps a straight apostrophe for a curly one, or a downstream system that appends a signature will push you over.
Working to a word target rather than a character one? The word counter has the essay and article thresholds. If you are checking prose readability rather than length, average sentence length is the more useful measure — the sentence counter covers it.