Markdown 复选框生成器

填写条目文字,设置勾选状态、数量与缩进层级,即可复制在 GitHub 上正确渲染的任务列表。全部计算都在你的浏览器本地完成。

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

Markdown 中怎么写复选框?

在列表项前加短横线,再写一对方括号即可:`- [ ] 任务` 渲染为未勾选的复选框,`- [x] 任务` 渲染为已勾选。空方括号中间那个空格不能省略。这套任务列表语法来自 GitHub Flavored Markdown,GitHub、GitLab、Obsidian、Notion 都支持,原始 Markdown 规范则没有。

markdown
- [ ] 未完成的任务
- [x] 已完成的任务

渲染为一个带复选框的列表:第一项为空框,第二项已打勾。在 GitHub 和 GitLab 中这些方框可以直接点击,点击后会自动改写底层的 Markdown 源码。

在线使用 Markdown 复选框生成器

复选框设置

首项状态
缩进层级

输出结果

Markdown 复选框语法详解

复选框并不是一个独立元素,而是「带状态标记的列表项」。列表符号、方括号、空格三者写对,复选框才会出现;任何一处出错,页面上就只会看到原样的方括号。

基础的已勾选与未勾选

任意无序列表符号都可以用:短横线、星号或加号。方括号里放一个空格表示未勾选,放小写 x 表示已勾选;GitHub Flavored Markdown 同样接受大写 X。

markdown
- [ ] 编写数据迁移脚本
- [x] 评审表结构变更
* [ ] 星号同样可以作为列表符号
+ [x] 加号也可以

生成同一个列表中的四个复选框条目:第一、三项未勾选,第二、四项已勾选。

嵌套子任务

子项相对父项缩进两个空格即可形成嵌套。GitHub 是按父项正文所在的列来计算层级的,因此缩进必须保持一致——制表符和空格混用是嵌套「悄悄失效」最常见的原因。

markdown
- [ ] 发布 v2 版本
  - [x] 冻结 API 接口
  - [ ] 更新更新日志
    - [ ] 补充升级迁移说明
- [x] 切出发布分支

形成两级层级:父任务顶格,子任务缩进一级,迁移说明缩进两级。

在任务条目中使用其他格式

方括号之后的正文就是普通 Markdown,加粗、链接、行内代码、删除线都可以使用。给已完成的条目加删除线是常见约定,可以让已完成的工作在视觉上退到背景中。

markdown
- [x] ~~迁移历史 `users` 表~~
- [ ] **阻塞:**等待 [工单 #482](https://example.com/482)
- [ ] 把 `getUserByID` 改名为 `getUserById`

第一项已勾选且文字带删除线;第二项包含粗体标签和可点击链接;第三项包含两段行内代码。

会让复选框失效的写法

几乎所有「复选框不显示」的问题都来自下面三种写法。它们都会原样输出方括号,而不会生成复选框。

markdown
- [] 方括号中间漏了空格
- [x]右方括号后面没有空格
[ ] 行首缺少列表符号

这三行都不会生成复选框,全部按纯文本原样显示,方括号照常可见。

不支持任务列表时的 HTML 兜底

如果渲染器不支持 GitHub Flavored Markdown 的任务列表,但允许写原始 HTML,可以直接用 input 元素。记得加上 disabled,避免读者点击一个根本不会被保存的状态。

markdown
<ul>
  <li><input type="checkbox" disabled> 未完成的任务</li>
  <li><input type="checkbox" checked disabled> 已完成的任务</li>
</ul>

视觉效果与任务列表一致,但由浏览器而非 Markdown 解析器渲染,方框为置灰的不可交互状态。

有序列表中的复选框

方括号标记同样可以挂在编号列表项上。当步骤必须按顺序执行、而不是随意挑选完成时,这种写法更合适。

markdown
1. [x] 安装命令行工具
2. [x] 完成登录认证
3. [ ] 执行首次部署

生成一个带编号的列表,每一步都带复选框,前两步已勾选。GitHub 和 GitLab 都支持这种写法。

各平台对 Markdown 复选框的支持

任务列表属于 GitHub Flavored Markdown 的扩展语法,不在原始 Markdown 规范之内,因此兼容性远不如加粗、标题那样普及。即使能渲染出方框,能否点击各平台也不一样。

平台支持情况说明
GitHub完全支持Issue、PR、评论和 Wiki 中可直接点击,点击会改写源码;README 中只渲染不可点击。
GitLab完全支持Issue、合并请求和 Wiki 中可点击,并会在列表上显示完成进度。
Obsidian完全支持阅读模式和实时预览下均可点击;部分主题还支持 [/] 等自定义状态。
Notion部分支持粘贴 - [ ] 会被转换成原生待办块,而不是保留 Markdown 语法。
VS Code 预览部分支持方框能正常渲染但不可点击,需要装扩展才能在编辑器里切换状态。
Discord / Slack不支持两者都没有任务列表语法,建议改用带 ☐ 和 ☑ 符号的普通列表。
Reddit不支持Markdown 编辑器会把 - [ ] 当作纯文本,方括号原样显示。

如何生成 Markdown 复选框列表

  1. 输入任务文字

    填写任务的描述文字。生成器会自动为每一条编号,方便你拿到骨架后直接修改,而不是得到若干行完全相同的内容。

  2. 设置首项状态

    选择未勾选或已勾选,直观对比 [ ] 与 [x] 两种标记在输出中的差异。

  3. 选择条目数量与缩进层级

    设定要生成多少条;如果这份列表需要挂在已有父任务下面,再选择相应的缩进层级。

  4. 复制结果

    复制生成的 Markdown;若目标平台不支持 GitHub Flavored Markdown 任务列表,可切换到 HTML 标签页。

  5. 核对预览

    粘贴到 Issue 或 README 之前,先在预览标签页确认方框能正常渲染、嵌套层级也落在预期位置。

常见问题

Markdown 里怎么创建复选框?

写一个正文以方括号开头的列表项即可:- [ ] 表示未勾选,- [x] 表示已勾选。短横线、它后面的空格、成对的方括号、右方括号后面的空格,四样缺一不可。星号和加号同样可以作为列表符号。

为什么我的 Markdown 复选框不显示?

常见原因有四个:写成了 - [],方括号中间漏了空格;右方括号后面没有留空格;行首漏掉了列表符号;或者该平台根本不支持 GitHub Flavored Markdown 任务列表,此时方括号必然原样显示。

怎样创建嵌套或缩进的复选框?

把子项相对父项缩进两个空格,再照常写复选框语法即可,每多一层就再加两个空格。缩进必须保持一致,不要混用制表符和空格,否则子项会被解析成同级条目而不是子任务。

哪些平台支持 Markdown 复选框?

GitHub、GitLab、Obsidian、Typora、Notion、Joplin、Bitbucket,以及大多数使用 GitHub Flavored Markdown 解析器的静态站点生成器都支持。Discord、Slack、Reddit 和严格遵循 CommonMark 的解析器不支持,会把方括号当作纯文本显示。

复选框里可以用大写 X 吗?

可以。GitHub Flavored Markdown 对 - [X] 和 - [x] 一视同仁,都渲染成已勾选。不过小写是更通行的约定,大多数编辑器和格式化工具也会统一成小写,为了仓库内风格一致建议用小写。

怎样让 Markdown 复选框可以点击?

能否点击取决于平台,而不是语法。在 GitHub 和 GitLab 的 Issue、Pull Request、合并请求和 Wiki 页面中,任务列表可以直接点击,点击后会改写保存的 Markdown 源码;同样的语法放在 README 或静态站点里则只能只读渲染。

平台不支持复选框时有什么替代方案?

两种办法基本够用:在普通列表中改用 Unicode 方框字符,例如 ☐ 表示待办、☑ 表示完成;或者在允许写原始 HTML 的场景下,用 type 为 checkbox 的 input 元素并加上 disabled 属性,只渲染外观、不提供交互。

任务条目里可以写粗体、链接或代码吗?

可以。右方括号之后的内容会按普通行内 Markdown 解析,加粗、斜体、行内代码、链接、图片、删除线都能正常工作。给已完成的条目加删除线是常见做法,可以让完成的工作在视觉上淡出。

Markdown 复选框和任务列表是一回事吗?

是同一个功能的不同粒度说法。复选框指的是 - [ ] 或 - [x] 这样的单个列表项,任务列表指的是包含这些条目的整个列表。规范里的正式名称是任务列表,而大多数人搜索时用的是复选框。

Discord 或 Slack 里能用 Markdown 复选框吗?

不能。这两个平台都没有实现 GitHub Flavored Markdown 的任务列表,- [ ] 会原样显示成带方括号的纯文本。在聊天场景中建议改用带 ☐ 和 ☑ 符号的列表,或者直接用 emoji 表达待办与完成两种状态。