HTML 表格转 Markdown

左边粘贴 HTML,右边即时得到符合 GitHub 规范的 Markdown 表格。所有解析都在浏览器本地完成,内容不会上传。

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

HTML 表格怎么转成 Markdown?

把表格的 HTML 粘贴到转换器中,它会把每个 <tr> 改写成用竖线分隔的一行,把第一行提升为表头,并在其下方自动补上 --- 分隔行。单元格文字会保留,标签会被剥离,文本中的竖线会自动转义,从而保证列结构不被破坏。

markdown
<!-- HTML 输入 -->
<table>
  <tr><th>姓名</th><th>年龄</th></tr>
  <tr><td>张三</td><td>25</td></tr>
</table>

<!-- Markdown 输出 -->
| 姓名 | 年龄 |
| --- | --- |
| 张三 | 25 |

表头单元格成为 Markdown 的第一行,短横线那一行定义列,其余每个 <tr> 各自变成一行竖线分隔的数据。

在线使用 HTML 表格转 Markdown

HTML 输入

Markdown 输出

预览

HTML 表格到 Markdown 的映射规则

Markdown 表格比 HTML 表格简单得多:一行一条记录,单元格之间用竖线分隔,再加一行短横线声明列。多数转换是无损的,但少数 HTML 特性在 Markdown 中没有对应写法——下面逐一说明本工具的处理方式。

表头单元格与 thead / tbody

一行 <th> 会成为 Markdown 表头。转换器按文档顺序读取所有行,因此 <thead>、<tbody> 这类包装标签不影响输出结果。

markdown
<table>
  <thead>
    <tr><th>商品</th><th>价格</th></tr>
  </thead>
  <tbody>
    <tr><td>键盘</td><td>¥79</td></tr>
  </tbody>
</table>

输出 | 商品 | 价格 |,随后是 | --- | --- | 分隔行和一行键盘数据。

没有表头的表格

Markdown 表格必须有表头,因此第一个 <tr> 总会被提升为表头,即使它只包含 <td>。如果这一行本身就是数据,请先在 HTML 中补一行 <th> 再转换。

markdown
<table>
  <tr><td>键盘</td><td>¥79</td></tr>
  <tr><td>鼠标</td><td>¥29</td></tr>
</table>

「键盘」和「¥79」会变成列标题,只剩鼠标那一行作为数据。

单元格内的竖线

未转义的竖线会把一个单元格拆成两列。工具会自动给单元格文本中的每个竖线加上反斜杠,因此 shell 命令、正则表达式都能安全通过转换。

markdown
<td>cat access.log | grep 500</td>

结果为 | cat access.log \| grep 500 |,竖线按字面显示,不会新增一列。

colspan 与 rowspan

Markdown 没有合并单元格。跨列的行转换后单元格数量偏少,工具会用空单元格把每一行补齐到最宽的那一行。表格语法依然合法,但合并表头、小计行建议手动复核。

markdown
<table>
  <tr><th>项目</th><th>数量</th><th>合计</th></tr>
  <tr><td colspan="2">小计</td><td>¥108</td></tr>
</table>

第二行输出为 | 小计 | ¥108 | |,共三列,合并效果被摊平成末尾一个空单元格。

单元格里的链接、加粗和图片

单元格按纯文本内容转换,因此内部的 HTML 标签会被抹平。如果链接或强调很重要,转换完成后再手动补上 Markdown 语法。

markdown
<td><a href="https://example.com">文档</a></td>
<td><strong>已售罄</strong></td>

得到 | 文档 | 已售罄 |,超链接和 <strong> 标签都被移除,URL 不会带入 Markdown。

一次转换多个表格

输入中的每个 <table> 都会按文档顺序转换,并用空行隔开,因此可以直接粘贴整页 HTML,而不必一个表一个表地处理。

markdown
<table><tr><th>一季度</th></tr><tr><td>12%</td></tr></table>
<table><tr><th>二季度</th></tr><tr><td>18%</td></tr></table>

输出两个彼此独立的 Markdown 表格,分别对应一季度和二季度,中间以空行分隔。

哪些平台真正支持 Markdown 表格

表格并不属于 CommonMark 核心规范,而是来自 GitHub Flavored Markdown。因此本工具的输出在有些平台上渲染完美,在另一些平台上只会原样显示竖线。

平台支持情况说明
GitHub / GitLab完全支持README、Issue、PR、评论和 Wiki 中都能正常渲染 GFM 表格。
Obsidian完全支持阅读视图和实时预览均可渲染,并支持列对齐语法。
VS Code完全支持内置 Markdown 预览开箱即用地支持 GFM 表格。
Reddit完全支持新版和旧版 Reddit 的 Markdown 编辑器都支持。
Notion部分支持粘贴 Markdown 表格会被转换成 Notion 表格块,而不是保留竖线源码。
Discord不支持Discord 没有表格语法,竖线原样显示;可放进代码块以保持列对齐。
Slack不支持同样不支持表格。建议放入代码块,或以代码片段形式发送。

如何把 HTML 表格转换成 Markdown

  1. 粘贴 HTML

    把表格代码粘贴到左侧的 HTML 编辑器中。可以只贴一个 <table>,也可以贴整页 HTML——工具只会处理其中的表格。

  2. 或导入文件

    点击上传按钮,直接从本地读取 .html、.htm 或 .txt 文件,无需手动粘贴。

  3. 核对结果

    输入变化时 Markdown 会自动重新生成。对照下方的渲染预览,确认列数和内容都对得上。

  4. 复制或下载

    一键复制 Markdown 到剪贴板,或导出为 .md 文件,直接放进仓库使用。

常见问题

HTML 表格怎么转成 Markdown?

把 HTML 粘贴到本页编辑器即可。工具会解析输入中的每个 <table>,将每一行转换成竖线分隔的文本,在表头下方补上短横线分隔行,并转义单元格中的竖线。Markdown 会即时生成,可直接复制或导出为 .md 文件。

可以直接在 Markdown 文件里保留 HTML 表格吗?

在 GitHub 和多数静态站点生成器中,Markdown 文件内嵌的 HTML 确实能渲染。但它在纯文本场景、会过滤 HTML 的编辑器以及 Markdown 转 PDF 的流程中都会失效。原生竖线表格更短、在 Git 中 diff 更干净、源码也更易读,所以通常还是转换更划算。

colspan 和 rowspan 转换后会怎样?

Markdown 表格无法合并单元格,跨行跨列会被摊平。跨列的行单元格数少于其他行,工具会补空单元格让所有行等宽。语法依然合法,但合并表头和小计行建议人工复核后再发布。

Excel 或 Google 表格里的表格能转成 Markdown 吗?

可以。从 Excel、Numbers 或 Google 表格复制一段区域时,剪贴板里其实是一段 HTML 表格,直接粘贴到左侧编辑器即可。表格样式会被丢弃,得到的是以第一行为表头的纯 Markdown 表格。

单元格里的链接和加粗会保留吗?

不会。单元格只按纯文本内容转换,超链接会变成链接文字,<strong> 会变成普通文字。这样输出更可预期,粘到任何地方都安全。如果链接很重要,转换后在对应单元格补回 Markdown 链接语法即可。

为什么我的 Markdown 表格渲染不出来?

常见原因有三个:表头下方缺少那一行短横线分隔行;目标平台根本不支持表格,例如 Discord 和 Slack;或者单元格里有未转义的竖线,悄悄多出了一列。此外在表格前空一行,对严格的解析器也更保险。

源码里的竖线需要对齐吗?

不需要。解析器只关心每行竖线的数量,不关心视觉对齐,因此 | 姓名 | 年龄 | 和 |姓名|年龄| 渲染结果完全一致。对齐只是为了让后续维护源文件的人读起来更舒服。

怎样在表格单元格里换行?

Markdown 表格的一行不能包含真正的换行符,因此跨多行的 HTML 单元格在转换时会被合并成一行、以空格连接。若之后确实需要视觉换行,在单元格中插入 <br> 标签即可,所有兼容 GFM 的渲染器都会识别。

可以一次转换多个表格吗?

可以。粘贴多少 HTML 都行:输入中的每个 <table> 都会按文档顺序转换,生成的多个 Markdown 表格之间用空行分隔。整页文档的表格可以一次性处理完。

我的 HTML 会被上传到服务器吗?

不会。解析和转换全部通过浏览器内置的 DOM 解析器在本地完成,内容不会离开你的设备。因此处理内部报表和未公开文档也很安全,页面加载后即使断网也能继续使用。