Skip to content
SocialsForAI
Menu

X (Twitter) character limit

280, but not the way you'd count it.

X weights characters. Links always count 23, emoji count 2, Chinese, Japanese and Korean characters count 2, and most Latin text counts 1.

The short answer Β· Updated Nov 1, 2026

Posts on X can contain up to 280 characters, per X's developer documentation. X counts them by weight: every URL counts as 23 characters regardless of length because it's wrapped by t.co, every emoji counts as 2, and Chinese, Japanese and Korean characters count as 2 each, so a post written entirely in Japanese fits 140 characters.

How X counts characters
ContentCounts asExample
Latin letters, digits, most punctuation1 eachhello = 5
Spaces and line breaks1 eacha, two line breaks, b = 4
Any URL23a 56-character https URL = 23
Any emoji, including skin tones and ZWJ sequences2πŸ‘ = 2, πŸ‘πŸ½ = 2, πŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦ = 2
Chinese, Japanese, Korean characters2 eachγ“γ‚“γ«γ‘γ―δΈ–η•Œ = 14
Other symbols outside X's light ranges2 each€100 = 5
Attached images04 images add nothing

From "Counting characters" on docs.x.com and the twitter-text config, read 2026-11-01. Examples computed with our counter, which uses the same weights.

How does X count characters?

X gives every character a weight of 1 or 2 and adds them up; the total must be 280 or less. The open-source twitter-text config that X points to gives weight 1 to four Unicode ranges: code points 0 to 4351 (Latin, Greek, Cyrillic, Hebrew, Arabic and more), and three small punctuation ranges between 8192 and 8247 that include en and em dashes and curly quotes. Everything else weighs 2.

Two rules override that. Every URL counts as 23, whatever its length, because X wraps it with t.co. Every emoji counts as 2, regardless of how many code points it's built from; X's docs say zero-width joiners combine emoji visually without adding to the count. X also normalizes text to Unicode NFC before counting.

Do emoji, accents and CJK count double?

Emoji and CJK do; most accented Latin letters don't. Concrete counts from our counter, which applies X's weights:

  • πŸ‘ = 2, πŸ‘πŸ½ (with a skin tone) = 2, πŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦ (a 7-code-point family) = 2, πŸ‡ΊπŸ‡Έ = 2. Complexity doesn't matter.
  • γ“γ‚“γ«γ‘γ―δΈ–η•Œ (7 Japanese characters) = 14. μ•ˆλ…•ν•˜μ„Έμš” (5 Korean) = 10. δ½ ε₯½ = 4. A post entirely in CJK fits 140 characters.
  • cafΓ©, ΠŸΡ€ΠΈΠ²Π΅Ρ‚ (Cyrillic) and Ω…Ψ±Ψ­Ψ¨Ψ§ (Arabic) count 1 per letter: 4, 6 and 5.
  • € counts 2, because it sits outside X's weight-1 ranges. €100 = 5.
  • Unicode "bold" letters like 𝗕𝗼𝗹𝗱 count 2 each = 8, double the plain word. Don't use them on X if space is tight.
  • A decomposed accent (e plus a combining mark) counts 1 on X after NFC normalization. Our counter normalizes the same way, so it counts 1 too.

Do mentions, hashtags, line breaks and images count?

Mentions and hashtags count like normal text, including the @ and #: Hi @alice, thanks for the report #bugfix is 40. X's docs make one exception: the @mentions X fills in automatically at the start of a reply don't count, but our API doesn't create replies, so every mention you write counts.

Line breaks count 1 each; a newline is code point 10, inside X's weight-1 range. X's docs say attached media counts 0. Attach up to 4 images through our API without touching the text budget.

What happens if you go over 280 through the API?

With our API, nothing reaches X. Preflight counts the text with X's weights and returns a 422 preflight_failed whose issue reads, for a 283-character post, "Text is 283 characters; X allows 280." with the fix "Shorten it by 3+ characters, or set platform_options.x.text to a shorter version." Send dry_run: true to get the same answer without risk. A Twitter bot that fills templates should dry-run each new template once.

Longer posts exist on X. Its API changelog records that, as of August 20, 2024, longform posts can be created through API v2 with a length of 25k characters. Our API caps X at 280 weighted characters today, so a longer post needs a shorter X version in platform_options.

How do I shorten a post to fit 280?

Work in this order, cheapest first.

  • Cut emoji and CJK punctuation first: each one you remove gives back 2.
  • Keep one link. A second link costs another 23 and doesn't change the price tier you already hit.
  • Drop the link from the X version if cost matters: it saves 23 characters and drops X's fee from $0.200 to $0.015. Moving it to a reply doesn't help, because a reply with a URL is billed at $0.200 too.
  • Write a separate X version in platform_options.x.text and keep the long one for Bluesky and LinkedIn. See crossposting.

Questions

What developers ask

What is the character limit on X (Twitter)?

Posts on X can contain up to 280 characters, per X's developer documentation. Characters are weighted: Latin letters, digits and most punctuation count 1, while emoji and Chinese, Japanese and Korean characters count 2, and every URL counts 23. X's API changelog also records longform posts of up to 25k characters through API v2.

Does a link count against the X character limit?

Yes, always as 23 characters, however long or short the URL is, because X wraps every link with its t.co shortener. Through the API, a link also changes the price: X lists a post with a URL at $0.200 versus $0.015 without one.

Do emoji count as one character on X?

No. Every emoji counts as 2, regardless of complexity, per X's docs. A thumbs-up, a thumbs-up with a skin tone, a flag and a four-person family emoji all count 2, even though the family is 7 code points and 11 JavaScript string units.

Why does my character count differ from X's?

Most counters use string length. JavaScript's .length counts UTF-16 units, so emoji show as 2 to 11 and URLs at their full length, while X counts emoji as 2 and URLs as 23. Our X character counter and our API's preflight both apply X's weights, so they match what X enforces.

How many characters can a tweet in Japanese have?

140. X counts each Chinese, Japanese and Korean character as 2, so 140 Japanese characters weigh 280. In our counter, 140 repetitions of the hiragana あ weigh exactly 280, and a 141st makes it 282, over the limit. Mixed text adds up per character: Latin letters and spaces count 1, Japanese characters and full-width punctuation count 2.

Do images count toward the X character limit?

No. X's docs say media attached to a post counts as 0 characters. Through our API you can attach up to 4 images, at most 5 MB each, with optional alt text, and the full 280 stays available for text. Image URLs in the media array are not part of the text, so they don't count as 23 either.

Get an API key and send your first post in five minutes.