FIRST CH TOOLS / Text / 42 X POST COUNTER
X (Twitter) Post Counter
The length of a post on X is not a plain character count. Japanese, Chinese, Korean and full-width characters cost 2 each, a link costs 23 whatever its length, and the limit is 280 weight. Paste a draft and this page shows the weight, what is left and exactly where the post stops fitting, detecting URLs, mentions and hashtags and counting them at their effective weight. Built for checking a draft before it goes out.
Counted as you type
| Kind | Text | Weight |
|---|
No URL, mention or hashtag found yet.
For a plain count of characters, words and lines, use Character Counter — it counts a different way from this page. Normalising full-width and half-width forms is in Full-width ⇄ Half-width Converter.
What each character costs
| Kind | Example | Weight |
|---|---|---|
| Latin letters, digits, ASCII punctuation | A b 1 ! ? | 1 |
| Latin extended, Greek, Cyrillic | é ü α д | 1 |
| Hebrew, Arabic, Thai, Devanagari, Georgian | א ع ก अ ა | 1 |
| Common punctuation (U+2000–U+200D, U+2010–U+201F, U+2032–U+2037) | – — ‘ ’ “ ” | 1 |
| Line break, space | — | 1 |
| Kanji, hiragana, katakana | 漢 あ ア | 2 |
| Korean (Hangul) | 한 글 | 2 |
| Full-width letters, digits and punctuation | A 1 。 、 「 」 ! | 2 |
| Emoji (a whole sequence counts once) | 😀 👨👩👦 🇯🇵 1️⃣ | 2 |
| URL (with or without a scheme, any length) | https://example.com/… or example.com | 23 |
| @mention, #hashtag | @first_ch / #webtools | same as plain text |
The limit is 280 weight, not 280 characters. A post written in English can run to 280 characters, but a post written in Japanese hits the limit at 140 characters. In a post that mixes the two, there is no way to tell from looking how much room is left — which is what this page is for.
A link always costs 23. X replaces every link in a post with a t.co short URL, so a long URL full of parameters and a bare domain cost exactly the same. The corollary is that a URL shortener buys you no extra room — it only adds one more redirect. Leaving your UTM parameters on the link costs nothing.
An emoji costs 2 however many code points it is made of. The family emoji (👨👩👦) is four to seven characters joined together internally, but X counts it as a single emoji worth 2. The same goes for skin-tone modifiers, flags (🇯🇵) and keycaps (1️⃣).
What is not counted. The @username handles that X prepends to a reply, and images, videos or a quoted post attached at the end, are outside the weight. A mention typed inside the body is counted as ordinary text. This page counts the body only, so paste the body without the reply handles.
How to Use
- Paste the draftWeight, remaining budget and line count update as you type. Besides the standard 280, the X Premium limits of 4,000 and 25,000 are available.
- Look at the overflowAnything highlighted in red is the part that would be cut. URLs, mentions and hashtags are coloured, and the table below lists their effective weight.
- Fix it and copyGoing over your target (275 by default) raises a warning while still being postable. "Trim to the limit" cuts the draft mechanically at the last position that fits.
How many characters fit in an X post?
The limit is 280 weight, so the number of characters you actually get depends on what you are writing. These are the ceilings for a post written in one script, with no link in it:
| What you are writing | Weight each | Fits in one post |
|---|---|---|
| English and other Latin scripts, digits, ASCII punctuation | 1 | 280 characters |
| Greek, Cyrillic, Hebrew, Arabic, Thai, Devanagari, Georgian | 1 | 280 characters |
| Japanese (kanji and kana) and Chinese | 2 | 140 characters |
| Korean (Hangul) | 2 | 140 characters |
| Full-width letters, digits and punctuation | 2 | 140 characters |
| Emoji (one whole sequence counts once) | 2 | 140 emoji |
| Links, whatever their length | 23 | 12 links |
A link comes off the top. Put one link in a post and the text around it has 257 weight to work with, not 280 — that is 257 English characters or 128 Japanese ones. A second link leaves 234. Since the cost is flat, it makes no difference whether you paste a bare domain or a URL carrying a page of UTM parameters.
A post that mixes scripts has no single answer, and that is the case this page exists for. English with a few kanji, a hashtag in Japanese, three emoji and a link cannot be worked out by looking at it — paste the draft above and the remaining budget is exact.
The X Premium limits scale the same way. 4,000 weight is 4,000 English characters or 2,000 Japanese ones; 25,000 weight is 25,000 or 12,500. Switch the limit in the panel above and the remaining budget and the overflow highlight follow it.
Where the line between 1 and 2 falls. In twitter-text configuration v3 every code point from U+0000 to U+10FF weighs 1 — Latin with accents, Greek, Cyrillic, Hebrew, Arabic, Thai, Devanagari and Georgian all sit inside that range — along with the punctuation at U+2000–U+200D, U+2010–U+201F and U+2032–U+2037. Everything above U+10FF weighs 2. That is why Korean costs 2 per character despite not being what most people mean by "CJK", and why an em dash costs 1 while 。 and 、 cost 2.
About This Tool
Length on X is measured as a weighted character count. When the limit went from 140 to 280 in 2017, per-character weights came with it. Latin letters, digits and common punctuation count as 1; everything else — CJK, kana, full-width punctuation, emoji — counts as 2, and a post is publishable while the total stays at or below 280. That is why a Japanese post effectively stops at 140 characters, and why writing to "280 characters" always misses.
The weight table is the one X publishes in twitter-text (configuration v3). Weight 1 covers U+0000–U+10FF (Latin, Latin Extended, Greek, Cyrillic and so on) plus the punctuation at U+2000–U+200D, U+2010–U+201F and U+2032–U+2037. That is why an em dash (—) and curly quotes (“ ”) cost 1 while Japanese brackets and 。、 cost 2. The text is normalised to NFC before counting, exactly as X does, so a "カ" followed by a combining voiced mark counts as one character (weight 2), not two.
Links are counted at a flat 23. This page detects both links written with a scheme (https://…) and bare domains (example.com, example.co.jp/path). Note, though, that the list of top-level domains used for the bare form is a built-in list of the ones that turn up in practice, not the complete gTLD/ccTLD list X carries. A bare domain on an unusual TLD is counted here as plain text while X would count it as 23 — writing https:// in front always makes the two agree. An email address (name@example.com) is not a link on X, and is counted as plain text here too.
Hashtags and mentions are ordinary text. They carry no special weight, so a Japanese hashtag costs 2 per character (#Webツール is 1 + 3 + 8 = 12). A hashtag made only of digits (#1) is not a hashtag on X and is not detected here either. The handles X prepends to a reply are excluded from the weight, but that happens in the composer, so this page counts only the characters you write in the body.
The target field exists for house rules. A post written right up to the limit breaks the moment someone adds a quote, a reply handle or one more tag, and every edit turns into a rewrite. Aiming at 260–275 leaves room for an afterthought, which is why exceeding the target warns you even though the post still fits.
Your draft never leaves the browser — the counting and the overflow highlight both run locally. Directly callable via URL parameters: /en/x-length/?text=hello / /en/x-length/?text=draft&limit=280&target=260
Other Tools
- 01Batch Image → WebP ConverterWebP Converter
- 02White Background RemoverWhite BG Remover
- 03WCAG Contrast CheckerContrast Checker
- 04Character CounterCharacter Counter
- 05llms.txt Generatorllms.txt Generator
- 06JSON-LD GeneratorJSON-LD Generator
- 07Markdown → PDFMD → PDF
- 08OGP Meta Tag WizardOGP Wizard
- 09Favicon GeneratorFavicon Generator
- 10TikTok PublisherTikTok Publisher
- 11Encoding & Line Ending ConverterEncoding Converter
- 12Batch Image → AVIF ConverterAVIF Converter
- 13Test Data GeneratorTest Data Generator
- 14Marp Markdown → SlidesMarp Slides
- 15Text & Code Diff CheckerDiff Checker
- 16Cron Expression ExplainerCron Explainer
- 17Base64 & Data URI EncoderBase64 & Data URI
- 18URL Parameter Editor & UTM BuilderURL Parameters
- 19HTML Entity Escape & UnescapeHTML Escape
- 20JSON ⇄ YAML ConverterJSON ⇄ YAML
- 21PX ⇄ REM / EM ConverterPX ⇄ REM / EM 単位変換
- 22Color Converter & AlphaColorコード変換&アルファ透過
- 23MD5 / SHA-256 Hash Generatorハッシュ生成
- 24JWT Decoder & Expiry CheckerJWTデコーダー&有効期限チェッカー
- 25User-Agent ParserUser-Agent解析&デバイス判定
- 26UUID & ULID GeneratorUUID (v4) & ULID 一括生成
- 27Aspect Ratio Calculatorアスペクト比計算&サイズ算出
- 28Markdown Table & CSV/TSV ConverterMarkdownテーブル整形&CSV/TSV変換
- 29SQL Query FormatterSQLクエリフォーマッター&整形
- 30QR Code GeneratorQR Code Generator
- 31Regex Tester正規表現テスター
- 32Unix Timestamp ConverterUNIXタイムスタンプ⇄日時変換
- 33New Tab Memo新規タブメモ帳
- 34Image Resizer & Cropper画像リサイズ&クロップ
- 35EXIF Viewer & RemoverEXIF情報の確認&除去
- 36robots.txt Generatorrobots.txt ジェネレーター
- 37Password Generator安全なパスワード生成
- 38Case Converter文字列ケース変換
- 39CSV/TSV ⇄ JSON ConverterCSV/TSV ⇄ JSON 相互変換
- 40PDF Merge, Split & ExtractPDF結合・分割・ページ抽出
- 41Full-width ⇄ Half-width Converter全角⇄半角変換&テキストクリーナー
- 43CSS clamp() Fluid Typography CalculatorCSS clamp() 計算機
- 44CSS Gradient GeneratorCSSグラデーションジェネレーター
- 45Image Colour Palette Extractor画像からカラーパレット抽出
- 46QR Code ReaderQRコード読み取り
- 47SVG Optimizer & Data URISVG最適化&data URI化
- 48Redirect Generatorリダイレクトルール ジェネレーター
- 49IP / CIDR CalculatorIPアドレス・CIDR計算機
- 50ICS Calendar Event GeneratorICS Generator
- 51cubic-bezier Easing Preview & ComparisonEasing Preview
- 52CSS box-shadow Generatorbox-shadow ジェネレーター
- 53Japanese Dummy Text Generator和文ダミーテキスト生成
- 54Social Media Image ResizerSNS画像サイズ一括書き出し
- 55Time Zone Converter & World Clockタイムゾーン変換・世界時計
- 56Date & Business Day Calculator日数・営業日計算
- 57HTML → MarkdownHTML→Markdown変換
- 58HEIC to JPEG/PNG ConverterHEIC Converter
- 59Print Size & DPI Calculator印刷サイズ・DPI計算機
- 60Color Blindness SimulatorColor Blindness Simulator
- 61SERP Preview & Meta Tag Length CheckerSERPプレビュー&メタタグ文字数チェック
- 62Flexbox & CSS Grid GeneratorFlexbox / CSS Grid ジェネレーター
- 63Text Line Toolsテキスト行操作ツール
- 64Screenshot Frame & Background Makerスクリーンショット枠装飾
- 65Japanese Era ⇄ Western Calendar Converter和暦 ⇄ 西暦変換
- 66URL Slug Generator (Japanese → Romaji)URLスラッグ生成(日本語→ローマ字)
- 67htpasswd Generatorhtpasswd ジェネレーター
- 68OGP Image GeneratorOGP画像ジェネレーター
- 69Stamp Shape Generatorスタンプ形ジェネレーター
- 70Stay Awakeスリープ防止
- 71Screen Recorder with Click Auto-Zoom画面録画+クリック自動ズーム
- 723D Device Mockup Generator3Dデバイスモックアップジェネレーター
- 73OpenAPI Docs & TS Types GeneratorOpenAPI→日本語ドキュメント&TS型定義
- 74Screen Review Board画面レビューボード
- 75AI Decision JournalAI活用案件の判断ログメモ
- 76Card Binder Plannerカードバインダー配置プランナー
- 77e-Stat CSV to Charte-Stat CSV かんたんグラフ化
- 78FAQ Schema (JSON-LD) & Markdown GeneratorFAQ構造化データ(JSON-LD)&Markdown ジェネレーター
- 79Code to Imageコード画像化