Character limits: social posts, titles, and why emoji count double
Platforms count characters in different ways, and not always the way you would. Here are the common limits, the counting rules behind them, and how to trim.
A character limit sounds simple: type no more than N characters. In practice, two tools can disagree about how many characters a post contains, and the platform’s own count is the only one that decides whether your post goes through.
Common limits
These are the limits our character counter checks against. Platforms change them, so treat this as a snapshot.
| Where | Limit | How it is counted |
|---|---|---|
| X (Twitter) post | 280 | Weighted: links count 23, emoji 2, CJK and most non-Latin characters 2 |
| Bluesky post | 300 | User-perceived characters (graphemes) |
| Threads post | 500 | Characters; Threads counts each emoji by its UTF-8 bytes, so emoji use up more |
| Mastodon post | 500 | Default limit (servers can change it); links count 23 |
| Instagram caption | 2,200 | Characters; also at most 30 hashtags |
| LinkedIn post | 3,000 | Characters |
| YouTube title | 100 | Characters |
| YouTube description | 5,000 bytes | UTF-8 bytes, not characters: accented letters take 2, emoji 4 |
| Pinterest description | 800 | Characters |
| Title tag (search results) | 50–60 | Guideline, not a limit: Google truncates by pixel width (about 600 px on desktop) |
| Meta description | 150–160 | Guideline: Google truncates by width and often writes its own snippet |
| SMS (one message) | 160 | 160 GSM-7 characters or 70 UCS-2; longer messages split into 153 or 67 per part |
Checked 2026-10-26. Platforms change their limits; the linked pages are the official sources. Test your text in the character counter.
Some platforms show only part of a long post in the feed and hide the rest behind a “more” link. The full limit tells you what you can post. What readers see before they tap is usually much shorter, so put the point in the opening line.
How X counts characters
X (formerly Twitter) has a 280-character limit, but it does not simply count characters. It weights them:
- Most Latin-script characters count as 1. That covers English and most European languages.
- Most CJK characters count as 2. A post in Chinese, Japanese, or Korean therefore fits roughly half as many characters.
- Each emoji counts as 2.
- Every link counts as 23, however long or short the URL is. X shortens links, so a long URL costs no more than a short one.
That means a post can look well under 280 characters and still be rejected. Our counter applies the same weighting when you select X, so the number you see matches the one X will use.
Characters, code points, and code units
Here is where counts get confusing. “Character” can mean three different things to a computer.
Grapheme clusters are what a person sees as one character. The letter “é”, the flag 🇯🇵, and a family emoji 👨👩👧 are each one grapheme.
Code points are the entries in the Unicode standard. Many graphemes are a single code point, but not all. A flag is two code points. A family emoji is several person emoji joined by invisible “zero-width joiner” characters.
Code units are how the text is stored in memory. Many systems, including JavaScript, store text as UTF-16, where common characters take one code unit and most emoji take two. In UTF-16, the family emoji above is three person emoji at two code units each, plus two joiners at one each: eight code units for one visible character.
A counter that uses a programming language’s default string length often counts code units. That is why some tools say a single emoji is 2 characters, or a family emoji is 8.
Op-Ed Insight counts grapheme clusters, so the number matches what you see: one emoji, one character. When a platform counts differently, as X does, our platform check uses that platform’s rule instead.
Watch out: Accented letters can be stored two ways: as one code point, or as a plain letter followed by a combining accent. They look identical. A grapheme count treats them the same; a code-unit count does not.
Tips for trimming
When you are a few characters over a limit, these usually help without changing the meaning:
- Cut filler first. “In order to” becomes “to”. “Really”, “very”, and “just” can usually go. Our list of hedge words and list of wordy phrases catch the usual suspects.
- Use the active voice. “The report was approved by the board” becomes “The board approved the report”.
- Replace a phrase with a word. “A large number of” becomes “many”.
- Drop the second example. One concrete example usually does the job.
- Move detail to the link. If you are linking to an article, the post only needs to make someone want to click.
- Count emoji on X. Each one costs 2. A row of three emoji costs 6.
Before: We are really excited to be able to announce that our brand-new guide to writing better headlines is now available for everyone to read on our website.
After: Our new guide to writing better headlines is live.
Avoid trims that hurt readability: dropping articles, using “u” for “you”, or replacing words with symbols. They save a handful of characters and make the post look rushed.
For text messages, the rules are different again. See SMS character limits.
Try it on your own text
SMS
- Without spaces
- 0
- Letters
- 0
- Lines
- 0
- UTF-16 code units
- 0
- UTF-8 bytes
- 0