FormatArc HTML 转 Markdown 在线工具的转换结果FormatArc HTML 转 Markdown 在线工具的转换结果
作者: FormatArc 编辑部发布日期: 2026-09-02更新日期: 2026-09-02

HTML 转 Markdown 指南:在线转换工具、表格处理与格式对比

结论先行

把 HTML 代码粘贴到 HTML 转 Markdown 在线工具,点击「运行」按钮,立刻就能得到干净的 Markdown。无需安装任何软件,所有转换都在浏览器内完成,数据不会发送到外部服务器。

输出的 Markdown 以 CommonMark在新标签页中打开 为基础语法,表格、任务列表、删除线、自动链接等扩展功能遵循 GitHub Flavored Markdown 规范在新标签页中打开

什么场景需要把网页内容转为 Markdown

在实际工作中,需要把 HTML 网页转为 Markdown 的情况非常常见。

WordPress 或 CMS 站点迁移

WordPress 等 CMS 导出的文章数据几乎都是 HTML 格式。如果你要把内容迁移到 Hugo、Astro、Jekyll 等静态站点生成器,或者 GitHub Pages、CSDN 等 Markdown 平台,就需要把每篇文章转成 Markdown。文章数量少时手动复制也能应付,但要保留格式和结构、批量转换,使用转换工具更稳妥。不同导出格式的注意点和需要替换的标签,可以参考 WordPress 导出 Markdown 指南

Notion 或飞书导出数据整理

Notion 支持 HTML 格式导出,飞书文档也可以导出为 HTML。但这些工具生成的 HTML 中混入了大量自定义的 class 属性和多层嵌套的 div 标签,直接拿到其他编辑器或工具里很麻烦。转成 Markdown 后,多余的布局标签被去除,只保留纯文本结构,可读性高很多。

网页内容剪藏与笔记

想把网页内容引用到笔记软件(Obsidian、Logseq、Joplin)或技术文档中时,直接复制 HTML 会带入一堆标签和内联样式。转成 Markdown 后,标题、列表、链接、代码块等结构被干净地保留。另外,把内容喂给 LLM 作为 prompt 上下文时,Markdown 比 HTML 消耗的 token 少得多,效率更高。

HTML 邮件正文复用

工作中收到的 HTML 邮件正文,如果要搬到内部 Wiki 或技术文档里,手动删标签很费时间。用转换工具可以保留标题、列表、链接的结构,直接提取出干净的 Markdown 文本。

用 FormatArc 在线转换

HTML 转 Markdown 工具 的操作很简单:粘贴 HTML,点按钮,出结果。

步骤 1:打开工具

访问 HTML 转 Markdown 页面。

步骤 2:粘贴 HTML

在左侧输入框中粘贴要转换的 HTML 代码。支持 <table><ul><ol><a><img><pre><code> 等主流 HTML 标签。

步骤 3:点击运行

点击「运行」按钮,右侧立即输出 Markdown 结果。

FormatArc HTML 转 Markdown 转换结果FormatArc HTML 转 Markdown 转换结果

所有处理都在浏览器本地完成。即使粘贴的是公司内部文档或未公开的草稿,数据也不会上传到外部服务器。

HTML 元素与 Markdown 对照表

大部分常见 HTML 元素都能转成 Markdown,但 Markdown 比 HTML 表达范围小,没有对应写法的属性和样式在转换过程中会被丢弃。

下表整理了 WHATWG HTML Living Standard在新标签页中打开 中的主要元素在 CommonMark在新标签页中打开GFM 规范在新标签页中打开 下如何映射,以及哪些信息会被删除。

HTML 元素GFM Markdown 对应写法转换时的注意事项与丢失信息
标题 <h1><h6>#######(ATX)按标题级别对应 # 的数量。<h1> 对应 #<h6> 对应 ######。CommonMark 和 HTML 一样只定义了 6 个级别。
无序列表 <ul>-*+ 标记嵌套结构通过缩进保留。使用哪个符号取决于转换工具的默认设置。
有序列表 <ol>1.2.、… 标记start 属性(自定义起始编号)和 type 属性(a、i 等)在 Markdown 中没有对应写法,会被删除。
表格 <table>GFM 管道表格(| col |表头行和列对齐(align)可以保留。单元格合并(colspan/rowspan)、单元格内的块级元素、<caption> 标签在管道表格中没有支持。
链接 <a href>[文本](url)href 地址和链接文本保留。targetrel 等属性被删除,title 属性可以保留为可选形式 [文本](url "title")
图片 <img src alt>![alt](src)src 路径和 alt 替代文本保留。widthheightsrcsetloading 等属性在 Markdown 中没有对应写法,被删除。
代码 <pre> / <code>围栏代码块 / 行内代码<pre><code> 转为围栏代码块,单独的 <code> 转为行内代码。class="language-..." 提示可以输出为代码块的语言标识。
引用 <blockquote>> 前缀每行前面加 > 。嵌套引用会叠加 >>cite 属性没有对应写法,被删除。
加粗 <strong> / <b>**文本**语义强调(<strong>)和视觉加粗(<b>)合并为同一种 ** 写法,语义区别不保留。
斜体 <em> / <i>*文本*强调(<em>)和斜体(<i>)合并为同一种 * 写法,语义区别不保留。

上表没有列出的元素(styleclass、布局用的 <div>/<span> 包裹标签、内联事件处理程序等)会被自动移除,只留下干净的结构性 Markdown。不过 GFM 允许内联 HTML,部分转换工具会选择不删除而是把不支持的标签原样保留在 Markdown 中。

CLI 和编程库的选择

除了浏览器工具,在命令行或代码中把 HTML 网页转为 Markdown 也是常见需求。根据你使用的技术栈选择即可。

Pandoc(通用文档转换 CLI)

pandoc -f html -t markdown -o output.md input.html

Pandoc 不仅能处理 HTML,还支持 Word (docx)、EPUB、LaTeX 等多种文档格式互转。使用 -t gfm 选项可以输出 GFM 表格语法。适合批量文件转换或处理复杂文档结构,需要本地安装。

Turndown(JavaScript / Node.js)

import TurndownService from "turndown";

const turndown = new TurndownService();
const markdown = turndown.convert("<h1>Hello</h1><p>World</p>");
console.log(markdown);

Node.js 生态中最常用的标准库。加上 turndown-plugin-gfm 插件后支持 GFM 表格、删除线、任务列表。也能在浏览器环境运行,适合在自有 Web 应用中嵌入转换功能。

Python 库

markdownify

pip install markdownify
from markdownify import markdownify

html = "<h1>Title</h1><p>Hello <strong>world</strong></p>"
print(markdownify(html, heading_style="ATX"))

markdownify 基于 BeautifulSoup,对爬虫抓取到的不完整 HTML 也能稳定处理。通过 heading_style="ATX"bullets="-*+"strip=["script", "style"] 等选项可以精细控制输出格式。

html2text

pip install html2text
import html2text

h = html2text.HTML2Text()
print(h.handle("<h1>Title</h1><p>Hello world</p>"))

历史悠久、维护活跃的库,既可以在代码中使用,也可以作为命令行工具运行(html2text input.html)。一次性快速转换保存的网页很方便。

html-to-markdown(Go - JohannesKaufmann)

go install github.com/JohannesKaufmann/html-to-markdown/cli/html2markdown@latest
html2markdown < input.html > output.md

Go 社区的事实标准库。同时提供库和独立 CLI 二进制文件,支持表格和自定义转换规则扩展。在 CI runner 或 Docker 容器中作为单个静态二进制文件运行很轻量。

按用途选择工具

工具是否需要安装基础语言推荐场景
FormatArc不需要(浏览器)即时单次转换、涉及敏感数据的内部文件
Pandoc需要(Homebrew / apt)CLI大批量转换、多种文档格式处理
Turndownnpm 安装JavaScriptNode.js 服务、Web 前端嵌入
markdownifypip 安装Python网页爬取和数据采集流水线
html2textpip 安装Python保存的网页文本提取和命令行操作
JohannesKaufmanngo installGoCI/CD 流水线、Docker 轻量静态二进制

HTML 表格转 Markdown 的注意事项

HTML 转 Markdown 时最容易出错或格式崩坏的地方就是 <table> 标签。

Markdown 的管道表格语法由 GFM 规范在新标签页中打开 定义,表头行、数据行、列对齐(align)都能正常表达。但 HTML 表格支持的复杂布局功能并非全部能对应。

能干净转换的标准表格结构

<thead><tbody> 结构、单元格是简单的 <td><th>、表头使用了 align="left|center|right" 对齐属性的常规表格,可以无损转为管道表格。

<table>
  <thead><tr><th>商品名</th><th align="right">价格</th></tr></thead>
  <tbody>
    <tr><td>苹果</td><td align="right">1200</td></tr>
    <tr><td>香蕉</td><td align="right">800</td></tr>
  </tbody>
</table>

上面的 HTML 会转成干净的 Markdown 管道表格:

| 商品名 | 价格 |
|--------|------:|
| 苹果   | 1,200 |
| 香蕉   |   800 |

无法直接转换的 3 种结构

在 Markdown 表格规范中没有直接对应写法、转换时会发生信息丢失的典型结构有 3 种:

  1. colspan / rowspan(单元格合并)— Markdown 管道表格要求所有行列构成矩形网格。合并单元格信息不被支持,转换工具会拆分单元格或把合并内容挤到一个单元格里。
  2. 单元格内的块级元素 — <td> 里放列表(<ul>/<ol>)、代码块(<pre>)或嵌套表格(<table>)时,管道表格结构会崩坏。行内元素(<strong><em><a><code>)可以正常转换。
  3. 单元格内换行(<br>)— 单元格内出现换行时,不同解析器行为不同:有的忽略换行,有的以 GFM 允许的内联 HTML 形式原样输出 <br> 标签。

实用应对方法

遇到管道表格无法表达的复杂表格时,有两种实用的处理方式:

  • 整篇内容转 Markdown,但把那个复杂表格保留为原始 HTML(<table>...</table>)形式。GFM 和大部分静态站点生成器(GitHub、Hugo、CSDN 等)都能正常渲染 Markdown 中的内联 HTML 标签。
  • 如果内容不是复杂布局而是纯数据集,先把数据整理成行列结构,再通过 CSV 转 Markdown 工具 生成 Markdown 表格,这样更稳定。

管道表格的对齐、单元格内换行、转义等语法细节,可以参考 Markdown 表格语法GFM 表格速查表。如果想进一步了解 HTML 表格转 Markdown 时列错位、colspan/rowspan 的处理方式,可以参考 HTML 表格转 Markdown 表格的指南

常见问题与解决

style 和 class 属性被删除

HTML 标签上的 style 内联 CSS 和 class 属性在 Markdown 中没有对应概念,转换时会被自动删除。如果项目需要保留原始样式信息,转换前请把源 HTML 文件备份。

如果粘贴源来自 Word、Google Docs 或网页,很容易混入多余标签(<o:p>mso-* 样式、无意义的 span 标签等)。这种情况可以先转成干净的 Markdown 结构,之后如果需要重新加样式,再通过 Markdown 转 HTML 工具套用 CSS 类名重新渲染。关于去除这类多余标签和内联样式的完整步骤,可以参考 HTML 粘贴 Markdown 化并去除 span、内联样式的方法

图片相对路径问题

<img src="..."> 标签会转成 ![alt](src) 的 Markdown 语法。但源 HTML 中用相对路径(如 ./images/photo.png)写的图片,在 Markdown 文件被移到其他平台或项目后路径可能对不上,图片就显示不出来了。

建议先用 HTML 转 Markdown 工具转换,确认图片替代文本(alt)和链接结构没问题后,再单独处理图片文件复制和路径修改。

空白字符、&nbsp;、转义反斜杠(\

转换后的 Markdown 结果中可能出现意料之外的字符。&nbsp; 实体会根据转换器不同变成普通空格或不换行空格,连续空格会被压缩为一个空格。

另外,正文中 *_#[ 等字符前面可能会自动加上反斜杠(\)。这是转换引擎为了防止这些符号被误读为 Markdown 格式语法(强调、标题、链接等)而做的安全转义。如果觉得多余,确认该字符不是列表或强调的起始点后手动去掉即可。

常见问题(FAQ)

支持 GFM 表格吗?

支持。HTML 的 <table> 元素会转成 GFM 管道表格(| 列1 | 列2 |)格式,<thead> 表头行和基本的列对齐(align)属性也会被保留。

转换是在浏览器内完成的吗?

是的。HTML 解析和 Markdown 文本生成都通过 JavaScript 在用户的浏览器内执行。即使输入公司内部文档或未公开稿件,数据也不会发送到外部服务器。

和 Pandoc、Turndown 有什么区别?

Pandoc 需要本地 CLI 环境安装,Turndown 需要 Node.js 项目配置。FormatArc 网页版转换工具无需安装,在浏览器中粘贴即可转换并复制结果,单次操作最快。大批量自动化或构建脚本场景下,Pandoc 或 Turndown 库更合适。

图片和相对路径会保留吗?

<img src="..."> 会转成 ![alt](src),图片地址和替代文本都会保留。源 HTML 中的相对路径会原样保留,迁移到其他平台时需要单独复制图片文件并按需修改路径。

为什么 class 和 style 属性会被删除?

Markdown 是面向文本结构表达的轻量标记语言,不是用来做样式的。内联 CSS 和 class 属性没有对应的 Markdown 语法,所以为了保证跨环境兼容性和可移植性,转换时会移除这些样式属性。如果之后需要把 Markdown 重新转回 HTML,可以参考 Markdown 转 HTML 指南

PDF 也能转换吗?

这个转换工具接收 HTML 作为输入,无法直接处理 PDF。要把 PDF 转成 Markdown,请使用专门的 PDF 转 Markdown 工具。不过如果 PDF 中没有保留表格结构,列可能会错位。表格错乱的原因和修复方法可以参考 PDF 转 Markdown 表格错乱的原因与修复方法

总结

把 HTML 网页转为 Markdown 在 CMS 迁移、网页剪藏、Notion 数据整理等场景中都是刚需。

简单的单次转换或需要安全的本地处理时,直接用浏览器里的 HTML 转 Markdown 在线工具最方便。把 HTML 转 Markdown 工具加入你的日常工具链,配合 Pandoc 或 Turndown 处理批量和自动化场景,就能覆盖绝大多数网页内容转 Markdown 的需求。