Op-Ed Insight

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.

3 min read · Length and counting

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.

WhereLimitHow it is counted
X (Twitter) post280Weighted: links count 23, emoji 2, CJK and most non-Latin characters 2
Bluesky post300User-perceived characters (graphemes)
Threads post500Characters; Threads counts each emoji by its UTF-8 bytes, so emoji use up more
Mastodon post500Default limit (servers can change it); links count 23
Instagram caption2,200Characters; also at most 30 hashtags
LinkedIn post3,000Characters
YouTube title100Characters
YouTube description5,000 bytesUTF-8 bytes, not characters: accented letters take 2, emoji 4
Pinterest description800Characters
Title tag (search results)50–60Guideline, not a limit: Google truncates by pixel width (about 600 px on desktop)
Meta description150–160Guideline: Google truncates by width and often writes its own snippet
SMS (one message)160160 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.

27 words · 1 sentence · grade 13.3

After: Our new guide to writing better headlines is live.

9 words · 1 sentence · grade 3.7

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

Open in the editor →

SMS

Replaces curly quotes, dashes and “…” with plain characters.
0characters
0words
Without spaces
0
Letters
0
Lines
0
UTF-16 code units
0
UTF-8 bytes
0

Platform limits

This tool runs entirely in your browser and needs JavaScript switched on. Nothing you type is sent anywhere.

Open the full character counter →

Open the example in the editor →