Markdown 字数统计工具
粘贴或导入 Markdown 文件,即可得到真实的正文字数——代码块、行内代码和链接地址都会先被剔除再统计。
Markdown 文件怎么统计字数?
要用能识别 Markdown 语法的统计工具,而不是把文件当纯文本数。准确的统计会先移除围栏代码块、行内代码、图片语法和链接地址,只保留正文再计数;随后把词数除以每分钟 225 词,得到阅读时间估算。
pandoc -t plain README.md | wc -wpandoc 先把 Markdown 转成纯文本,再由 wc 统计词数,结果比直接对 .md 源文件执行 wc -w 准确得多。
在线使用 Markdown 字数统计工具
统计结果
Markdown 输入
预览
Markdown 字数统计与阅读时间估算
欢迎使用 MDUtil 的 Markdown 字数统计工具,它可以帮你:
- 统计 Markdown 正文的总词数
- 估算这篇内容的阅读时间
- 同时给出字符数、行数和段落数
- 统计过程自动忽略代码块与语法符号
工作原理
工具会先解析你的 Markdown 内容,剥离各类语法标记,只保留真正可读的文字再进行统计。阅读时间按每分钟 225 词的平均速度估算。
示例内容
这是一段用于演示的示例文字,你可以直接替换成自己的 Markdown 内容,实时查看准确的统计结果。
代码示例(不计入统计)
// 这段代码不会被计入字数
function helloWorld() {
console.log("Hello, world!");
}
写作建议
- 博客长文建议控制在 2,500 到 4,000 字
- 五分钟阅读量(约 2,000 字)最适合线上阅读
- 拆分过长的段落,可读性会明显提升
- 用标题组织内容结构
好文章是改出来的。
Markdown 字数统计该算什么、不该算什么
用通用字数统计器去数 .md 文件,结果一定偏高:围栏行、井号、竖线和 URL 都会被当成词。下面这些场景,正是「原始字符数」和「可用字数」之间的差别所在。
围栏代码块与行内代码
代码不是正文。三个反引号之间的内容会整段移除,单个反引号包裹的内容同样如此。这是技术写作中字数虚高最主要的来源。
使用 `npm i -g mdutil` 安装命令行工具,然后执行:
```bash
mdutil count README.md --json
```只统计说明性的那句话,反引号里的命令和整个围栏代码块都不计入。
链接、图片与裸 URL
链接只贡献可见文字,绝不计入目标地址。否则一条带 UTM 参数的长链接就能凭空多出十几个词,而图片本身并没有任何可读内容。
详见[迁移指南](https://example.com/docs/v2/migration?utm_source=blog)。只统计「详见」和「迁移指南」,URL 及其查询参数全部丢弃。
标题、列表与引用符号
结构符号属于标记而非词汇。标题的井号、列表的短横线、表格的竖线和引用的尖括号都不计入总数,但它们后面的文字照常统计。
## 发布说明
- 启动更快
- 内存占用更低
> 本周五上线。只统计「发布说明」「启动更快」「内存占用更低」「本周五上线」这些文字,##、- 和 > 被忽略。
内嵌的原始 HTML
Markdown 允许直接写 HTML。统计时会去掉标签、保留标签内的文字,因此徽章表格或折叠块不会把数字撑大。
<details>
<summary>高级选项</summary>
这些参数仍处于实验阶段。
</details>只统计「高级选项」和「这些参数仍处于实验阶段」,标签本身不贡献任何字数。
YAML front matter 仍会被计入
这是最值得记住的一个坑。front matter 在你眼里是元数据,在统计器眼里只是文件开头的普通文本。想得到纯正文字数,先把它删掉再统计。
---
title: 用更少的会议交付更快
date: 2026-07-24
tags: [流程, 远程]
---
正文从这一段开始。元数据部分会在正文字数之外额外多出十来个词,统计文章真实长度前建议先移除。
中文内容看字符数,不看词数
词数是按空白字符切分得出的,而中文、日文不使用空格分词,一整句往往只算作一个「词」。中文写作请以字符数为准——国内的稿件字数要求本来也是按字符计的。
阅读时间(分钟)= 词数 ÷ 225英文 1,125 词约为 5 分钟阅读量;中文按每分钟 400–500 字估算更贴近实际。
各类工具统计 Markdown 字数的差异
大多数编辑器统计的是源文件本身,所以同一篇文档在每个应用里显示的长度都不一样。相信某个数字之前,先看清它到底数了什么。
| 平台 | 支持情况 | 说明 |
|---|---|---|
| MDUtil(本页) | 仅正文 | 先剔除代码块、行内代码、链接地址和 HTML 标签,再统计剩下的文字。 |
| VS Code | 源文件 | 状态栏的 Markdown 字数包含围栏行、标题井号和 URL。 |
| Obsidian | 整篇笔记 | 内置字数统计读取整篇笔记,YAML front matter 和代码块都算在内。 |
| GitHub / GitLab | 不提供 | 两者的网页端都不显示 README、Issue 或 PR 描述的字数。 |
| Notion | 渲染后文本 | 统计的是转换后的块内容,粘贴进去的 Markdown 符号不会计入。 |
| Word / 飞书文档 | 源文件 | 直接粘贴 Markdown 会把星号、井号和完整 URL 当成词,数字明显偏高。 |
| Medium / 微信公众号 | 仅阅读时间 | 只根据渲染后的正文给出预计阅读时间,不公布具体字数。 |
如何统计 Markdown 字数
放入 Markdown 内容
在编辑器中输入或粘贴内容,也可以点击导入按钮加载本地的 .md、.markdown 或 .txt 文件。
查看统计条
工具顶部会实时显示词数、阅读时间、字符数、行数和段落数,每敲一个键都会更新。
对照预览确认
把右侧预览与编辑器对照,确认那些你以为会被排除的内容(尤其是代码块)确实写成了代码块。
导出统计结果
点击「导出统计」可下载包含全部指标和时间戳的 JSON 文件,方便长期跟踪文章长度变化。
常见问题
怎么统计一个 Markdown 文件的字数?
把文件粘贴进能解析 Markdown 的统计工具,而不是当作纯文本来数。本页面会在你输入时实时更新结果。命令行下可以用 pandoc -t plain README.md | wc -w,先转成纯文本再统计,结果与之接近。
统计结果里包含 Markdown 语法符号吗?
不包含。标题井号、列表短横线、表格竖线、引用尖括号、加粗星号以及 HTML 标签都会在统计前被移除,只保留读者真正会读到的文字。
代码块里的内容会被算作字数吗?
不会。围栏代码块和行内代码会先被剔除,因此示例代码很多的技术文档也能得到真实的正文长度,而不是被源码撑高的数字。
阅读时间是怎么算出来的?
阅读时间等于词数除以每分钟 225 词,这是成年人阅读速度 200 至 250 词区间的中位值。不足一分钟时会以秒显示。
5 分钟阅读量大概是多少字?
英文约 1,125 词,中文按每分钟 400 至 500 字计算约为 2,000 至 2,500 字。多数内容平台把 1,000 到 1,300 词视为五分钟文章的理想长度。
为什么 VS Code 显示的字数和这里不一样?
VS Code 状态栏统计的是源文件本身,围栏行、标题井号和 URL 都被当成词。在代码示例较多的技术文章里,这个数字与仅统计正文的结果相差可能超过三成。
YAML front matter 会被计入字数吗?
会。对统计器而言 front matter 只是文件开头的普通文本,一般会多出十来个词。只想要正文长度的话,统计前先把它删掉。
中文内容统计准确吗?
词数是按空白字符切分的,对不用空格分词的中文和日文并不可靠。中文内容请看字符数,这也是国内约稿和排版本来就采用的口径。
我的 Markdown 会被上传到服务器吗?
不会。全部计算都在浏览器本地用 JavaScript 完成,内容不会上传、不会存储、也不会记录日志,未发布的草稿和内部文档都可以放心使用。
字符数和词数有什么区别?
两者都基于同一份清洗后的文本,即已经移除代码块和 URL 之后的内容。字符数包含空格和标点,对中文等非英语内容来说是更可靠的指标。