Social media character counter
Paste a post once and see how Threads, X, Bluesky, Mastodon and LinkedIn each count it, links and emoji included. When it's over, cut it to fit.
Runs in your browser. Your text and images never leave it.
Updated
Counts by network
Type or paste a post to count it.
Why the same post counts differently
Five networks, three ways to count a character.
There's no single answer to how long a post is. Each network decided for itself what a character is, and the choices only agree on plain English letters. Emoji, accents, other alphabets and links are where they split.
| Network | Limit | What it counts | A link costs |
|---|---|---|---|
| Threads | 500 | UTF-16 code units | As typed, with no shortening. |
| X | 280 | Weighted characters | 23 each, however long. A bare domain like example.com is a link too. |
| Bluesky | 300 | Characters as you see them (graphemes) | Shortened before counting: the domain, then a path over 15 characters keeps its first 13 and gains "...". |
| Mastodon | 500 | Characters as you see them (graphemes) | 23 each, however long, when it starts with http:// or https://. A bare domain is plain text. |
| 3,000 | UTF-16 code units | As typed, with no shortening. |
Here's what the same few characters cost on each. Every number comes from the counter itself.
| Text | Threads | X | Bluesky | Mastodon | |
|---|---|---|---|---|---|
| A plain emoji (π) | 2 | 2 | 1 | 1 | 2 |
| A family emoji (π¨βπ©βπ§βπ¦) | 11 | 2 | 1 | 1 | 11 |
| A flag (π―π΅) | 4 | 2 | 1 | 1 | 4 |
| A CJK character (ζ₯) | 1 | 2 | 1 | 1 | 1 |
| Γ© typed as e plus an accent | 2 | 1 | 1 | 1 | 2 |
| A 56-character link | 56 | 23 | 31 | 23 | 56 |
| A remote mention (@alice@example.social) | 21 | 21 | 21 | 6 | 21 |
Three ways to count a character
- Characters as you see them, on Bluesky and Mastodon: an emoji, a flag or an accented letter is 1. This is the count that matches your eye.
- UTF-16 units, on Threads and LinkedIn: how most code measures text. Most emoji are 2, and ones built from several pieces are more, up to 11 for a family.
- Weight, on X: most letters 1, CJK characters and emoji 2, and every link 23.
Caps besides length
- Bluesky also caps a post at 3,000 bytes, which only long runs of emoji tend to reach.
- Threads takes at most 5 different links, and one topic tag of up to 50 characters.
- Mastodon counts the content warning with the post, and every server can set its own limit. The counter asks yours.
- X Premium raises the limit to 25,000, with the same weights.
- LinkedIn folds a post behind βsee moreβ after roughly 140 characters on phones. It's not a cap, but it's where most people stop reading.
How cut to fit works
Open a network's row and choose where it may cut: at the end of the last sentence that fits, at the last whole word, or exactly at the limit. If no sentence fits, it falls back to a word, then to the exact spot. It never splits an emoji, a flag or a link; a link that won't fit is dropped whole. Copy the result, or use it as your draft.
Cutting fixes length. Too many links or a topic tag that's too long you change by hand, and the counter says which.
Can Shaflex count characters for each network for me?
Yes. In Shaflex you write one draft and it makes a copy for each of Threads, X, Bluesky, Mastodon and LinkedIn, sized to that network's limit as you type, split into a thread where it runs long and checked against its media rules. Then the copies are scheduled together, and you can switch off Auto-sync on any channel to write that one by hand.
See how Shaflex schedules for Threads, X, Bluesky, Mastodon and LinkedIn, how one draft goes to every network, and what the free plan includes.
Where these rules come from
Each one is from the network's own documentation, help pages or source code. We last checked them on .
- Threads API docs: Posts (500 characters, emoji, 5 links, topic tags)
- X developer docs: Counting characters
- twitter-text config v3: character weights and link length
- X Help Center: X Premium, longer posts
- AT Protocol lexicon app.bsky.feed.post: 300 graphemes, 3,000 bytes
- Bluesky app source: toShortUrl
- Bluesky app source: shortenLinks
- Mastodon source: StatusLengthValidator
- Mastodon API docs: GET /api/v2/instance
- Mastodon source: the instance configuration it publishes
- LinkedIn Help: Post and share updates (3,000 characters)
More free tools
Each one runs in your browser too.
- Text tool
Thread maker
Turn long text into a thread for X, Threads, Bluesky or Mastodon, split where paragraphs and sentences end, with links kept whole.
Open it - Text tool
Character limits, every network
Every limit for the five networks: what counts as a character, what a link costs, the source and the day we checked.
Open it - Text tool
Invisible character remover
Find the zero-width spaces, stray joiners and styled letters hiding in a draft, see where each one sits and what it costs on each network, and take them out without breaking an emoji.
Open it
Character counter questions
Why does my post have a different count on each network?
Each network counts its own way. Bluesky and Mastodon count characters as you see them, Threads and LinkedIn count UTF-16 units, so most emoji are 2, and X weighs characters and charges 23 for any link.
Which network allows the longest posts?
LinkedIn, at 3,000, unless you have X Premium (25,000) or a Mastodon server that allows more than the default 500. Without Premium, X is the tightest at 280.
Do emoji count as one character or two?
It depends on the network: 1 on Bluesky and Mastodon, 2 on X, and 2 or more on Threads and LinkedIn, where a family emoji is 11.
Is my text sent anywhere?
No. Counting and cutting happen in your browser, and nothing you type is stored or sent. The one request the counter makes is the Mastodon lookup, which sends only the server name you type, straight to that server.
Will cutting to fit break a link or an emoji?
No. Cuts land between characters as you see them, so an emoji, a flag or an accented letter is never split, and a link that won't fit is dropped whole rather than cut short.
One draft, a copy for every network.
Write the post once in Shaflex, adjust the copy each network gets, and schedule them all together.
Free plan, no card needed.



