Markdown 字数统计工具

粘贴或导入 Markdown 文件,即可得到真实的正文字数——代码块、行内代码和链接地址都会先被剔除再统计。

免费 · 无需注册 · 全程在浏览器内运行最后更新

Markdown 文件怎么统计字数?

要用能识别 Markdown 语法的统计工具,而不是把文件当纯文本数。准确的统计会先移除围栏代码块、行内代码、图片语法和链接地址,只保留正文再计数;随后把词数除以每分钟 225 词,得到阅读时间估算。

markdown
pandoc -t plain README.md | wc -w

pandoc 先把 Markdown 转成纯文本,再由 wc 统计词数,结果比直接对 .md 源文件执行 wc -w 准确得多。

在线使用 Markdown 字数统计工具

统计结果

50
词数
14 sec read
阅读时间
411
字符数
36
行数
12
段落数

Markdown 输入

预览

Markdown 字数统计与阅读时间估算

欢迎使用 MDUtil 的 Markdown 字数统计工具,它可以帮你:

  • 统计 Markdown 正文的总词数
  • 估算这篇内容的阅读时间
  • 同时给出字符数、行数和段落数
  • 统计过程自动忽略代码块与语法符号

工作原理

工具会先解析你的 Markdown 内容,剥离各类语法标记,只保留真正可读的文字再进行统计。阅读时间按每分钟 225 词的平均速度估算。

示例内容

这是一段用于演示的示例文字,你可以直接替换成自己的 Markdown 内容,实时查看准确的统计结果。

代码示例(不计入统计)

// 这段代码不会被计入字数
function helloWorld() {
  console.log("Hello, world!");
}

写作建议

  • 博客长文建议控制在 2,500 到 4,000 字
  • 五分钟阅读量(约 2,000 字)最适合线上阅读
  • 拆分过长的段落,可读性会明显提升
  • 用标题组织内容结构

好文章是改出来的。

Markdown 字数统计该算什么、不该算什么

用通用字数统计器去数 .md 文件,结果一定偏高:围栏行、井号、竖线和 URL 都会被当成词。下面这些场景,正是「原始字符数」和「可用字数」之间的差别所在。

围栏代码块与行内代码

代码不是正文。三个反引号之间的内容会整段移除,单个反引号包裹的内容同样如此。这是技术写作中字数虚高最主要的来源。

markdown
使用 `npm i -g mdutil` 安装命令行工具,然后执行:

```bash
mdutil count README.md --json
```

只统计说明性的那句话,反引号里的命令和整个围栏代码块都不计入。

链接、图片与裸 URL

链接只贡献可见文字,绝不计入目标地址。否则一条带 UTM 参数的长链接就能凭空多出十几个词,而图片本身并没有任何可读内容。

markdown
详见[迁移指南](https://example.com/docs/v2/migration?utm_source=blog)。

只统计「详见」和「迁移指南」,URL 及其查询参数全部丢弃。

标题、列表与引用符号

结构符号属于标记而非词汇。标题的井号、列表的短横线、表格的竖线和引用的尖括号都不计入总数,但它们后面的文字照常统计。

markdown
## 发布说明

- 启动更快
- 内存占用更低

> 本周五上线。

只统计「发布说明」「启动更快」「内存占用更低」「本周五上线」这些文字,##、- 和 > 被忽略。

内嵌的原始 HTML

Markdown 允许直接写 HTML。统计时会去掉标签、保留标签内的文字,因此徽章表格或折叠块不会把数字撑大。

markdown
<details>
<summary>高级选项</summary>

这些参数仍处于实验阶段。

</details>

只统计「高级选项」和「这些参数仍处于实验阶段」,标签本身不贡献任何字数。

YAML front matter 仍会被计入

这是最值得记住的一个坑。front matter 在你眼里是元数据,在统计器眼里只是文件开头的普通文本。想得到纯正文字数,先把它删掉再统计。

markdown
---
title: 用更少的会议交付更快
date: 2026-07-24
tags: [流程, 远程]
---

正文从这一段开始。

元数据部分会在正文字数之外额外多出十来个词,统计文章真实长度前建议先移除。

中文内容看字符数,不看词数

词数是按空白字符切分得出的,而中文、日文不使用空格分词,一整句往往只算作一个「词」。中文写作请以字符数为准——国内的稿件字数要求本来也是按字符计的。

markdown
阅读时间(分钟)= 词数 ÷ 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 字数

  1. 放入 Markdown 内容

    在编辑器中输入或粘贴内容,也可以点击导入按钮加载本地的 .md、.markdown 或 .txt 文件。

  2. 查看统计条

    工具顶部会实时显示词数、阅读时间、字符数、行数和段落数,每敲一个键都会更新。

  3. 对照预览确认

    把右侧预览与编辑器对照,确认那些你以为会被排除的内容(尤其是代码块)确实写成了代码块。

  4. 导出统计结果

    点击「导出统计」可下载包含全部指标和时间戳的 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 之后的内容。字符数包含空格和标点,对中文等非英语内容来说是更可靠的指标。