Social media character counter
Paste a draft below. It is measured against all 21 networks at once, each one counted the way that network itself counts, which for 4 of the 5 units in use is not what a character count would tell you.
Nothing typed yet. Every network below shows its ceiling and the unit it counts in.
The handle @name does not travel. It reaches somebody on X, Bluesky, Telegram, Instagram, Threads, YouTube, dev.to and Hashnode. On LinkedIn, Facebook, TikTok, Pinterest, Ghost, WordPress, Tumblr and Nostr it publishes as literal text and reaches nobody at all. Discord and Slack need an account id rather than a handle. On Mastodon and Lemmy it reaches whoever has that name on your own instance, which may not be the person you meant. And Reddit wants u/name instead.
The code :name: resolves on Mastodon, Discord, Slack, dev.to, Lemmy and Nostr only. On the other 15 it publishes as the literal characters you typed, colons included, because a custom emoji belongs to one workspace, server or author and does not cross to the next network.
Every network, counted its own way
The ceiling is what the network enforces. The unit beside it is how the network arrives at the number, which is the half every other counter leaves out.
- X weighted 0 / 280
- LinkedIn code points 0 / 3,000
- Bluesky graphemes 0 / 300
- Mastodon graphemes 0 / 500
- Telegram code points 0 / 4,096
- Discord code points 0 / 2,000
- Instagram code points 0 / 2,200
- Facebook code points 0 / 63,206
- Threads UTF-8 bytes 0 / 500
- TikTok UTF-16 units 0 / 2,200
- YouTube UTF-8 bytes 0 / 5,000
- Pinterest code points 0 / 800
- Reddit code points 0 / 40,000
- Slack code points 0 / 4,000
- dev.to UTF-8 bytes 0 / 800,000
- Hashnode code points 0 / 100,000
- Ghost code points 0 / 100,000
- WordPress code points 0 / 100,000
- Tumblr code points 0 / 100,000
- Lemmy UTF-16 units 0 / 10,000
- Nostr code points 0 / 8,192
Links are not modelled. X rewrites every URL to a fixed-length shortlink and Mastodon charges a flat rate for one, so on those two a draft containing a link is CHEAPER than the count above says. Postauto does not model the rewrite, in the composer or here, so the figure errs high. Nowhere else on this page is an estimate.
The same text, five different answers
One network per unit, and every figure below was produced by the function the counter above runs. Read the second row: the same family emoji is 1 on Bluesky and 25 on Threads, on ceilings that are not far apart.
| Sample | X weighted | LinkedIn code points | Bluesky graphemes | Threads UTF-8 bytes | TikTok UTF-16 units |
|---|---|---|---|---|---|
| Plain English Every post departs on time. Every unit agrees on plain Latin text, which is why nobody notices the other four exist. | 27 | 27 | 27 | 27 | 27 |
| One family emoji 👨👩👧👦 One character to a reader, and one glyph on the screen. Read across the row. | 2 | 7 | 1 | 25 | 11 |
| Curly apostrophes It’s the writer’s own apostrophe’s fault. The quote a word processor substitutes for the one on your keyboard. Free in some units, not in others. | 41 | 41 | 41 | 47 | 41 |
| Japanese 投稿は時間どおりに出発します。 Latin is the cheap case in one of these schemes and everything else is not, so this row moves where the last one did not. | 30 | 15 | 15 | 45 | 15 |
The 5 units, and who counts in them
-
weighted
X's own scheme: most of Latin weighs one, everything else weighs two, and a whole emoji sequence is one thing at weight two.
-
code points
What a backend in any of the four common languages means by a character. An emoji family is five or seven of them.
LinkedIn 3,000 Telegram 4,096 Discord 2,000 Instagram 2,200 Facebook 63,206 Pinterest 800 Reddit 40,000 Slack 4,000 Hashnode 100,000 Ghost 100,000 WordPress 100,000 Tumblr 100,000 Nostr 8,192
-
graphemes
What a reader would call a character. A whole emoji family, flag or skin-toned hand counts once.
-
UTF-8 bytes
The encoded size, so an emoji spends four and a curly apostrophe spends three. The ceiling is smaller than it looks.
-
UTF-16 units
What JavaScript's own String.length returns. Every emoji outside the basic plane costs two.
8 of the 21 also carry a separate title with a ceiling of its own, counted independently of the body: YouTube 100, Pinterest 100, Reddit 300, dev.to 128, Ghost 255, WordPress 255, Tumblr 255 and Lemmy 200. The counter above measures the body.
The other tools
Inside the composer
The same counters run inside the composer
Postauto measures a draft against every account you have ticked before it will let you schedule anything, using the code on this page. Nothing fails at departure time over length.