HTML 表格 转 Markdown
想在 GitHub README、Issue、语雀、飞书文档或 Notion 里用上 HTML 的 <table>,最直接的做法是把 HTML 粘贴进 FormatArc 的 HTML to Markdown 转换工具,点运行,复制结果。所有处理都在浏览器内完成,数据不会发送到任何服务器。
如果你搜过「html 表格 转 markdown」或「html 表格 转 markdown python」,结果大多是 Python 脚本或命令行工具,需要先装运行环境。如果只是想把眼前的表格贴进文档,不用安装的浏览器工具更快。
步骤很简单:
- 打开 HTML to Markdown 转换工具
- 粘贴 HTML(
<table>元素整体,或包含它的页面片段) - 点运行,复制输出里的 GitHub Flavored Markdown(GFM)表格
下面说明这次转换具体做了什么、怎样保证表格不坏掉,以及它的边界在哪里。


html table 转 markdown 的转换示例
先看一个简单的 HTML 表格:
<table>
<tr><th>姓名</th><th>角色</th><th>团队</th></tr>
<tr><td>小林</td><td>工程师</td><td>基础设施</td></tr>
<tr><td>小陈</td><td>设计师</td><td>Web</td></tr>
</table>
把它粘贴进转换工具,就得到 GitHub Flavored Markdown(GFM)表格:
| 姓名 | 角色 | 团队 |
| --- | --- | --- |
| 小林 | 工程师 | 基础设施 |
| 小陈 | 设计师 | Web |
第一个 <tr> 成为表头行,分隔线(---)自动生成。输出是左对齐的 GFM 表格,在 GitHub、GitLab、语雀、飞书、Notion、CSDN 和大多数支持 Markdown 的环境里都能直接渲染。
容易出问题的表格:三种情况自动处理
HTML 转 Markdown 表格时,难的从来不是干净的结构,而是单元格内容或行与行之间的列数差异悄悄把表格弄坏的情况。最常见的三种模式会被自动处理,保证行不塌掉。
单元格包含管道符(|)时
Markdown 里 | 是列分隔符。单元格内直接出现 | 时,行会在意料之外的位置被拆开,表格就坏了。转换工具会自动转义它。
<td>a | b</td>
转换后的输出是 a \| b,列数不会错。
单元格包含换行时
单元格内容里出现换行时,会被当成新的一行,整张表格的布局随之崩坏。单元格内的换行会被替换成一个空格,让每行数据保持在一行内。
每行列数不同时
即使混有比表头多一格或少一格的行,转换工具也会把所有数据行对齐到表头的列数。多出的单元格被截掉,缺的用空单元格补齐,得到列位不乱的合法表格。
从网页或电子表格复制表格
HTML 源码不在手边、只看到网页上渲染出来的表格,这种场景也很常见。把它变成 Markdown 有两条可靠的路径。
复制 HTML 元素时
在浏览器里右键表格,选择「检查」。在 DevTools 的 <table> 元素上右键,选择「复制」-「复制元素」。把复制到的 HTML 粘贴进 HTML to Markdown 转换工具即可转换。
excel 转 markdown table:直接复制单元格时
拖动选择屏幕上的单元格区域复制,或者从 Excel、WPS 表格、Google 表格里复制,剪贴板里通常不是 HTML,而是制表符分隔的文本(TSV)。这类数据适合用能读取制表符分隔和逗号分隔文本的 CSV to Markdown 转换工具。
想把 excel 转 markdown table,不需要先把文件另存为 CSV:选中单元格区域复制,粘贴进 CSV to Markdown 转换工具,就能得到 Markdown 表格。更多操作细节见 Excel 转 Markdown 表格。
归纳一下:带真实 HTML 标签的代码贴给 HTML to Markdown,从屏幕或电子表格复制来的单元格数据贴给 CSV to Markdown。
转换结果不对时:markdown table 语法不支持的结构
转换工具面向常见的 HTML 表格结构。有一部分 HTML 结构,Markdown 表格规范本身就不支持,无法原样转换:
- 没有表头行 — 第一个
<tr>一律被当作表头行。纯数据表格没有表头时,第一行数据会上移成表头,必要时在转换结果顶部手动补一行表头。 - 合并单元格(
rowspan/colspan)— Markdown 表格语法没有合并单元格的规定(参见 GFM 规范的 Tables (extension)在新标签页中打开)。合并单元格不会被自动拆开,复杂合并的表格需要先解除合并、把结构拉平再转换。 - 嵌套表格 — 单元格内部再套一个
<table>的结构,会在行扫描过程中混在一起,无法正常转换。内层表格需要单独拆出来转换。 - 单元格内的链接和文字格式 — 单元格内容按纯文本处理,标签和链接会被扁平成文本。需要格式时,在转换后的表格里补上 Markdown 链接语法。
- 列对齐 — 默认输出是左对齐。需要居中(
:---:)或右对齐(---:)时,在转换后修改分隔行里冒号的位置。
合并单元格不只是「拆不开」,位置不同还可能让值直接消失。colspan 出现在表头行时,Markdown 表格的列数由表头行的单元格数决定,整列都可能不翼而飞(实测复现方法见 scripts/benchmarks/html-table-merged-cells/)。
转换前:
<table>
<tr><th colspan="2">Name</th><th>Price</th></tr>
<tr><td>Widget</td><td>Blue</td><td>$3</td></tr>
</table>
转换后(实测):
| Name | Price |
| --- | --- |
| Widget | Blue |
$3 没有出现在输出里。表头行被数成 Name 和 Price 两个单元格,表格变成 2 列,正文行的第 3 格被截掉。
反过来,rowspan 不会丢值,但会挤错列。
转换前:
<table>
<tr><th>Region</th><th>City</th><th>Pop</th></tr>
<tr><td rowspan="2">APAC</td><td>Tokyo</td><td>14M</td></tr>
<tr><td>Seoul</td><td>9M</td></tr>
</table>
转换后(实测):
| Region | City | Pop |
| --- | --- | --- |
| APAC | Tokyo | 14M |
| Seoul | 9M | |
第 2 行的 Seoul 落进了 Region 列,Pop 列空了。rowspan 省略掉的单元格不会被回填。带合并单元格的表格,转换前先解除合并(把值写回每个单元格)再粘贴更稳妥。
如果转换出来的表格在屏幕上看着是坏的,多数情况是合并单元格(rowspan/colspan)或嵌套表格导致的。想转换的不只是表格,还有整个 HTML 文档(标题、列表、链接等)时,把整段 HTML 直接粘贴进 HTML to Markdown 转换工具即可。更多转换细节见 HTML 转 Markdown 指南。
浏览器内完成,不上传到服务器
所有转换都在浏览器内用 JavaScript 执行。粘贴进去的 HTML 代码不会被发送到外部服务器、不会被记入日志、不会被保存。
表格里含有内部客户数据、价目表、非公开面板的统计数字这类敏感信息时,数据安全就很重要。很多在线转换工具是把输入上传到服务器再处理,FormatArc 只在你的设备上计算。为什么这很重要,见 在线工具安全检测。
常见问题
HTML 表格 转 markdown 表格怎么做?
把带 <table> 的 HTML 代码粘贴进 FormatArc 的 HTML to Markdown 转换工具,点运行。第一行会变成表头,直接复制 GitHub Flavored Markdown 表格即可。
为什么转换出来的 markdown table 是坏的?
最常见的原因是 Markdown 表格规范不支持的合并单元格(rowspan / colspan)和嵌套表格。单元格内的管道符和换行会被自动处理,列错位时先找合并或嵌套的单元格,拉平它们。
单元格里的链接和加粗会保留吗?
不会。单元格内容按纯文本转换。需要链接或强调时,在输出的表格里用 Markdown 语法重新标注。
HTML 表格没有表头行怎么办?
第一个 <tr> 会被自动当作表头。表格本身没有表头时,第一行数据会显示在表头位置,在转换结果顶部补一个合适的表头即可。
markdown table 用法:对齐方式怎么改?
默认输出是左对齐。想让某列居中或右对齐时,在转换后改分隔行::---: 是居中对齐,---: 是右对齐。比如 2 列表格的分隔行 | --- | --- |,把第 2 格的 --- 改成 :---:,该列就居中。
总结
- HTML
<table>代码粘贴进 HTML to Markdown 转换工具,得到 GitHub Flavored Markdown(GFM)表格 - 单元格内的管道符(
|)被转义、换行被替换成空格、每行列数自动对齐,表格不会坏 - 合并单元格(
colspan/rowspan)和嵌套表格是 Markdown 表格语法不支持的结构,转换前需要先拉平 - 从网页或电子表格拖选复制出来的单元格文本是制表符分隔的,适合 CSV to Markdown 转换工具
- 所有处理都在浏览器内完成,敏感数据也可以放心转换