Markdown 表格生成器
创建并自定义带有实时预览的 Markdown 表格
表格编辑器
实时预览
表格预览将显示在此处...
Markdown 表格是把行列数据放进 README、Pull Request 描述或文档页的标准方式。麻烦在于语法毫不宽容:每一行都必须与表头匹配,一个多余的管道符就可能悄悄破坏整块内容。这个生成器提供一个电子表格式的网格供你输入,并边写边输出正确的管道语法。
管道表格的三个组成部分
每张管道表格都是三个堆叠的块:
- 表头行,例如
| Method | Safe | Idempotent | - 分隔行,必需且必须是第二行:
|:---|:---:|---:| - 零个或多个数据行:
| GET | Yes | Yes |
分隔行是告诉解析器「这是一张表」而不是一段文字的关键。该行的每个单元格控制其所在列的对齐:
| 标记 | 对齐 | 典型用途 |
|---|---|---|
:--- | 左 | 文本、名称、标签 |
:---: | 居中 | 简短状态值、布尔值 |
---: | 右 | 数字、货币、计数 |
有些渲染器接受不带冒号的裸 --- 并视为左对齐。生成器从不依赖这一点:左对齐总是显式写成 :---。
如何使用网格
- 设定尺寸。 输入行数(1–20)和列数(1–10),然后点击更新网格。增大尺寸会保留已输入内容;缩小则丢弃超出新尺寸的行和列。
- 在单元格中输入。 网格打开时带一张小示例表(Name、Age、City),可直接覆盖。
- 逐列选择对齐。 每列表头上方的下拉框只设置该列的左、中、右对齐,因此一张表可以混用三种。
- 复制结果。 Markdown 源码随输入实时更新,下方带有渲染预览。单元格内的管道符会自动转义为
\|。
实操示例:一张 HTTP 方法表
假设你要三列——Method、Safe、Idempotent——第一列左对齐、第二列居中、第三列右对齐。这样填写网格:
| Method | Safe | Idempotent |
|---|---|---|
| GET | Yes | Yes |
| POST | No | No |
| PUT | No | Yes |
| DELETE | No | Yes |
生成的源码是:
| Method | Safe | Idempotent |
|:---|:---:|---:|
| GET | Yes | Yes |
| POST | No | No |
| PUT | No | Yes |
| DELETE | No | Yes |
有两个细节值得注意。分隔行在管道符两侧不写空格(|:---|:---:|---:|),而表头和数据行使用空格(| GET | Yes | Yes |);两者都合法,解析器处理方式相同。另外,因为你往网格里填的是真实值,列数在每一行都保证一致。
会破坏渲染的常见错误
- 某行的单元格数量不对。 多数解析器会直接丢弃整张表,而不会猜哪一列缺失。
- 漏掉分隔行,或在表头与分隔行之间留空行。整块会退化成普通文本。
- 在单元格里使用未转义的
|,例如表示「或」。它会制造出一个多余的列并使其后所有内容错位。 - 在单元格内换行。 管道表格一行一物理行;换行会提前结束该行。
- 以为其他 Markdown 字符会被中和。 本工具只转义管道符。以
-、#或>开头的单元格可能被渲染器当作格式,想要字面文本时请避免这些开头。
Markdown 表格做不到的事
管道表格没有合并单元格、多行单元格、题注和脚注,也无法嵌套列表或围栏代码块。列宽由渲染器决定,不存储在源码里,所以用空格填充单元格对最终布局没有影响。若需要上述任何功能,请改用 HTML <table>。
为什么手工编辑表格容易出错
表格一旦离开网格,手工编辑就是错误潜入的地方。设想给一张三列表格加一行:
| Method | Safe | Idempotent |
|:---|:---:|---:|
| GET | Yes | Yes |
| POST | No | No |
添加 | PATCH | No | No | 很容易,但只有两个单元格的行——| PATCH | No |——在多数渲染器里会悄悄丢表。把未转义的管道符当作文本用时也一样:| GET | yes\|no | Yes | 仅因那个反斜杠才得以保留。
第二个陷阱是分隔行。人们常复制表头行再把文字换成短横线,结果产生带多余空格或列数不对的行。宽松的解析器可能仍能渲染,严格的解析器则会失败。拿不准时,把源码粘回网格、调整后再复制,而不是手工编辑管道符。
输出能在哪里渲染
把结果粘贴到 GitHub 的 README、Issue、Pull Request 和 wiki;GitLab 与 Bitbucket;Stack Overflow 与 Reddit;Discord 与 Slack;Notion 与 Obsidian;Jupyter Notebook;以及 Hugo、Jekyll、Astro 等静态站点生成器。这些平台都会读取对齐标记并忽略填充空格,因此同一份源码在所有支持该扩展的地方都能干净渲染。所有处理都在浏览器本地完成——你的表格文本绝不会发送到服务器。
相关工具
常见问题
分隔行为什么用冒号,每个冒号是什么意思?
分隔行是必需的,且永远是表格第二行。左侧冒号(`:---`)表示左对齐,两侧冒号(`:---:`)表示居中,右侧冒号(`---:`)表示右对齐。生成器根据每列上方的对齐下拉框写入一个标记,因此同一张表可以混用三种对齐。
我的表格在一个网站上显示为纯文本,在另一个网站却能渲染,为什么?
管道表格并不属于 2004 年的原始 Markdown 规范,它来自 GitHub Flavored Markdown,被采用的程度参差不齐。GitHub、GitLab、Stack Overflow、Notion、Obsidian 以及常见静态站点生成器都支持;未加入该扩展的普通 Markdown 渲染器和一些较旧的 wiki 会把管道符原样显示。这不是语法能修的,目标平台必须支持该扩展。
单元格里怎么放一个真正的管道符?
用反斜杠转义,如 `a \| b`。生成器会自动处理:单元格里输入的任何 `|` 都会写成 `\|`,渲染器便把它当作文本而不是列分隔符。反斜杠本身不会被转义,如果你的内容已含转义序列,这点需要注意。
单元格里能有换行、项目符号列表或代码块吗?
不能。管道表格严格地一行对应一物理行。单元格内的换行会提前结束该行,列表或围栏代码块这类块级 Markdown 也无法嵌套进单元格。需要多行内容时,请改用 HTML `<table>`。
每行行首行尾的外层管道符必须写吗?
多数解析器视其为可选,但生成器总是写出。保留首尾管道符让源码更易读、减少复制粘贴错误,而且每个理解管道表格的渲染器都支持完整分隔的形式。
列对齐除了文字位置还改变别的吗?
不改变。对齐只影响渲染器在列内摆放文字的方式,不改变列宽、换行或排序。由于源码不存储固定宽度,渲染器仍可能按内容决定列宽,所以右对齐列并不保证在所有查看器里数字都整齐堆叠。
由 HandyTools Hub 团队审校 · 最后更新