📑 Markdown 目录生成器
粘贴 Markdown 即可从 h1-h6 标题自动生成嵌套目录。支持 GitHub / GitLab slug、Markdown / HTML / 纯文本输出、深度限制和有序列表。
完全免费
无需注册
浏览器内完成
5 种语言
深色模式
🔒 关于隐私
- ・仅在浏览器中解析
- ・输入文本绝不会发送到任何服务器
- ・无需注册、登录或付款
⚙ 选项
预览 (HTML 渲染)
📖 常见的坑
读取 Markdown 中的标题并生成目录,可选择输出格式(纯文本 / slug / 自定义)、纳入的标题层级、是否使用有序列表,以及是否排除 h1。处理全部在浏览器内完成。锚点链接的生成规则因粘贴的目标平台而异——无法保证这里生成的链接在目标处照样能用,非拉丁文字的标题在各环境中的处理差异尤其大。
| 情形 | 会发生什么 | 怎么处理 |
|---|---|---|
| 点了目录里的链接,却跳不过去 | 把标题转成 id 的规则(生成 slug)因平台而异:删除哪些符号、连续空格如何处理、表情符号怎么办,尤其是非拉丁文字如何处理,差异最大。GitHub 会把中日文原样保留在 id 中,并在链接里做百分号编码;而有些环境则把这些字符全部丢弃,退回到 section-1 这样的编号。更进一步,同一份 Markdown 在 GitHub、GitLab、Qiita、Zenn、VitePress、Docusaurus 上会生成各不相同的 id——也就是说,不先确定「贴到哪里」,就做不出正确的链接。 |
请到目标平台上真的点一下来确认——这是唯一可靠的验证方式。在 GitHub 上,把鼠标移到标题上,左侧会出现一个链条图标,从那里复制到的链接就是正确答案。确认一个就能摸清规则,其余照同样的转换处理即可。发布之后,请把目录里的每一条至少点一遍——尤其在长文中,带死链的目录比没有目录更糟(把读者引向一个毫无反应的链接,体验比不给目录还差)。若同一篇文章要发到多个平台,放弃锚点链接、改用纯文本列表也是相当务实的选择。 |
| 有重名标题时,链接全都跳到第一个 | 「小结」「注意事项」这类标题,在一篇文章里会反复出现。多数平台通过给第二个及之后的 id 追加 -1、-2 之类的序号来避免冲突,但生成目录的一方若不知道这条规则,就会为它们生成同一个链接——结果是三个「小结」无论点哪一个,都跳到第一个。序号的规则也不统一:有的实现从 -1 开始,有的从 -2 开始。从读者的角度看,麻烦之处在于链接确实能用,却跳错了地方,因此很难察觉它坏了。 |
请让标题唯一。把「小结」写成「认证部分的小结」「性能方面的小结」,不仅链接问题消失了,扫一眼目录就能知道内容。换言之,这不是技术上的绕行方案,而是写作本身的改进——当目录里同一个词出现三次时,它对读者的价值就已经打折了。若确实必须重复同一标题,请手工嵌入 HTML 的 <a id="...">,自己管理 id——凡是允许在 Markdown 中书写原始 HTML 的平台都能生效(但 Slack 这类不解析 HTML 的环境无效)。 |
| 目录太长,反而更难读 | 把 h4、h5 也纳进去,光目录就能占满一屏。当读者最先看到的是三十行的项目符号列表,许多人还没读到正文就走了。目录的目的是让人一眼把握全貌,因此一眼把握不了的目录,就没有履行它的职责。更进一步,目录的长度反映的是标题结构本身的问题:超过二十条,要么是一篇文章里塞得太多,要么是把标题当成段落在用。 | 目录只收录到 h2 与 h3——本工具的「最小 / 最大层级」正是用来做这件事。h1 是文章标题,请启用「排除 h1」(一份文档里出现两个 h1,本身就不是正确的 HTML 结构)。如果这样还超过二十条,就该考虑拆分文章了——目录过长是症状,诊断结论是这篇文章的覆盖范围已经超出它所能承载的。以「读者看着目录,能否在五秒内判断出自己需要哪一节」为标准,合适的粒度很快就能定下来。 |
请先确认「是否真的需要把目录嵌进正文」。自 2021 年起,GitHub 可通过 README 右上角的按钮自动显示标题大纲;Zenn、Qiita 以及多数静态站点生成器(VitePress、Docusaurus、Astro)也会从标题自动生成目录,并随滚动同步显示在正文旁。也就是说,只有在环境不提供目录时,才需要手写。也请理解嵌入目录的代价:每改动一个标题,就要手工修一次目录,而你终究会忘。过期的目录比没有更糟,因为它会把读者引向已不存在的章节。对于会持续更新的文档,要么在 CI 中重新生成目录,要么干脆决定不放目录——用 markdown-toc 之类的工具挂在 pre-commit 钩子上,手工步骤就彻底消失了。「写一次之后就放着不管的目录」是最糟的选择。
📖 使用方法
-
1
粘贴 Markdown将完整 Markdown 粘贴到左侧文本框。
-
2
调整选项选择格式、slug、级别和编号。
-
3
复制或下载复制或下载为 .md / .html / .txt。
❓ 常见问题
锚点与 GitHub 一致吗?
是的。完全模拟 GitHub slugger.js 规则。
Markdown 会发送到服务器吗?
不会。全部在浏览器中处理。
代码块内的 # 会被忽略吗?
是的。fenced 代码块会被排除。
🔗 相关工具
- ・Markdown 预览
- ・命名风格转换
- ・转义
🐛 此工具出现问题了吗?
免费、无需注册。仅提供复现步骤也有帮助。报告将直接发送给运营者并用于改进。
✅
感谢您的反馈!
已送达运营者,将用于改进工具。