X(Twitter)字元計數器

社群媒體 文字
0 字元數
0 主題標籤數
0 提及數
0 連結數
0 換行數
0 分段數
偵測結果
主題標籤
提及
連結

簡介

X 用一套大多數人沒聽過的系統統計推文:加權字元。連結不論長短一律壓成正好 23 個字元,中日韓字形和 emoji 的重量是英文字母的兩倍,少數 Unicode 區間還有特殊待遇。結果就是一個常常讓人吃驚的限制——看似安全低於 280 的草稿被退回,而且沒人看得出原因。

Toollect 的 X(Twitter)字元計數器套用的是真正的規則,而不是天真的字串長度。貼上草稿,六個計數器隨每次按鍵即時更新——加權總計、hashtag 數、mention 數、URL 數、換行數與段落數——旁邊列出解析器偵測到的每一個 hashtag、mention 和連結。偵測邊界是在實機 x.com 上逐案驗證過的,包括那些奇怪角落:雙井號到黏在單詞上就失效的碎片。

一切都在你的瀏覽器本地運作。沒有 API 金鑰、沒有註冊、也沒有任何請求——草稿永遠不會離開你的裝置,因為不用等網路,數字才會即時出現。

使用場景

社群小編檢查排程貼文

排程工具常用單純長度來算 X 的草稿,因此常常算錯。上架之前先把文字跑一遍這個計數器——加權總計與 URL 清單會告訴你 X 到底接受什麼,一旦草稿越線,超限警告立刻出現。

對抗無聲截斷的 CJK 作者

日文、中文、韓文的推文在同樣的預算內大約只能放 140 個字形,而英文可以放 280。讓加權數字出現在草稿旁邊,就能把看不見的加倍變成可以規劃的東西,而不是發文後才發現。

打造機器人與自動化的開發者

如果你的 bot 會自動組合推文,這個計數器同時是一份規格參考——權重區間表、固定連結成本、hashtag/mention 邊界規則,一行一行記錄了 parser 的實作。

跨平台寫手

在不同平台間調整同一則訊息,意味著尊重不同的限制和不同的數學。把這個工具與姊妹工具 Instagram Caption Analyzer 配對,兩個目的地都能檢查,不必猜測哪個平台怎麼稱重。

工作原理

計數器的四個步驟完全在你的瀏覽器中執行,隨每次按鍵即時更新:

  1. 正規化文字。 輸入先轉換成 Unicode NFC 形式,讓分解的 é(字母加分音符號)只算一次而不是兩次——正如 X 在計數前自己也會做的正規化。
  2. 抽出並攤平 URL。 X 認得的每個連結被抽出,換成固定 23 字元的成本——https:// 與 http 開頭的網址,以及結尾在官方頂級網域清單上的裸網域(如 twitch.tv)都算。句尾句點這類尾隨標點留在周圍文字裡,不算進連結。
  3. 切成字形叢集。 剩餘文字用 Intl.Segmenter 切成使用者感知的字元——由七個碼位組成的 emoji 家族、兩個碼位組成的國旗、帶膚色的讚,各自恰好形成一個單位。
  4. 為每個叢集加權。 含 emoji 的叢集算 2。其餘的把碼位對照官方輕區間表求和——落在區間內算 1、之外算 2。Hashtag 和 mention 則從去除連結後的文字中,按照下方文件記載的 x.com 邊界規則另外抽取。

任何選項變更都會立即重跑整條鏈路。沒有可設定的選項、也沒有模式可選——工具永遠套用同一套即時 x.com 規則。

加權計數規則

這是計數器套用的完整權重表,與 X 所依賴的公開 twitter-text 設定一致。

字元 示例 權重
U+0000 – U+10FF 拉丁、希臘、西里爾、希伯來、阿拉伯、北印度、泰文、標點、數字 1
U+2000 – U+200D 通用標點與零寬連接符 1
U+2010 – U+201F 破折號與排版引號 1
U+2032 – U+2037 撇號記號 1
其餘全部 中日韓、諺文、emoji、大多數其他書寫系統 2

表格之上還有三條特殊規則:

  • 每個連結固定算 23。 解析器認得的任何位址都攤平成正好 23 個字元,不論實際長度——https:// 與 http 的 URL,加上 twitch.tv 這類沒有協議頭的裸網域。結尾不是真實頂級網域的仿冒品(foo.zzz)仍是普通文字。
  • emoji 叢集是原子的。 偵測以字形叢集為單位——👨‍👩‍👧‍👦 算一個叢集(權重 2)、國旗算一個、膚色修飾符會與基礎 emoji 合併。若不做叢集處理,這個家族會錯誤地加上十一個碼位。
  • 重音在計數前先摺疊。 文字先正規化到 NFC,因此用分解方式輸入的 café 只算 4 個字元,而不是 5。

一個完整演算——草稿 任務詳情 🚀 https://x.com/a/long/path

部分 計算 成本
任務詳情 9(四個字形加倍加尾隨空格) 9
🚀 一個 emoji 叢集 2
空格 1 1
https://x.com/a/long/path 攤平的連結 23
總計 35

hashtag 與 mention 邊界

偵測遵循的是透過 36 個已驗證測試案例在即時 x.com 上觀察到的邊界——其中幾個推翻了常見假設。下表列出決定性的案例。

hashtag

輸入 結果 規則
行首或空格後的 #Japan 標準案例
🇯🇵#Japan, !#Japan, .#Japan, ,#Japan, -#Japan emoji 和這些標點都不會擋住井號
abc#Japan, 123#Japan 緊貼在前面的字母或數字會使其失效
_#Japan 底線同樣擋下
&@mention, &#Japan & 符號擋下(HTML 實體安全考量)
@#Japan 直接貼在井號前的 @ 不會
##Japan, ##Japan, #Japan 多餘的井號——半形或全形——都不擋
#Japan#, #Japan#Japan, #Ja#pan 緊貼標籤結尾的另一個井號會殺掉它,且不會部分回退
#123, #123, #🇯🇵 標籤至少需要一個字母,否則序列根本不會形成
#1Direction, #日本語, #foo_bar 字母混數字、Unicode 標籤和底線都可用

#Japan# 家族最讓人意外:標籤文字本身沒問題,但當另一個井號緊貼在其結尾時,X 會丟棄整個候選——而且 parser 絕不會退而求其次改抓更短的部分。

mention

輸入 結果 規則
.@alice, ,@alice, ?@alice, :@alice, (@alice, /@alice, -@alice 這些標點允許 mention
🇯🇵@alice emoji 也允許
!@alice 驚嘆號會擋掉 mention——比 hashtag 更嚴格
@@alice, #@alice, &@alice, abc@alice, 123@alice @/井號/&/單詞字元全都擋
@alice@bob ✗ 兩個都失效 handle 後面直接跟另一個 @ 的候選會被丟棄
@alice's post ✓ alice 所有格留在 handle 之外
@15chars_max_0000(16 字元) ✓ 完整 handle parser 最多匹配 20 字元——帳號申請停在 15,偵測並不會
@12345678901234567890123(23 位數字) ✓ 前 20 位 超過上限的部分變回普通文字

mention 在左側刻意比 hashtag 嚴格(! 在這裡會擋、那裡不會),右側卻更寬鬆(@alice# 保住了 mention,而 #Japan# 失去了它的標籤)。兩種行為都在編碼之前於 x.com 即時確認過。

字元上限的迷思

四種信念從舊文檔或純粹想當然中存活下來。每一種都會在今天的 x.com 面前失效。

「回覆不計開頭的 mention。」 2017 年是真的,今天是假的。在回覆開頭輸入或貼上 handle,會像正文一樣消耗你的可用字元——這是在搭建本工具時於即時 x.com 上驗證過的。仍在複述豁免規則的指南描述的是一條已經退役的規則。

「所有非英文文字都算雙倍。」 加倍從某個具體的 Unicode 界線才開始。阿拉伯文、希伯來文、北印度文和泰文都在單倍權重區內——阿拉伯文的推文能承載的文字量和英文幾乎一樣多。雙倍權重屬於中日韓、諺文、emoji 以及界線之外的書寫系統。

「發文前先縮短連結。」 自 2010 年起就毫無意義。X 會把每個連結換成自家的縮址器並一律收費 23——你給它 13 或 300 個字元都一樣。事先縮址唯一改變的是讓人更難看出連結指向哪裡。

「圖片和引用會吃掉字元。」 附件免費——最多四張照片免費同行——被引用推文的文字也不計入你的額度。只有你實際打出的文字才算數。

Premium 與長文

X Premium 訂閱把上限從 280 提升到 25,000 字元,適用於所有付費等級,讓一篇貼文變得接近一篇文章。但有兩點比標題數字更重要。

第一,X 為 280 上限文件化了加權規則,卻從未公布 25,000 的上限如何對待連結、emoji 或 CJK 文字。任何聲稱與長文上限完全一致的第三方計數器都是在猜測。本工具有意只模擬文件記載完善的 280 規則,而不編造無法驗證的其他規則。

第二,時間軸會在大約前 280 字元處把長文折疊到「顯示更多」後面。無論你在那之後寫了什麼,開頭都要和所有人的推文一樣,在同樣的加權規則下爭奪注意力。凡是必須不用額外點擊就能被讀到的內容,280 依然是那個重要的數字——這也是為什麼這個計數器對 Premium 用戶同樣有用。

使用方法

  1. 輸入或貼上你的草稿 到文字區。六個計數器隨每次按鍵即時更新。
  2. 盯著「字元」卡片 ——加權總計一旦越過 280 它就會變紅,上方的訊息會解釋超出了多少。
  3. 查看細分清單 ——parser 偵測到的每個 hashtag、mention 和連結都列在下方,重複項摺疊成一枚標記 ×N 的晶片。
  4. 複製草稿 ——按下按鈕會選取文字並放入剪貼簿,可直接貼進 x.com 或排程工具。
  5. 清除 一鍵重置文字與所有計數。

沒有可設定的選項,也沒有模式可選——工具永遠套用同一套即時 x.com 規則。

教學

跟著一份真實草稿走完整條流程。

第 1 步——貼上一份混合草稿。

訓練完成 ✅ 完整報告 https://x.com 更多細節稍後

普通計數器顯示 32。字元卡片顯示 57。差距就是看不見的算術:十四個中日韓字形全部加倍(+14),打勾 emoji 作為獨立叢集算 2(比簡單計數多 1),連結從 13 字元攤平成 23(+10)——合計 +25。

第 2 步——看連結被攤平。 把短網址換成一個長得多的:

訓練完成 ✅ 完整報告 https://defense.example.gov/news/2026/exercise-report 更多細節稍後

連結多了 40 個字元,但字元卡停在 57 不動——偵測到的 URL 清單確認新地址的成本仍是固定的 23。普通計數器會跳到 72;這正是為什麼在 X 上預先縮址毫無用處。

第 3 步——按 x.com 的方式加上 hashtag。 追加 #日本 #訓練。兩個都能乾淨地抽出來,各加 5 個加權字元,再加上兩個分隔空格——卡片讀到 69。

第 4 步——故意弄壞一個 hashtag。 輸入 #Ja#pan。列表裡不會出現任何碎片——緊貼在標籤結尾的井號使整個候選作廢。撤銷回到能用的版本。

第 5 步——跨過那條線。 不斷複製中日韓開頭直到卡片轉紅、出現超限提示。再修剪回綠色——看著數字下降,每字元 2 的算法自然就內化成直覺了。

第 6 步——複製出貨。 按下複製,貼進 x.com——composer 第一次就接受這份草稿。同一套規則、同一個數字。

專業提示

  • 先為連結編預算:每個 23。 一個連結剩 257 字元;三個只剩 211。先留好預算,草稿之後就不用動刀。
  • 把複雜 emoji 當成奢侈品消費。 每個叢集成本 2,反應符串累積得很快——三個彩帶比 wow 這個詞還重。
  • 鉤子放最前面。 時間軸會在摺疊處截斷;落在加權中點之後的內容很少贏得點擊。結論早點給。
  • hashtag 保持乾淨的一小撮。 X 對 hashtag 數量沒有硬性懲罰,但黏在單詞中間的標籤永遠不會被解析——每個井號前留空格或放在行首。
  • 從 Word 貼上也安心。 排版引號和破折號都在單倍權重的標點區間內,NFC 正規化又會把分解重音摺成一個。
  • 跨平台發布就配 Instagram Caption Analyzer。 同一份草稿、不同的平台數學——X 加權並攤平連結,IG 則對著寬鬆的 2200 追蹤總量並建議五個以內的 hashtag。
  • 相信紅色卡片勝過相信眼睛。 只要「字元」說超了,推文就是超了——加權算術看得到普通計數器看不到的成本。

替代方案

方案 加權規則 邊界精確偵測 即時細分 私密/離線
本工具 是——在即時 x.com 上驗證 是——36 個實測案例 六卡+項目清單
x.com composer 內建計數 只有總數,無細分 不適用(平台上)
一般字元計數器 否——純長度 部分 通常
排程工具內建檢查 很少——純長度 不一
twitter-text 函式庫 是——參考實作 自行搭建 取決於託管環境

x.com composer 內建的計數器權威但只給一個總數、沒有診斷。一般字元計數器正是草稿被拒的原因——它們完全忽略加權。排程工具繼承同樣缺陷。twitter-text 函式庫是想要內嵌完整引擎者的真相來源——代價是一個依賴。本計數器佔據的是務實的中間地帶——參考級規則、零配置。

對比 twitter-text 函式庫

X 開源了一個函式庫 twitter-text,定義了正典的計數與抽取規則——本計數器實作同一份公開規格,而不是呼叫任何 API。

能力 twitter-text 函式庫 本計數器
加權長度 精確——參考實作 相同權重與區間
連結偵測 含數百個有效頂級網域的詳盡文法 裸網域以同一份官方後綴清單驗證——https 連結跳過該驗證
emoji 叢集化 設定驅動的解析 字形分割搭配標準 emoji 區塊啟發法
hashtag/mention 邊界 參考 regex 從即時 x.com 測試轉錄而來(36 案例)
整合 打包進你的 build 的依賴 無——打開頁面直接輸入

裸網域偵測如今與官方函式庫共用同一基礎:本計數器內嵌同一份 gTLD/ccTLD 官方後綴清單,twitch.tv 算連結、foo.zzz 算文字,判定與函式庫完全一致。誠實的缺口剩兩個——https 連結只要形似就接受、不做後綴驗證;內嵌清單凍結在開源版本,之後才出現的頂級網域可能缺漏。對尋常貼文兩者數字一致;其他一切——權重、叢集、邊界——都遵循同一份規格,而且邊界表來自活體平台測試而非函式庫轉錄。

計數器與 Caption 分析器的對比

Toollect 為兩大社群平台提供了姊妹分析工具,它們的分工值得一看:

問題 Caption 分析器 (Instagram) 本計數器 (X)
上限 2,200 字元 280 加權字元
計數基準 UTF-16 長度 加權字形叢集
單碼位 emoji 2(星面單位天然) 2(叢集規則)
複合 emoji 家族 逐碼元計費——家族成本高於 2 每叢集固定 2
連結 普通文字——不攤平 各自固定 23
平台特定限制 五個 hashtag 的指引 回覆 mention 照算;邊界見上表

兩種做法都沒有錯——各自反映自己的平台。Instagram 寬鬆的上限容得了簡單計數,X 緊繃的預算則需要加權精度。關於姊妹工具的一句誠實提醒:貼進 caption 分析器的 ZWJ emoji 家族會按原始碼元計數(家族的成本超過 2),因為 Instagram 從未文件化其確切方法,UTF-16 是當時務實的選擇。同一個家族若兩邊都發,X 收它 2,analyzer 會報更多。

它不做什麼

  • 不模擬 Premium 長文。 25,000 字元的層級存在,但 X 從未公布它如何計數——編造規則會打破精確度保證。見上方 Premium 與長文一節。
  • 不切分串文。 超限意味著手動刪減或拆串;工具負責報告,不代寫。
  • 不保證與 X 伺服器逐位一致。 裸網域以官方後綴清單驗證,但 https 連結跳過該驗證,且內嵌清單凍結在開源版本——病態地址理論上可能判定不同。尋常貼文則一致。
  • 不驗證 handle 是否存在。 @nonexistent_account_12345 仍會被解析成 mention——有效性是平台查詢問題,不是語法問題。
  • 不檢查 bio、DM 或暱稱上限。 那些欄位的上限不同(160、10,000 和 50),不在這個單一用途計數器的範圍內。
  • 不代發、不排程、不儲存任何東西。 輸出是知識,不是行動。
  • 與 X 無隸屬關係。 規則轉錄自公開文件與現場觀察,不代表任何背書。

疑難排解

問題 原因 解法
草稿看似不到 280 但卡片是紅的 加權成本——連結 23、CJK/emoji 2 查看細分清單;替換連結或修剪雙倍權重文字直到通過
URL 清單出現我不想發布的連結 認得的連結都算——包含 twitch.tv 這類裸網域 改寫讓地址離開草稿,或接受它的 23 成本
#123 沒出現在 Hashtags 下 純數字標籤在 X 不是 hashtag 給標籤加字母,或放棄它
emoji 後面的 hashtag 缺失 不應發生——emoji 前綴是有效的 確認緊貼井號前沒有字母/數字/底線;若仍失敗請回報確切輸入
數字和另一個網站的計數器略有不同 大多數競品使用純長度 本計數器套用官方權重;信紅卡別信泛用總數
帶重音的字詞在其他地方算得不一樣 其他工具跳過 NFC 正規化 本計數器先做正規化——其數字與 X 一致
複製沒有反應 瀏覽器拒絕剪貼簿權限 授權剪貼簿存取,或手動選取後用 Ctrl/Cmd+C 複製

隱私與資料處理

這款工具對自己的流量很誠實——它是全站零請求家族的成員,也是 Toollect 提供的最嚴格隱私等級。

  • 什麼都不會離開你的裝置。 草稿、hashtag、mention 和所有計數只存在於你的瀏覽器分頁裡。沒有 Toollect 伺服器、沒有第三方端點、沒有分析服務碰得到你輸入的文字。
  • 無帳號、無儲存、無追蹤 Cookie。 關掉分頁一切消失——根本沒有寫入過任何東西,自然無需清除。
  • 斷網也能用。 頁面載入後就算切斷連線也能繼續計數。
  • 剪貼簿的使用是明示的。 只有你按下複製時文字才會進剪貼簿——絕不自動。

如果連連結分析也需要同樣零請求的隱私哲學,本站的 X(Twitter)連結解析器以零網路請求完成全部工作。

技術規格

細節:

  • 上限——280 加權字元;每個連結攤平為 23;其餘單位依區間表計 1 或 2
  • 輕區間——U+0000–U+10FF、U+2000–U+200D、U+2010–U+201F、U+2032–U+2037(權重 1);其餘所有碼位為 2
  • 正規化——輸入在計數前轉換為 Unicode NFC
  • 分割——Intl.Segmenter 圖形模式;含 emoji 標記(VS16、ZWJ、keycap、U+1F000+、U+2600–27BF)的叢集原子性算 2;Segmenter 不可用時退回逐碼位迭代
  • 連結文法——https:///http 位址(起始邊界為行首/空格/開括號),或結尾命中官方 gTLD/ccTLD 清單的裸網域;緊貼在連字號/底線/句點/斜線之後的網域不算;尾隨標點不算進連結而是算作文字
  • hashtag 文法——#/# 加上 [\p{L}\p{N}_]+ 中至少一個字母;前一個字元不得為字母、數字、底線或 &;後一個字元不得為井號符號;接受全形符號
  • mention 文法——@/@ 加上 [A-Za-z0-9_] 的 1–20 個字元;前一個字元不得為單詞字元、驚嘆號、@、井號或 &(含全形等價物);後面跟著 @ 會丟棄候選
  • 統計——加權總計、hashtag/mention/URL/換行/段落計數,以及附 ×N 徽章的去重項目統計
  • 網路流量——零;全部計算是本地 JavaScript
  • 瀏覽器支援——支援 Intl.Segmenter 的所有現代瀏覽器(Chrome 87+、Safari 14.1+、Firefox 125+)與 Clipboard API

功能特色

  • 按真實的 X 加權規則計數 – 連結一律算 23 字元、CJK 與 emoji 算 2,經即時 x.com 驗證
  • 邊界精確的 hashtag 與 mention 偵測 – 36 個邊緣案例在實機 x.com 測試過,從 🇯🇵#Japan 到
  • 邊打邊更新的六項即時統計 – 字元、hashtag、mention、URL、換行與段落數
  • Unicode 正確的設計 – emoji 家族以一個叢集計算、分解重音先正規化、阿拉伯文只算 1
  • 反映今天的 X,而非 2017 年的傳說 – 回覆開頭的 mention 照樣計入,與平台當前行為一致
  • 免費、私密、即時 – 全程在你的瀏覽器內運作,零請求、無 API 金鑰、無需註冊

常見問題

為什麼我的推文明明不到 280,X 卻說太長?
因為 X 使用加權計數,不是簡單加總。每個連結不論長短一律 23 字元,中日韓文字與 emoji 各佔 2,只有部分字母系統算 1。一段看起來只有 250 個可見字元的草稿,加上連結和幾個 emoji 就很容易突破 280。這個計數器套用同樣的權重——它顯示的數字就是 X 將採用的數字。
一個連結算多少字元?
一律是 23。X 會把每個認得的連結放進自家縮址器——https 與 http 網址,加上 twitch.tv 這類沒有協議頭的裸網域——所以 13 字元的網址和 300 字元的追蹤連結成本相同。事先縮址毫無幫助——一個連結留給本文約 257 字元,之後每多一個連結再加 23。
哪些語言在 X 上算雙倍?
比大多數人想的少。到某個 Unicode 界線為止的字元——包括拉丁字母、希臘文、西里爾文、希伯來文、阿拉伯文、北印度文和泰文——各算 1。雙倍權重主要落在中文、日文、韓文以及 emoji。所以阿拉伯文或俄文的推文能承載的文字量和英文差不多,日文卻只有約一半。
回覆開頭的 @mentions 現在還是不計入嗎?
要計入了。2017 年 Twitter 曾把回覆提及從上限豁免,很多指南至今仍在複述那條規則。但 2026 年在 x.com 實測的結果顯示,開頭 mentions 現在和任何其他文字一樣會計入上限——這個計數器反映的是現行行為,而不是過時的傳說。
為什麼純數字標籤不是 hashtag,含字母的就可以?
X 要求每個 hashtag 至少包含一個字母——純數字標籤會被忽略。標籤也必須乾淨地起始——緊貼在井號前面的字母、數字或底線會使它失效,而空格、emoji 和大部分標點都允許它。這個計數器遵循相同的邊界,並已在 x.com 上逐案驗證。
X Premium 真的有 25,000 字元嗎?
有——付費訂閱者可以發布最長 25,000 字元的長文,但 X 從未文件化這個更大上限如何計算連結或 emoji。注意時間軸會在大約前 280 字元處把長文折疊在「顯示更多」後面,所以開頭仍然肩負主要任務。本工具模擬的是適用於所有帳號的通用 280 加權上限。
ESC