Skip to content
Shaflex
Back to the blog

Tutorial

How Each Social Network Counts Characters

A character isn't the same thing on every network. Here's how each of the five counts emoji, links, accents and mentions, with one post measured five ways.

9 min read

Each network counts a post in its own unit, so the same draft gets five different numbers. X weighs most emoji as 2 and every link as 23, Bluesky and Mastodon count graphemes, Threads' docs count emoji in bytes, and LinkedIn just publishes a 3,000-character limit.

The five limits side by side

NetworkLimitWhat counts as oneA link costsAn emoji costs
X (formerly Twitter)280, or 25,000 with PremiumWeighted: most Latin text 1, CJK 223, any length2
Threads500, at most 5 linksCharacters, with emoji as UTF-8 bytes per Meta's docsAs typed4 for most emoji, per Meta's docs
Bluesky300 graphemes and 3,000 bytesGraphemesShortened in the app to domain + 13 characters + "..."1
Mastodon500 by default, set per serverGraphemes, content warning included23 with http:// or https://1
LinkedIn3,000Not documentedNot documentedNot documented

Every number in this table comes from the network's own docs or source code, listed at the end. We checked them on October 19, 2026.

Why one post gets different counts

Text on a screen can be measured four ways, and the networks don't agree on which one to use:

  • Graphemes: what you see as one character. ๐Ÿ‘๐Ÿฝ is one grapheme.
  • Code points: the Unicode building blocks. ๐Ÿ‘๐Ÿฝ is two: the thumb and the skin tone.
  • UTF-16 units: what most programming languages call a string's length. ๐Ÿ‘๐Ÿฝ is four.
  • UTF-8 bytes: what the text takes up when it's stored or sent. ๐Ÿ‘๐Ÿฝ is eight.

The gap gets bigger with joined emoji. Here's how a few strings measure:

TextGraphemesCode pointsUTF-16 unitsUTF-8 bytesOn X
๐Ÿ‘11242
๐Ÿ‘๐Ÿฝ12482
๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง158182
cafรฉ44 or 54 or 55 or 64
ใ“ใ‚“ใซใกใฏ5551510

"cafรฉ" has two forms: รฉ can be one code point, or an e followed by an accent mark. They look identical, which is why X normalizes text before it counts. Bluesky and Mastodon count graphemes, so both forms are 4 there too.

X's limit is 280 characters for most accounts, and the count is weighted. X's developer docs say plain Latin letters, punctuation and common symbols count as 1. Emoji, Chinese, Japanese and Korean characters count as 2. The exact ranges live in X's open-source twitter-text library: code points from 0 to 4351 weigh 1, which covers Latin, Greek, Cyrillic, Arabic, Hebrew and most Indian scripts, plus a few punctuation ranges like curly quotes. Everything else weighs 2.

The rules that catch people out:

  • Every emoji is 2, whatever it's made of. A skin tone or a joined family emoji is still 2.
  • Every link is 23. X wraps links in its t.co shortener, so a 90-character URL and a 15-character one cost the same.
  • Text is normalized first (Unicode NFC), so both forms of "cafรฉ" count as 4.
  • Media is free. Attaching a photo through X's own apps costs 0 characters.
  • Reply mentions are free when X adds them at the start of a reply. Mentions you type yourself count.

X Premium raises the limit to 25,000 characters. X's help center adds a catch: if you mention someone after the first 280 characters of a long post, they won't be notified.

Meta's Threads API docs say text posts are limited to 500 characters, and that "emojis are counted as the number of UTF-8 bytes." Read literally, that makes ๐Ÿ‘ cost 4 and ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง cost 18. The same docs link to a grapheme-counting library, which would count each as 1, so the rule isn't as clear as it looks. If your post leans on emoji, leave room.

The rules that are clear:

  • At most 5 links. Since December 22, 2025, Threads refuses posts with more than 5. Repeating the same link counts once.
  • The first link becomes the preview unless you attach one separately.
  • One topic tag per post, 1 to 50 characters, with no periods or ampersands.
  • Text attachments add up to 10,000 characters behind the post, which Meta announced in September 2025. Use one when a thread would run past four or five posts.

Bluesky's limit sits in the AT Protocol's post schema: 300 graphemes and 3,000 bytes. Graphemes match what you see, so an emoji is 1. The byte cap only matters with long runs of complex emoji: 120 four-person family emoji already fill 3,000 bytes.

Links are where Bluesky differs from everyone else. Before it posts, the Bluesky app rewrites each link in your text to a short form: the domain, then the first 13 characters of the path, then "...". The full address stays attached to the link, so it still opens the right page. A link to https://example.com/blog/notes-from-our-first-month is stored and counted as example.com/blog/notes-f..., which is 27 characters instead of 51.

Tools that post through Bluesky's API write whatever text they're given. If a scheduler sends the full link, the full link counts. The Bluesky character limit guide covers this with more examples.

Mastodon's default limit is 500, and each server can run a different one. Its validator counts graphemes, and it rewrites three things before counting:

  • Links that start with http:// or https:// count as 23 characters. A bare example.com is counted as typed.
  • Mentions of people on other servers count only the username: @alice@mastodon.social costs as much as @alice.
  • The content warning is added to the post text, and the two are counted together.

To find your server's limit, open https://your.server/api/v2/instance in a browser and look for max_characters. On October 19, 2026, mastodon.social said 500 and infosec.exchange said 11,000. The Mastodon character limit guide lists more servers and explains why they differ.

LinkedIn: 3,000 characters

LinkedIn's help center says posts can contain up to 3,000 characters. It doesn't say how emoji or links count, and it doesn't publish where the "see more" cut falls in the feed. With 3,000 characters to work with, length rarely stops a post. The first two lines matter more, because they're what shows before the cut.

One post, measured five ways

Here's a real draft, with a long link and two emoji at the end:

Moved our whole posting week into one draft per idea. Each network gets its own copy, sized to fit. Notes from month one: https://example.com/blog/notes-from-our-first-month ๐Ÿš€๐Ÿ‘๐Ÿฝ

NetworkCountLimitWhy
X150280The link costs 23 and each emoji costs 2
Threads186500The link costs 51; ๐Ÿš€ is 4 bytes and ๐Ÿ‘๐Ÿฝ is 8, per Meta's docs
Bluesky (app)152300The app shortens the link to 27 characters
Bluesky (full link)176300A tool that keeps the full link pays all 51
Mastodon148500The link costs 23; each emoji is one grapheme

It fits everywhere, but the spread is already 38 characters on a post this short. It grows with every long link and every emoji, and that's how a draft that fits one network fails another.

How to write one draft that fits all five

  1. Write to X's 280 first. It's the tightest for most text, and a post that fits it usually fits the rest.
  2. Put links near the end, so a cut or a "see more" doesn't hide your point.
  3. Go easy on emoji runs. They cost 2 each on X and possibly 4 or more on Threads.
  4. Check your Mastodon server once. If it allows 1,000 or more, you can post longer there by hand. (Shaflex gives every Mastodon post 500 characters for now, whichever server you post from.)
  5. Count the content warning on Mastodon as part of the post.
  6. Split, don't cram. When a draft runs long, a thread reads better than a post with every second word cut. Our guide to writing a thread that works on every network shows how.

A few things make this faster. The free character counter measures one draft the way each network does, links and emoji included, and the character limits table keeps every limit on one page. In Shaflex, the Composer gives each network its own copy of your draft with its own limit, and Split automatically turns a long draft into a thread at sentence breaks. The cross-posting guide walks through it.

Sources

Checked on October 19, 2026.

Questions readers ask

Do emojis count as 2 characters?

On X, yes. Every emoji counts as 2 there, including skin tones and joined emoji like a family. On Bluesky and Mastodon an emoji counts as 1, because both count graphemes. Meta's Threads docs say emoji count as their UTF-8 bytes, which is 4 for most single emoji.

Do links count toward the character limit?

Yes, on every network, but not always at full length. X counts every link as 23 characters. Mastodon counts a link that starts with http:// or https:// as 23. The Bluesky app shortens a link to its domain plus up to 13 characters of path before counting it. Threads counts the link as typed and refuses posts with more than 5 links.

Do spaces and line breaks count as characters?

Yes. Every network counts spaces and line breaks. A blank line between paragraphs costs two characters: one for each line break.

Which network has the strictest character limit?

X, for most posts. Its 280 is weighted, so emoji and Chinese, Japanese or Korean text cost 2 each. Bluesky's 300 graphemes comes next. A post written to fit X usually fits all five, but check Threads' 5-link cap and Bluesky's link lengths.

Does the content warning count on Mastodon?

Yes. Mastodon adds the content warning text to the post text and counts both against your server's limit. A 40-character warning leaves 460 characters for the post on a 500-character server.

Why does my post fit on one network and not another?

Because each network counts in a different unit. X weighs characters, Bluesky and Mastodon count graphemes, and Threads' docs count emoji in bytes. Links differ too: 23 on X and Mastodon, a short form on Bluesky, full length on Threads. The same draft can measure 150 on X and 186 on Threads.

More posts

All posts

Tutorial

Mastodon Character Limit: 500, and How to Find Your Server's

Mastodon's limit is 500 characters on a standard server, but servers can set their own, from 1,024 to 11,000. How to check yours, and what counts toward it.

7 min read

Write the next post once.

Shaflex fits it to Threads, X, Bluesky, Mastodon and LinkedIn, schedules it on your rhythm and brings the replies back to you.

Free plan, no card needed.