转换器

Markdown 转 HTML 转换器

Markdown 转 HTML 是一款浏览器转换器,把 CommonMark 与 GitHub Flavored Markdown 变成经过净化的 HTML——包含标题、表格、任务列表和围栏代码块。不上传任何文件;同一个渲染器也在 POST /v1/convert/markdown/html 背后运行。

# markitdown-ai

Convert documents to clean Markdown.

## Features

- PDF, Word, and slides
- [x] Tables stay tables
- [ ] Mermaid coming later

## Install

```bash
pnpm add @markitdown-ai/sdk
```

## API

| Method | Path |
| --- | --- |
| POST | /v1/convert/{name} |
| GET | /v1/conversions/{id} |

如何操作

如何把 Markdown 转 HTML

可以粘贴什么

  • 支持任意 Markdown:CommonMark,外加 GitHub Flavored Markdown 的表格、任务列表和删除线
  • 渲染在你的浏览器中进行 —— 输入时不会上传任何内容
  • 预览、复制或下载都无需账号
  • 没有固定大小上限;超大的文档受浏览器内存限制
Markdown 转 HTML:把 Markdown 渲染成 HTML 页面

为什么使用

为什么用这款 Markdown 转 HTML 转换器

CMS 字段、静态站点和邮件编辑器要的都是标记,而不是 Markdown 源码。这款转换器保留承载意义的部分,去掉会让原始 HTML 不安全的成分。

在你的浏览器里运行

粘贴 Markdown,HTML 预览会在本地更新。不上传任何文件,预览、复制或下载都不需要账号。

CommonMark 加 GFM

标题、列表、链接、引用块和围栏代码遵循 CommonMark;表格、任务列表和删除线遵循 GitHub Flavored Markdown。

默认净化

script 标签、内联事件处理器以及不安全的 href 或 src scheme 都会被去掉,所以这段 HTML 可以安全地粘贴进你不完全掌控的页面。

片段或完整文档

只复制渲染出的标记,用于已经自己定义好版式的页面;或下载一份带预览样式的完整 HTML 文档。

标题锚点

每个标题都会得到一个稳定、URL 安全的 id,生成方式与 API 相同,所以你发布之后目录或深链仍然有效。

与 API 同一个引擎

这个预览和 POST /v1/convert/markdown/html 运行同一个渲染器,所以这里复制出的 HTML 与自动化调用逐字节一致。

问题所在

为什么原始 Markdown 不能直接放进网页

Markdown 语法不是 HTML

CMS 字段、邮件模板或静态站点主题要的是标记,而不是 Markdown 源码,所以原始文本必须先转换,才能被样式化或嵌入。

普通解析器会漏掉 GFM

表格、任务列表和删除线是 GitHub Flavored Markdown 扩展;只支持 CommonMark 的解析器会把它们渲染成字面的竖线和波浪号,而不是结构。

不受信任的 Markdown 可能夹带脚本

Markdown 可以内嵌原始 HTML,包括 <script> 标签和内联事件处理器,在输出安全地插入你不完全掌控的页面之前,必须把它们去掉。

转换 Markdown 为 HTML:复制粘贴后的错乱文本与干净的 Markdown 结构对比

保留什么

这款 Markdown 转 HTML 转换器保留什么

标题与内联文本
ATX 和 setext 标题、强调、链接和引用块遵循 CommonMark;每个标题还会得到一个由其文本生成的 URL 安全 id。Source: CommonMark Spec
表格、任务列表与删除线
GitHub Flavored Markdown 的表格变成 <table> 元素,[ ] 和 [x] 项目变成复选框输入,~~text~~ 变成 <del>。Source: GitHub Flavored Markdown Spec
净化后的标记
原始 <script> 标签、内联事件处理器,以及 http、https 和 mailto 之外的 href 或 src 值,都会在 HTML 返回之前被去掉。Source: HTML Living Standard
围栏代码
围栏代码块保留其内容和语言标签;浏览器预览本身不应用任何语法高亮主题。Source: CommonMark Spec
源文件里的原始 HTML
内嵌其它原始 HTML 标签的 Markdown 会经过同一个净化器,所以嵌入的标签永远不会被当作可信标记。Source: HTML Living Standard

经过核验的 Markdown 转 HTML 节选· https://markitdown.ai/blog/why-pdfs-break-llms

<h2 id="what-actually-goes-wrong">What actually goes wrong</h2><p>When teams pipe documents straight into an LLM or a retrieval index, a few failure modes show up again and again:</p><ul><li><strong>Reading order breaks.</strong> Multi-column layouts interleave. A two-column page becomes "line 1 left, line 1 right, line 2 left, line 2 right…", so a sentence a human reads top-to-bottom arrives at the model scrambled.</li><li><strong>Tables collapse.</strong> Copy-paste turns a table into a loose run of numbers. The relationship between a header and its cell — the entire point of a table — is gone.</li><li><strong>Headings disappear.</strong> The visual hierarchy (this is a section, this is a subsection) is encoded as font size and weight, not structure. Strip the styling and you get one undifferentiated wall of text.</li><li><strong>Noise creeps in.</strong> Page numbers, running headers, hyphenated line breaks, and stray ligatures end up inline, polluting prompts and embeddings alike.</li></ul><p>Read more in the <a href="https://markitdown.ai/blog/why-pdfs-break-llms">full article</a>.</p>

使用场景

Markdown 转 HTML 的使用场景

凡是目标要标记、而来源保持 Markdown 的地方,这款转换器就是中间那一步。

文档与静态站点

把 README 或 Markdown 知识库文章变成静态站点生成器或 CMS 字段所期望的 HTML。

邮件与通讯草稿

用 Markdown 起草一封邮件,转成 HTML,再把片段粘贴进你真正用来发送的邮件编辑器。

清理 LLM 回答

ChatGPT、Claude 和 Gemini 返回的是 Markdown;当目标——一张工单、一个 wiki 页面——渲染的是标记而不是裸星号时,就把它转成 HTML。

自动化渲染的开发者

从存储 Markdown、却对外提供 HTML 的流水线里调用渲染端点,不必给每个服务都加一个 Markdown 库。

Markdown 转 HTML 在线:把渲染结果用于网站、邮件和文档

API

面向开发者的 Markdown 转 HTML API

渲染同步运行,消耗 0 credit——它仍然计入你套餐的每分钟限速。把 Markdown 作为文本发送,或引用一个已存储的 .md 文件,POST 到 /v1/convert/markdown/html 并带上 API key;净化后的 HTML 会就地返回。

阅读 API 指南
curl -X POST https://api.markitdown.ai/v1/convert/markdown/html \  -H "x-api-key: mdai_…" \  -H "Content-Type: application/json" \  -d '{ "text": "# Notes\n\nHello **world**." }'

文档与静态站点

大多数文档工具都把 Markdown 当作可编辑的来源,只在构建或预览时才生成 HTML。这款转换器让你可以单独检查那一步生成:粘贴你的站点生成器将要读取的同一段 Markdown,在提交改动之前确认标题、表格和代码块的产出方式符合你主题的预期。当 CMS 字段接受 HTML、而你的写作者又用 Markdown 工作时,它也有用——转换一次,粘贴片段,下一版继续编辑 Markdown 源文件,而不是手工改生成出来的标记。

  • 把 Markdown 文件当作你的真源;把 HTML 当成构建产物。
  • 把渲染结果与你站点真实的主题对照,而不只是本页预览的样式。
  • 每次改动源文件后重跑转换,而不是手工修补生成的 HTML。

净化

Markdown 可以内嵌原始 HTML,而这些原始 HTML 里可能带 <script> 标签或 onclick 这样的内联事件处理器。在这款转换器返回结果之前,这些标记会经过一个净化器:移除 script 元素、剥掉任何以 "on" 开头的属性,并且只允许 http、https 和 mailto 链接以及图片源。留下来的只有语义结构——标题、段落、列表、表格、链接、图片和代码——而不是装饰性样式。转换器不会往片段输出里注入 class 或 CSS 文件;完整文档下载会加上你在预览里看到的主题,让文件能独立正确打开。

片段还是完整页面

片段是内部的标记——标题、段落和表格——外面没有 <html> 或 <head>。它属于一个已经定义好自身文档结构和样式的页面,比如 CMS 内容字段或渲染子元素的组件。完整文档会加上 doctype、一个标题和一小段样式表,让文件可以直接在浏览器里打开或单独保存。把一个完整文档粘贴进期望片段的字段是常见错误:浏览器可能仍会渲染它,但嵌套的 <html> 和 <head> 标签在那里是非法的,还可能让期望片段的工具链犯迷糊。

FAQ

Markdown 转 HTML 常见问题

Markdown 转 HTML 是怎么工作的?

粘贴或输入 Markdown,转换器会在你的浏览器本地渲染出净化后的 HTML,使用的是与 POST /v1/convert/markdown/html 相同的渲染器。你输入时不会上传任何内容。

Markdown 转 HTML 支持 GitHub Flavored Markdown 吗?

支持。表格、任务列表和删除线遵循 GitHub Flavored Markdown 规范,与 CommonMark 的标题、列表、链接和代码并存。

输出的 HTML 经过净化吗?

是的。script 标签、内联事件处理器和不安全的 href 或 src scheme 都会被去掉,所以这段 HTML 可以安全地粘贴进你不完全掌控的页面。

可以要完整 HTML 文档而不是片段吗?

可以。选择带预览样式的完整文档,或只复制片段,用于已经自己定义好版式的页面。

把 Markdown 转 HTML 需要账号吗?

不需要。预览、复制和下载都不需要登录,因为渲染在你的浏览器本地运行。

我输入时会调用 API 吗?

不会。输入过程完全在本地。只有在你直接调用 POST /v1/convert/markdown/html 时(例如从脚本里)API 才会运行。

我转换的 Markdown 有大小限制吗?

没有固定的上传上限,因为不上传任何内容;实际限制取决于你的浏览器内存能处理多大的文档。

可以从代码里把 Markdown 转 HTML 吗?

可以。把 Markdown 作为文本、或一个已存储的 .md 文件,POST 到 /v1/convert/markdown/html 并带上 API key。它消耗 0 credit。见 /developers。

随时将 Markdown 转换为 HTML。

免费试用——无需注册。