HTML 转 Markdown 转换器

将 HTML 文档或网页片段一键转换为 Markdown 格式。基于浏览器原生 DOMParser 解析, 支持标题、列表、代码块、表格、引用、链接、图片、GFM 任务列表等完整语法。 可配置 ATX/Setext 标题风格、围栏/缩进代码块、列表标记符, 自动忽略 script/style 等非内容标签。与 Markdown 预览器形成双向转换闭环。

HTML 输入
Markdown 输出

常见问题

为什么需要 HTML 转 Markdown?

Markdown 以纯文本形式存储,具有以下优势:

  • 可读性强:源码即排版,无需渲染即可阅读
  • 平台兼容:GitHub、GitLab、Notion、Obsidian、VS Code 等均原生支持
  • 版本控制友好:纯文本 diff 清晰,便于团队协作
  • 体积小:无 HTML 标签开销,传输与存储成本低

常见场景包括:将网页内容保存为笔记、从 WordPress/博客平台迁移到 Markdown 博客(如 Hugo/Astro)、 为 AI 训练数据准备纯文本、将富文本编辑器输出转为可版本控制的格式。

支持哪些 HTML 标签的转换?

本工具覆盖了 Markdown 语法能表达的所有 HTML 标签:

  • 标题:h1 ~ h6 → # ~ ######(或 setext ===/---
  • 文本格式:strong/b → **粗体**、em/i → *斜体*、del/s → ~~删除线~~
  • 代码:code → `行内代码`、pre > code → 围栏代码块(自动提取语言标识)
  • 链接图片:a → [text](url)、img → ![alt](src)
  • 列表:ul → - 无序列表、ol → 1. 有序列表、支持任意层级嵌套
  • GFM 任务列表<input type="checkbox">- [x] / - [ ]
  • 表格:table → GFM 管道表格(含表头分隔行)
  • 引用:blockquote → > 引用(支持嵌套)
  • 其他:hr → ---、br → 硬换行、details/summary → 加粗标题 + 正文

script、style、template、noscript、iframe 等非内容标签会被自动忽略。

ATX 和 Setext 标题风格有什么区别?

ATX 风格(默认):用 # 号表示标题层级,支持 h1 ~ h6:

# 一级标题
## 二级标题
### 三级标题

Setext 风格:仅支持 h1 和 h2,用下划线表示:

一级标题
=======

二级标题
-------

ATX 更通用(支持 6 级),Setext 更简洁(仅 2 级)。建议保持默认的 ATX 风格。

围栏代码块和缩进代码块有什么区别?

围栏代码块(默认):用三个反引号包裹,可指定语言标识:

```javascript
const x = 1;
```

缩进代码块:每行缩进 4 个空格,无法指定语言:

    const x = 1;

围栏代码块是 GFM 扩展,支持语法高亮,现代平台均支持。缩进代码块是原始 Markdown 规范,兼容性更老。

如何处理嵌套列表?

本工具完整支持任意层级的列表嵌套。子列表会自动缩进对齐:

- 一级项
  - 二级项
    - 三级项
  - 二级项
- 一级项

缩进空格数可通过"缩进空格数"选项调整(默认 2 空格,CommonMark 规范要求至少 2 空格)。 有序列表和无序列表可混合嵌套。

转换后表格格式不正确怎么办?

GFM 管道表格要求:第一行必须是表头,第二行是分隔行(| --- | --- |)。 如果原始 HTML 表格没有 <th> 表头单元格,本工具会将第一行作为表头处理。 注意:GFM 表格不支持单元格内换行,多行内容会被合并为单行(用空格分隔)。 如需保留复杂表格结构,建议保留原始 HTML。

数据安全吗?会上传到服务器吗?

完全安全,数据不离开浏览器。本工具基于浏览器原生 DOMParser API 在本地解析 HTML, 所有转换逻辑在客户端 JavaScript 中执行,不发起任何网络请求。 打开浏览器开发者工具的 Network 面板即可验证无任何外发请求。适用于处理含敏感信息的 HTML 内容。

为什么不引入 Turndown 等成熟库?

三个核心考虑:

  1. bundle 体积可控:Turndown 约 40KB(gzip 13KB),而手写引擎约 12KB(gzip 4KB), 节省 28KB。本工具页单页加载远低于 200KB 红线。
  2. 安全可控:成熟库功能丰富但攻击面也大。本工具默认忽略 script/style 等标签, 从根本上避免 XSS 风险,无需引入额外净化库。
  3. 无外部依赖:项目坚持"纯原生零依赖"原则,便于维护与审计。