Twitter (X) character counter
Count characters the way X counts them.
Links count 23, emoji and CJK count 2. A plain character count gets X wrong; this doesn't.
X weighted count: 56 / 280 (224 left)
Plain length 65 Β· links 1 (Γ23)
This post has a link. Through the X API, posts with a URL cost $0.200 instead of $0.015 (docs.x.com pricing).
The short answer
An X (Twitter) character counter measures a draft against X's 280-character limit using X's own weighting: every URL counts as 23 characters, every emoji as 2, and Chinese, Japanese and Korean characters as 2, per X's developer docs. That is why a plain character count disagrees with X. This counter applies those weights live as you type.
How X counts characters
X doesn't count characters one for one. Its developer page "Counting characters" (read Nov 1, 2026) says posts can contain up to 280 characters and gives each character a weight:
- Latin letters, punctuation and common symbols weigh 1, so 280 of them fit.
- Every URL counts as 23, whatever its real length, because X wraps links in its t.co shortener.
- All emoji count as 2, "regardless of complexity". A skin-tone thumbs-up and a four-person family emoji are both 2.
- Chinese, Japanese and Korean characters weigh 2, so a post fits 140 of them.
- Other Unicode characters default to a weight of 2.
- Text is normalized to Unicode NFC before counting, so an accented letter counts once whether it was typed as one character or as a letter plus an accent mark.
Worked examples
Each number below was computed with the same function this counter and our API use, xWeightedLength in our codebase. Compare the weighted count with the plain length a generic counter would show.
- The sample in the box, "Shipping webhooks today π Docs: https://example.com/docs/webhooks": 65 characters plain, 56 weighted. The 33-character URL counts 23 and the rocket counts 2.
- "Docs: https://example.com" and "Docs: " followed by a 95-character tracking URL both weigh 29. Long links cost nothing extra.
- "γγγ«γ‘γ―" (five Japanese characters) weighs 10.
- "Hello π" weighs 8: six for the letters and space, two for the emoji.
- "π¨βπ©βπ§βπ¦" is seven code points joined into one family emoji, and it weighs 2.
- 280 plain letters weigh exactly 280, the limit.
Characters that count more than you expect
Most surprises come from characters outside the weight-1 ranges. Our counter gives weight 1 to code points U+0000 to U+10FF (Latin, Greek, Cyrillic, Arabic, Hebrew and more) and to the space, dash, quote and prime ranges of General Punctuation. Everything else weighs 2, following X's rule that other Unicode defaults to 2:
- Unicode bold and italic letters. "ππΌπΉπ±" weighs 8, while "Bold" weighs 4. A bolded sentence from the LinkedIn text formatter, "Shipped: webhooks for every post.", goes from 33 characters to a weight of 60.
- The single ellipsis character. "Waitβ¦" weighs 6, while "Wait..." with three periods weighs 7. The ellipsis character weighs 2.
- Curly quotes and the em dash weigh 1. "βQuotedβ β dash" weighs 15, the same as its plain length.
- Underlined or struck-through text made with combining marks counts each marked letter as 2.
What doesn't count toward 280
The same X page says two things are free. Media attached through official clients counts as 0 characters, so images don't eat into the text. And auto-populated @mentions at the start of a reply don't count; mentions you type into the text yourself count like any other characters.
This counter measures the text you paste. It doesn't know whether your post will be a reply, so if you paste the auto-added @handles of a reply, it counts them. Leave them out to match what X will count. This page covers the standard 280-character limit that X's developer docs describe; we haven't verified the separate rules for longer posts on paid X accounts, so the counter doesn't model them.
Links: 23 characters, and a different price through the API
A link always counts 23 in the text. Through the X API it also changes the price. X's pricing page (read Nov 1, 2026) lists post creation at $0.015 per request and $0.200 for a post that contains a URL. X notes that prices are subject to change.
At 10 posts a day for 30 days, that is $4.50 a month without links and $60.00 a month if every post has one. The counter shows a warning when your draft contains a link, and our API returns the warning x_link_cost on the created post for the same reason. Our X API pricing page has the full cost breakdown.
Where this counter can differ from X
We'd rather tell you the edge cases than claim a perfect match:
- Only text starting with http:// or https:// is treated as a URL. If you type a bare domain like example.com, X may still turn it into a link and count it as 23. Include the scheme to be certain of the count.
- A trailing period, comma or closing parenthesis right after a URL is counted as ordinary text, not as part of the link, so a sentence that ends in a link counts the way it reads.
Counting before you post from code
Our API counts X posts with the same function before anything is sent. A draft over 280 weighted characters fails preflight with text_too_long, a message like "Text is 312 characters; X allows 280." and the exact number to cut. When one post goes to several networks, set platform_options.x.text to a shorter version for X and keep the full text for Bluesky and LinkedIn; see cross-posting. X posting is live. The rules are on our X character limit page.
Questions
About this tool
What's the X (Twitter) character limit?
280 characters for a standard post, per X's developer page "Counting characters" (read Nov 1, 2026). Characters are weighted: Latin letters and common punctuation count 1, while emoji and Chinese, Japanese and Korean characters count 2, and every link counts 23. So 280 letters fit, but only 140 CJK characters.
Why does my count differ from other character counters?
Most counters count characters or code points one for one. X weights them: a URL counts 23 no matter how long it is, every emoji counts 2, and Chinese, Japanese and Korean characters count 2. The sample in this tool is 65 characters plain but 56 the way X counts it, because its 33-character link counts 23.
How many characters does a link use on X?
23, always. X wraps every URL in its t.co shortener, so a short link and a 95-character tracking link both count 23 toward the 280 limit. Through the X API, a post containing a URL also costs $0.200 instead of $0.015, per X's pricing page read Nov 1, 2026.
Do emoji count as two characters on X?
Yes. X's docs say all emoji count as 2 regardless of complexity. A single smiley, a thumbs-up with a skin tone and a family emoji built from seven code points each count 2. In this counter, "Hello π" shows a weighted count of 8: six for the letters and space, two for the emoji.
Do images, videos or reply mentions count toward 280?
Media attached through official clients counts 0, per X's docs. Auto-populated @mentions at the start of a reply don't count either. Mentions you type into the text yourself do count. This counter measures only the text you paste, so leave out the auto-added reply handles to match what X counts.
Does Unicode bold text use more characters on X?
Yes, double. X weighs characters outside its common Latin ranges as 2, and Unicode bold and italic letters fall outside them. "Bold" weighs 4 and its bold version weighs 8. A 33-character sentence set in Unicode bold weighs 60, so styled text eats into the 280 limit twice as fast as plain text.
Posting from code or an agent? SocialsForAI runs the same checks before every post. X character limit Β· X API pricing Β· Bluesky character counter Β· Cross-posting
Get an API key and send your first post in five minutes.