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