calmposts

Character counters and a thread splitter

Every network counts a post its own way. X weighs characters, Bluesky counts what you see, Threads counts emoji in bytes, LinkedIn gives you 3,000. These tools count exactly as calmposts does when it checks and sends your posts. Free, no sign-up, and your text stays in your browser.

A post that fits on one network can be too long on another. A family emoji counts 2 on X, 1 on Bluesky and 18 on Threads. A link counts 23 on X however long it is, and every one of its characters on the other three. When one text goes to several networks, you want each count before you publish, not an error after.

The counters below run the calmposts composer's own code, built for this site. The numbers are not estimates: a text the counter calls fine is a text calmposts accepts for that network. The thread splitter cuts a long text where the composer cuts it: at a paragraph, then a line break, then a sentence, and inside a word only when the word is longer than a post.

Everything runs in your browser. Nothing you type is sent anywhere unless you choose to schedule it, and then it opens as a draft in your own calmposts account.

Why the same post counts differently

X still counts the way Twitter did: by weight. Latin, Cyrillic, Greek, Hebrew and Arabic letters weigh 1; Chinese, Japanese and Korean characters and every emoji weigh 2; every link counts 23.

Bluesky counts graphemes, the characters you see: an emoji with a skin tone is 1, and so is a flag. A link counts as written. Behind the 300 characters there is a second cap of 3,000 bytes.

Threads counts like Bluesky, except for emoji: each counts as many characters as it takes bytes in UTF-8. A thumbs-up is 4, a thumbs-up with a skin tone 8, a family 18.

LinkedIn has room for 3,000 characters and no threads. When calmposts sends a thread to LinkedIn, it joins the parts into one post with a blank line between them, so the whole text has to fit.

Post limits side by side

What one post takes on each network calmposts posts to, and how it is counted there.

NetworkOne postHow characters countLinksThreads
X280 characters; 25,000 with X PremiumBy weight: most letters 1, emoji and CJK characters 223 each, whatever their lengthA chain of replies, up to 25 posts in calmposts
Bluesky300 characters and 3,000 bytesGraphemes: each character you see counts 1As written, every characterA chain of replies, up to 25 posts in calmposts
Threads500 charactersGraphemes, but an emoji counts its UTF-8 bytesAs written; at most 5 different linksA chain of replies, up to 25 posts in calmposts
LinkedIn3,000 charactersGraphemes: each character you see counts 1As written, every characterNone: a thread goes out as one post

Questions about the tools

Are these tools free?

Yes. There is no sign-up, no limit on how often you use them and nothing added to your text. They are a small part of calmposts, the scheduler they come from.

Is my text sent anywhere?

No. Counting and splitting run in your browser. Only when you press «Schedule this post in calmposts» is the text kept in this browser, for up to an hour, so the composer can open with it after you sign up or sign in. It reaches calmposts when you save the draft, not before.

Do the counts match the networks?

They match calmposts, which checks every post against each network's rules when it is saved and again before it is sent. The rules follow X's, Bluesky's, Threads' and LinkedIn's own documentation, and the tools run the code the composer runs: when a rule changes, both change together.

Can I see a thread for several networks at once?

Yes. Paste the whole text into the thread splitter: it shows the thread on X, Bluesky and Threads side by side, and LinkedIn's single post, each part with its count.

More from calmposts

Write once, post everywhere

calmposts counts your post for every network as you type, turns a long text into a thread where a network has threads, and sends each part on time through the networks' official APIs.

See the plans