使用方法
- 页面打开时文本框里已经放好一篇 14 句、344 个汉字的示例文章,八张结果卡直接给出可读性分 47.78、「难」档、平均句长 24.57 字、平均词长 1.59 字。
- 「长句阈值」默认 30 个汉字。它只影响「长句占比」这一项和逐句明细里的标注,不影响可读性分——可读性分用的是全部句子的平均句长,不看你把阈值定在哪。
- 点「开始检测」,或在文本框里按 Ctrl + Enter(Enter 本身留给换行,粘贴整篇文章时不要覆盖它)。文本太短会直接报错,见下文的下限说明。
- 看结果:八张卡给总分与四项结构指标,四条分布条给句长区间,下方逐句明细默认显示 12 行、按「加载更多」展开全部,超过阈值的句子右侧会打上红色标签。
- 「导出 CSV」把逐句明细存成带 BOM 的表格文件,Excel 打开中文不乱码;「复制报告」把总分与指标抄成一段纯文本。
这个文章可读性检测能解决什么问题
一是把「读起来累」变成可比较的数字。感觉是主观的,平均句长和平均词长是客观的:同一篇文章删掉两个长句,平均句长假若从 24.57 字降到 21.8 字,可读性分会立刻回升十几分。有数字才能判断一次修改到底有没有效果。
二是定位到具体是哪几句太长。总分只能告诉你「有点难」,逐句明细才能指出是哪几行。示例里第 6 句 43 个汉字、第 9 句 44 个汉字,两句就把平均值拉高了将近 3 分,拆开它们比通篇改写划算得多。
三是在同一口径下横向比较。写公众号、官网正文、产品说明时,把两段草稿都贴进来,用同一套分句与分词规则各算一遍,就能排出优先级。文章可读性检测不告诉你「应该写成几分」,只保证两次测量用的是同一把尺子。
四是给出可执行的修改方向。句长偏长就拆句,词长偏长就把生僻词换成常见词,这两件事不需要重写内容,改完再测一次就能看到分数变化。至于「分数高是不是排名就好」,答案是否定的,见下文。
本页不做这些事:不统计关键词出现次数,那是关键词密度检测的范围;不按英文音节的 Flesch-Kincaid 学年级口径算,那条路线请用FleschKincaid计算器;也不做纯粹的字符与词数清点,见字符数统计工具。
原理与规则说明
文章可读性检测给出的分数来自 Flesch Reading Ease(Rudolf Flesch,1948)。英文原式是:
FRE = 206.835 − 1.015 × (词数 ÷ 句数) − 84.6 × (音节数 ÷ 词数)
两个系数不是随手定的:句长项系数 1.015 与音节项系数 84.6 是 Flesch 在 1940 年代用美国成人阅读难度样本做回归得到的,常数 206.835 让「极短句 + 单音节词」正好落在 100 附近。原式里 词数÷句数就是平均句长(ASL),音节数÷词数就是平均词长(ASW)。
中文没有音节,直接套原式会给出假分数。中文书写没有空格,也不存在「一个词几个音节」这个量。如果硬把「音节数/词数」填成 1,示例文章会拿到 97.30 分「极易读」;而换成本页的中文适配口径只有 47.78 分「难」,同一段文本相差 49.51 分。这不是谁算错了,而是两套口径在量纲上就不同。所以本页明确采用适配式:
FRE_zh = 206.835 − 1.015 × (汉字数 ÷ 句数) − 84.6 × (汉字数 ÷ 词数)
也就是把「音节」换成「汉字」,把「词」换成中文分词得到的词。这是适配而不是原式,两条系数照搬只为保持量级可比,并不等于原式在中文语料上做过标定——页面上所有分数都按这一句解释。
分词用 Intl.Segmenter,不自己写规则。词数来自 new Intl.Segmenter('zh-Hans', { granularity: 'word' }),这是 ECMA-402 定义的标准 API,浏览器与 Node 的实现共用同一套 Unicode 断词数据(UAX #29)。它比「按标点切」或「按两字一滑」可靠得多,也不需要下载词典。若运行环境没有这个 API——主要是 2024 年之前的 Firefox——本页会降级为「每个汉字算一个词」的近似,并在提示区写明「词长口径已降级」,此时平均词长会固定成 1.00、分数会明显偏高。
分词口径不同,分数就不同,这一条必须讲透。同一段 344 个汉字的示例:按 Intl.Segmenter 分词得到 217 个词、平均词长 1.5853 字、分数 47.78;按「一字一词」得到 178 个词、平均词长 1.0000、分数 97.30。仅仅换分词口径,分数就差了 49.51 分。所以你拿同一篇文章去两家在线工具,得到两个完全不同的分数时,第一件要做的事是对比分词口径,而不是怀疑其中一家算错了。
英文段落走原式,两套分并列显示,不混算。纯英文样本 The readability of a page affects how long visitors stay on it. 有 12 个词、1 句、19 个音节(用「元音组」启发式数出来),词/句 = 12.0000、音节/词 = 1.5833,代进原式得 60.7050 分;同一套数据代进 Flesch-Kincaid 得 7.77 学年级。音节用启发式数会出错:table、people 这类「辅音 + le」结尾的词实际 2 个音节但规则算 2 个(巧合对了),science、quiet 实际 1 个音节却被算成 2 个。所以英文分数只当参考,别拿去和词典逐词核对。
分句不依赖 lookbehind。切句用「先把终止符替换成哨兵字符、再按哨兵切分」的写法,不用 (?<=[。!?]) 这类零宽断言。原因是 Safari 16.4 以前不支持 lookbehind,正则里写了它会在解析阶段直接抛 SyntaxError,整个脚本一行都不执行,页面表现为「点了没反应」。哨兵字符选 \u0001,正常文本里不会出现。
最后一句必须说清:分数不等于搜索引擎排名。可读性分只描述「这段文本读起来费不费力」,它对内容的准确性、权威性、是否满足搜索意图一无所知。排名取决于页面是否真正解决了查询需求,可读性只是影响停留时长与跳出率的间接因素之一。把分数当体检指标而不是排名开关,才是它的正确用法。
完整示例(数值仅作演示)
与页面默认值完全一致:示例文章 14 句、344 个汉字、384 个码点、UTF-8 共 1126 字节,长句阈值 30 字。实测:
- 分句得 14 句,句长分别是 33、24、11、32、12、43、6、25、44、22、24、33、17、18 个汉字;
- 平均句长
344 ÷ 14 = 24.5714,四舍五入显示 24.57 字/句;句长标准差 11.05,最长句 44 字; - 分词得 217 个词,平均词长
344 ÷ 217 = 1.5853,显示 1.59 字/词;四字及以上的长词只有 1 个,占 0.46%; - 代进中文适配式:
206.835 − 1.015 × 24.5714 − 84.6 × 1.5853 = 206.835 − 24.9400 − 134.1124 = 47.7826,显示 47.78 分,按分档落在 30 ~ 49 的「难」; - 句长四区间:≤20 字 5 句、21~30 字 4 句、31~40 字 3 句、>40 字 2 句;按 30 字阈值算长句共 5 句,占比
5 ÷ 14 = 35.71%; - 预计阅读时长
344 ÷ 300 = 1.1467分钟,约 1.15 分钟(按每分钟 300 个汉字的默读速度估算)。
把两个极端样本放进来对照:全是短句的「很好。今天很好。明天也好。价格低。买吧。这货行。」只有 18 个汉字、6 句,平均句长 3.00 字、平均词长 1.50 字,得分 76.89(较易读);而把一个 140 字的超长句当整篇文本,平均句长 140.00 字,得分直接掉到 −79.70——分数可以为负,这不是 bug,而是公式在句长远超系数适用范围时的线性外推,页面会照实显示负分而不夹紧到 0。
输入范围与对照表
输入长度上限 20000 个码点,中文分支要求至少 20 个汉字,英文分支要求至少 3 个单词。下限不是随便定的:只有 1 个汉字的文本,句数 1、平均句长 1、平均词长 1,套公式会得到 121 分的假高分,样本方差在这么短的文本上完全没有意义。
| 分数区间 | 档位 | 典型文本 | 说明 |
|---|---|---|---|
| 90 ~ 100 | 极易读 | 口语化短句、面向大众的通知 | 可作科普与公告的基线 |
| 80 ~ 89 | 易读 | 普通新闻、产品说明 | 多数面向用户的内容落在这里 |
| 70 ~ 79 | 较易读 | 行业媒体、教程 | 专业词开始出现,需要过渡句 |
| 60 ~ 69 | 标准 | 多数企业官网正文 | 英文写作的常规目标区间 |
| 50 ~ 59 | 较难 | 技术文档、研究报告 | 句子偏长或术语密度偏高 |
| 30 ~ 49 | 难 | 合同条款、学术论文 | 需要拆句或加解释才有更好的留存 |
常见误用对照。
| 常见说法 | 为什么不成立 |
|---|---|
| 「可读性分越高,排名越好」 | 分数只衡量句长与词长,对内容是否满足搜索意图、是否权威一无所知。它是一个留存侧指标,不是排名因子 |
| 「同一篇文章两个工具分数不一样,肯定有一个算错了」 | 更可能是分词口径不同。示例里仅把「一字一词」换成标准分词,分数就从 97.30 变成 47.78 |
| 「把长句阈值调到 60,长句率就低了,文章就更好读」 | 阈值只影响标注与长句率,不影响可读性分。分数用的是全部句子的平均句长,调阈值不会让文章真的变短 |
| 「英文和中文可以直接比分数」 | 中文走的是适配式,英文走的是原式,两者量纲不同。跨语言比较没有意义 |
输入范围、边界与精度说明
- 长句阈值范围 10 ~ 60 字,默认 30。低于 10 会让几乎所有句子都被标红,失去筛选意义;高于 60 又几乎没有句子能达到,等于关掉这个功能。中文手机阅读的经验分界在 30 到 40 字之间,默认取偏严格的一端。
- 分数可以为负,也可以超过 100。公式是线性的,句长与词长都很小的时候(例如通篇「很好。今天很好。」)分数会突破 100;超长句叠加时又会掉到负数。页面按实测算显示,不夹紧到 0 ~ 100 区间,因为夹紧会掩盖「文本已经远离公式适用范围」这个事实。
- 平均词长受分词器版本影响。Unicode 断词数据会随 ICU 版本更新,同一个词在新旧浏览器里可能被判成一个词或两个词。这会让平均词长在 ±0.02 字量级上浮动,进而在分数上产生 ±1.7 分的差异。要严格复现某次结果,请在同一台设备的同一个浏览器里比较。
- 纯英文混排时中文指标会失真。一段中英混排的文本,英文单词也被算进词数、但英文词一般只含 0 个汉字,会把平均词长拉低、分数拉高。本页对英文比例超过一半的文本走英文原式分支,混排文本请在提示区确认当前用的是哪一套口径。
- 标点与数字不计入汉字。句长的分子只数
[\u4e00-\u9fff]范围内的汉字,全角标点、阿拉伯数字、英文字母都不算。所以「2026 年」记作 1 个汉字而不是 6 个字符,这与第 6 句里「第四十个字」这种口语表达是一致的口径。 - 截断规则:超过 20000 个码点直接报错,不做截断。截断后算出来的分数对应的是半篇文章,却会显示得和整篇一样确定,比报错更容易误导。要分析更长的文档请分段测,每段单独看分数。
- 预计阅读时长按 300 汉字/分钟估算。这是中文默读的常见取值,只用来换算一个直观量级。真人的阅读速度在 200 到 500 字/分钟之间浮动,视内容难度与阅读目的而定,不要把它当成排版依据。
- 全部计算在浏览器本地完成。文本不发送到任何服务器(可在开发者工具 Network 面板自查),刷新页面即清空,没有历史记录。
常见问题
为什么我的文章分数很低,但读起来并不费力?
先看平均词长。如果你的文章里有很多四字成语或专业名词,分词器会把它们各算成一个词,每个词 4 个汉字,平均词长被推高到 2.0 以上,仅这一项就能扣掉 20 分以上。这不是文章难读,而是中文适配口径对「词」的定义偏长导致的系统性偏移。可以看逐句明细里哪些句子被标成长句,比只看总分更有意义。
Flesch 分数到底该拿多少当目标?
没有普适目标,只有相对目标。同一个作者、同一类内容的文章,把历次分数拉一条线,看到趋势比看绝对值有用。真要给一个参考:面向大众的科普与公告落在 70 分以上比较舒服,技术文档落在 50 分上下属于正常,合同条款落到 30 分也不必强行改——那类文本的可读性本来就让位于精确性。
Intl.Segmenter 是什么?为什么不用词典分词?
它是 ECMA-402 定义的分词 API,底层用 Unicode 的 UAX #29 文本分段规则,浏览器原生实现,不需要下载词库。代价是它的断词粒度偏保守,专有名词常常被切成两段(示例里「搜索引擎」被切成「搜索」与「引擎」两个词),这也是本页平均词长在 1.5 到 1.9 之间而不是 2.0 以上的一部分原因。想要更贴合行业词典的分词需要引入词典文件,会突破本页 8 KB 的内联脚本预算,所以没有采用。
长句阈值改成 40,为什么可读性分没变?
因为可读性分只用两个量:全部句子的平均句长和平均词长。阈值只决定哪些句子在明细表里被标成「长句」、以及「长句占比」这个百分比。这个设计是刻意的:如果阈值能影响总分,那调参数就能刷分,分数就失去跨文章可比性了。阈值的作用是帮你定位要改哪几句。
英文部分也按中文口径算吗?
不是。英文比例占优的文本会走 Flesch 原式:句数按 .!? 切,词数按空格切,音节数用「连续元音字母组」的启发式估算。这个启发式在 science、quiet 这类词上会多算一个音节,在 table 这类「辅音 + le」结尾的词上偶尔算对,整体误差在 ±10% 量级,够用但不精确。页面上两类分数并列显示,不会混成一个数。
为什么示例文章 344 个汉字却要 1.15 分钟?
因为换算用的速度是每分钟 300 个汉字,344 ÷ 300 = 1.1467 分钟,约 1 分 9 秒。这个数字只描述「把汉字逐个读过去」的时间,不含理解与回看。真实阅读技术性内容时,回看和停顿会让实际用时明显更长,所以它只适合用作量级参考。
标点、数字、英文单词怎么算?
句长的分子只数汉字,标点与数字都不计数;句数的分母按句末终止符(。!?;…!?)与换行来切;词数交给 Intl.Segmenter,它会把连续的拉丁字母和数字串整体算作一个词。所以「2026 年」在句长里是 1 个汉字,在词数里也是 1 个词,两种口径是一致的:都不把数字拆成单个字符。
分数能直接拿来判断文章能不能发布吗?
不能单独用来判断。它能量化的是句长与词长这两个维度,而发布与否还取决于事实是否准确、结论是否有依据、是否满足目标读者的搜索意图。合理的用法是把它当体检里的某一项指标:偏高时看逐句明细,改掉最长的两三个句子,再测一次确认变化,而不是为了刷到一个好看的分数去把文章改得支离破碎。
相关工具
- 阅读时长计算器:只把字数换算成时长,本页额外给出句长词长与难度档位。
- 句子统计:统计句数与句长清单的分支工具,不做可读性公式换算。
- 字数统计工具:给出汉字、英文单词、数字片段等多口径计数,是这一页的上游数据。
- 段落统计:按空行切段落,适合先看结构再看句长。
- Meta标签描述长度检测:检查摘要长度是否会被搜索结果截断,属于页面元信息维度。