Content·Free · No signup required

X (Twitter) Character Counter

Free X character counter. Counts posts, bios, handles, and DMs in real time using X's actual rules: URLs as 23, CJK as 2x, emoji weighting. No signup.

  • Tighten a tweet draft to the 280-character limit before posting.
  • Plan an X Premium longpost up to 4,000 characters without truncation.
  • Check a new bio fits the 160-character profile cap.
  • Verify a handle stays inside the 15-character username rule.
  • Stage a long DM under the 10,000-character ceiling.
0/ 280
280 left

URLs always count as 23 characters, regardless of real length. Counts URLs as 23, CJK and most non-Latin scripts as 2 per character. Runs in your browser; nothing is sent to a server.

What is an X (Twitter) character counter?

An X character counter applies X's own counting rules to a draft and tells you whether it fits a given surface. It is not a plain string-length count: URLs collapse to 23, CJK and most non-Latin scripts weight 2 per character, and emoji typically weight 2. The counter on this page mirrors the twitter-text rules the platform uses, so the number you see is the number X will see.

How X actually counts characters

X does not count Unicode code points. It applies a weighted model where each character is worth either 1 or 2 weighted units, and URLs are clamped to a fixed length.

How X weights characters: Latin = 1, CJK = 2, emoji = 2, URLs = 23A stacked bar chart showing four input categories and their weighted character cost on X. A single Latin character costs 1 unit, a single CJK character costs 2 units, a single emoji costs 2 units, and a full URL of any length costs a flat 23 units.Latina1 unitCJK2 unitsEmoji🚀2 unitsURLhttps://…23 units
One Latin character costs 1 weighted unit. CJK and most non-Latin scripts cost 2. Compound emoji count once at the joined-grapheme level. Any URL, regardless of real length, is wrapped through t.co and counted as a flat 23.
  • URLs are 23 characters. Every link, regardless of real length, is wrapped through the t.co shortener and counted as a flat 23.
  • Latin and most Western scripts weight 1. Standard ASCII, Latin Extended, common punctuation, and basic symbols.
  • CJK and most non-Latin scripts weight 2. Chinese, Japanese, Korean, Arabic, Hindi, and most emoji each count as 2 weighted units.
  • Compound emoji count as a single unit. Family emoji and skin-tone variants joined with zero-width joiners count once at the joined-grapheme level.
  • Line breaks count as 1. Hitting return adds one weighted unit, the same as a regular character.

X character limits at a glance

SurfaceFreeX PremiumNotes
Post (tweet)2804,000URLs count as 23 each.
Bio160160Same on free and Premium.
Display name5050Shown above your handle.
Handle1515Letters, numbers, underscores.
Direct message10,00010,000Per individual message.

How to use the X character counter

  1. Pick the surface you are writing for. Choose post, bio, display name, handle, or DM. The limit and progress bar update for that surface immediately.
  2. Paste or type your draft. The counter runs on every keystroke. URLs collapse to 23 characters, CJK and most non-Latin scripts weight 2 per character, like X's own counter.
  3. Watch the progress bar and remaining count. Green up to 80% of the limit, amber to 95%, red over 95%, hard-red once you exceed the limit.
  4. Toggle X Premium for longposts. On the Post surface, switch the tier to X Premium to score against the 4,000-character ceiling instead of the 280-character free cap.
  5. Copy the trimmed text. Click Copy once you are inside the limit and paste straight into X to publish or schedule.

Why use our X character counter

  • Real X counting, not text.length. Implements URL-as-23, CJK weighting, and grapheme-aware emoji counting. Other tools quietly use string length and mislead you.
  • Multi-surface in one tool. Switch between post, bio, display name, handle, and DM without opening five tabs.
  • Premium and free side by side. Toggle the Premium 4,000-character ceiling for longposts; the free 280 cap remains visible.
  • No data leaves your browser. The tool runs fully client-side. Drafts are not logged, sent, or saved server-side.
  • Shareable permalink. The current text and surface serialise into the URL so you can paste a link to a teammate without the contents ever hitting a backend.

Best practices for writing to the X character limit

  • Lead with the hook in the first 140 characters. Half the timeline reads tweets without expanding, especially on longposts and threads. Front-load the claim.
  • Treat the URL like a 23-character word. Place links where the line break already lands; never split a URL onto its own line if the rest of the post still has room.
  • For non-Latin scripts, write to half the post limit. CJK posts effectively cap around 140 visible characters because of 2x weighting. Plan accordingly.
  • Threads beat longposts for replies. Each tweet in a thread is a fresh impression. Use longposts only when the argument cannot survive being split.
  • Bios at 160 are too long for mobile. Profile bios truncate around the 100-character mark on mobile without expansion. Put the strongest line first.

Examples: real inputs and counts

Post with one URL

New post on the t.co rule: every link counts as 23 → https://example.com/some/very/long/path/to/article

Counts as 77, not 101. The 51-character URL collapses to 23.

Japanese post

こんにちは、世界。

9 visible characters, but counts as 18 because each Japanese glyph weights 2.

Mixed Latin + emoji

Shipping today 🚀

16 visible characters; counts as 17 (15 Latin chars + 1 space + 1 emoji at weight 2 minus 1 because the emoji codepoint is a single grapheme weighting 2).

X Premium longpost

A 1,200-word essay (≈ 7,200 Latin characters) fits inside the 4,000-character Premium cap. Switch the tier toggle on the Post surface to score against 4,000 instead of 280.

Frequently asked questions

Is the X character counter free?

Yes. The counter runs entirely in your browser, no signup, no email gate, and your text never leaves the page.

What is the current character limit on X?

Free posts cap at 280 weighted characters. X Premium subscribers get up to 4,000 characters per post for longposts. Bios cap at 160, display names at 50, handles at 15, and direct messages at 10,000 per message.

Why does my URL count as 23 characters?

X automatically wraps every link through its t.co shortener, which it counts as a fixed 23-character span no matter how long the original URL is. The counter applies the same rule.

Do emoji and non-Latin characters count differently?

Yes. X follows the twitter-text weighting model: Latin and most Western scripts count as 1 per character, while CJK (Chinese, Japanese, Korean), most other non-Latin scripts, and most emoji count as 2. The counter mirrors this so the number you see matches X's own.

Should I write a longpost or a thread?

Threads still earn more replies and reposts on average because each tweet is a fresh impression in the timeline. Longposts work when the argument needs unbroken context. If you are not on X Premium, the longpost option is not available to you.

What happens if I go over the limit?

X rejects the post on publish. The counter goes hard-red once you cross the threshold so you can trim before pasting into X.

X (Twitter) Character Counter: Real-time X character counter for posts, bios, handles, and DMs. Counts URLs as 23, CJK as 2x, like X does.
X (Twitter) Character Counter - a free SocialCRM tool. Share the card or copy the link below.
Maintained by the SocialCRM team · Last audited Version 1.0.0

Background and tactics that go deeper than this tool's surface.