calmposts

X (Twitter) character counter

Paste a post and see its length the way X counts it, not the way your text editor does. Links count 23, emoji count 2, and anything past 280 becomes a thread when calmposts sends it.

0 / 280 280 left

Characters as you see them
0
Links
0 23 each on X
Goes out as
0 posts

Schedule this post in calmposts

Free trial. After you sign up or sign in, the text opens in the composer as a new post, and nothing is saved or published until you say so.

A worked example

One post with an emoji, a blank line, an arrow and a link. Your editor sees one length; each network sees its own.

Shipping day 🚀 The new calendar is live: drag a post to any hour and it moves there. Release notes → calmposts.com/changelog/calendar-drag-and-drop

NetworkCountsGoes out as
X127 / 2801 post
Bluesky148 / 3001 post
Threads151 / 5001 post
LinkedIn148 / 3,0001 post

How X counts characters

X does not count characters the way a word processor does. It gives each character a weight and adds the weights up. Most letters weigh 1: the Latin alphabet with all its accents, Cyrillic, Greek, Armenian, Hebrew, Arabic, Thai and the scripts of India sit in the range X counts as light. Everything outside that range weighs 2. That includes Chinese, Japanese and Korean characters, and a few everyday symbols you might not expect.

A post may weigh up to 280. A post in English, German or Russian therefore holds 280 letters, while a post in Japanese holds 140 characters, because each of them weighs 2. This goes back to 2017, when Twitter doubled its limit from 140 to 280 but left Chinese, Japanese and Korean where they were: those languages say more in one character, and never had the same trouble fitting a thought into 140.

Before it weighs anything, X normalises the text to NFC, the composed form of Unicode. An é typed as one character and an é built from an e and a combining accent are the same character after that, and both count 1. calmposts does the same, so a text copied from a document that stores accents separately counts no differently.

Links always count 23

Every link counts 23 characters, however long or short it really is. X wraps links in its own t.co shortener, so a 90-character address with tracking parameters costs the same 23 as x.com. Shortening a link before you post saves nothing on X.

A link does not need https:// in front to count. An address that starts with www., and a bare domain with a common ending such as calmposts.com/tools, example.org or example.co.uk, is a link too, and counts 23 even when the name is shorter than that.

Two things look like links and are not. An e-mail address such as a@b.com counts as written, 7, and so does a file name like notes.txt, because .txt is not a web address. Punctuation right after a link, like the full stop in «see example.com.», is not part of the link: it counts 1 on its own.

A link also changes the price of a post for whoever pays the X API. Since April 2026 X bills a post with a link at $0.20 instead of $0.015. calmposts pays X for you, which is why its plans count posts with links separately, in the open.

Emoji count 2, whatever they are made of

Every emoji counts 2, including the ones built from several pieces. A thumbs-up with a skin tone is two code points, a family of three is five joined by invisible zero-width joiners, a flag is two regional letters. To you each is one picture, and on X each counts 2.

A few other symbols weigh 2 as well, which catches people out: the ellipsis character (…), the bullet (•), arrows such as →, the euro sign (€). Three full stops typed as ... count 3 and the single … counts 2, so the ellipsis is still the shorter of the two. The em dash (—), the en dash (–) and curly quotes, on the other hand, weigh 1.

Mentions, hashtags, spaces and line breaks

An @mention and a #hashtag count as written: @calmposts is 10 characters, #buildinpublic 14. Nothing about them is free, so three hashtags on a short post can take a fifth of it.

A space counts 1, and so does a line break. A blank line between two paragraphs is two line breaks, so 2. Spaces at the end of a line count too, even though nobody sees them; delete them and the characters are yours again.

280 characters, or 25,000 with Premium

A regular X account posts up to 280. An account with X Premium posts up to 25,000, and calmposts knows which one you connected: the composer counts a Premium account against 25,000 and every other account against 280. Switch on «X Premium» above the counter to count the same way here.

A long post on Premium is folded in the timeline: readers see the first lines and a link to show the rest. Put what matters at the start, whatever your limit.

The same count as the composer

This counter is the calmposts composer's counting code, built for this page. The same rules decide what the composer shows while you write, what the server accepts when you save and what goes out to X. A post this counter calls fine is not refused for its length.

What counts how much on X

Each figure is computed by calmposts' counting code, the one that checks your posts.

TextWhat it isCounts
HelloLatin letters5
ПриветCyrillic letters6
你好Chinese characters: 2 each4
안녕하세요Korean syllables: 2 each10
👍An emoji2
👨‍👩‍👧A family: five code points, one emoji2
https://example.com/a/very/long/path?with=queryA long link23
calmposts.comA bare domain: still a link23
a@b.comAn e-mail address: not a link7
@calmpostsA mention, as written10
—An em dash1
…The ellipsis character2
•A bullet2
one twoA line break counts 17

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

Common mistakes

Counting a link by its length

A short bit.ly link and a long tracking address both count 23. Shortening a link saves no characters on X, and an unfamiliar short link makes readers hesitate.

Trusting your editor's count

Word processors and most online counters count every character as 1. A post with emoji or Japanese text is longer on X than they say, and X refuses it at publishing time if it is over.

Using symbols as bullets

• counts 2 on X, and so does →. In a list of ten points the bullets cost twenty characters; a hyphen costs half as much.

Forgetting spaces and line breaks

Each line break counts 1 and a blank line 2. A post laid out in short lines can lose 10 or 15 characters to them.

Writing for 25,000 on a regular account

Premium's limit is the Premium account's alone. Post the same text from a regular account and it has 280 there; calmposts sends it to that account as a thread.

Cutting a thread by hand

Cutting at exactly 280 leaves words and sentences broken across posts. Let the cut fall at the end of a paragraph or a sentence, as the thread splitter does.

What happens when a post is over 280

X refuses a post over the limit: its API answers with an error and nothing is published. A scheduler that does not count the way X does finds out at publishing time, often at night, when nobody is there to fix it.

calmposts counts before you save. When the text you write for X is longer than one post, the composer shows it as a thread: it cuts the text at the strongest break that fits — a blank line, then a line break, then the end of a sentence, then a space — and sends each part as a reply to the one before. Nothing is added to your words: no «1/3», no thread emoji, unless you write them.

You see every part with its own count before you save, and you can change any of them. To see the thread now, paste the text into the thread splitter, which shows Bluesky's and Threads' versions next to X's.

Thread splitter

How to count a post for X

  1. Paste your post. Type or paste the text into the box. The count updates as you type.
  2. Pick the account type. Leave X Premium off for a regular account (280), or switch it on for a Premium account (25,000).
  3. Read the count. See what is left, how many links count 23 each, and how many posts the text makes if it is too long for one.
  4. Schedule it. Press «Schedule this post in calmposts» to open the text in the composer, check each network's version and pick a time.

Questions about counting on X

How many characters can a post on X have?

280 for a regular account, counted by weight: most letters count 1, emoji and Chinese, Japanese or Korean characters count 2, and every link counts 23. An account with X Premium can post up to 25,000.

Do links count against the 280?

Yes, 23 characters each, whatever their real length, because X shortens every link with t.co. A bare domain such as example.com counts 23 as well; an e-mail address does not.

How much does an emoji count on X?

2, including emoji built from several pieces, such as a skin tone, a family or a flag.

Do spaces and line breaks count?

Yes. A space counts 1 and a line break 1, so a blank line between paragraphs costs 2.

Why does a post in Japanese or Chinese fit only 140 characters?

Because X weighs each Chinese, Japanese and Korean character 2. When the limit went from 140 to 280 in 2017, these languages kept the equivalent of 140, since they say more per character.

Is this the count calmposts uses?

Yes: it is the composer's own code. calmposts checks every post again on the server, with the same rules, when it is saved and before it is sent.

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