ZeroTool Workbench
Markdown 预览
实时 Markdown 编辑器,带 HTML 预览。支持标题、粗体、斜体、代码块、列表、链接和表格。免费在线工具。
使用方法
- 在左侧编辑面板中输入或粘贴 Markdown。
- 右侧会实时显示渲染后的 HTML 预览。
- 点击 Copy HTML 可将渲染后的 HTML 复制到剪贴板。
- 点击 Clear 可清空内容重新开始。
支持的语法
- 标题:
# H1至###### H6 - 粗体:
文本或文本 - 斜体:
文本或文本 - 删除线:
文本 - 行内代码:
code - 代码块:三个反引号围栏,可指定语言
- 链接:
[文本](url) - 图片:
 - 无序列表:
- 项目 - 有序列表:
1. 项目 - 引用块:
> 引文 - 表格(GFM)
- 任务列表:
- [x] 已完成/- [ ] 待办 - 水平线:
---
渲染器
预览使用 micromark 4 与 micromark-extension-gfm 3。micromark 声明完全符合 CommonMark 并通过规范的测试集;GFM 扩展加上 GFM 规范 里 GitHub 使用的 5 项功能:表格、任务列表、删除线、自动链接字面量、脚注。预览里的链接在新标签页打开,点击不会离开本页、丢掉正在写的内容。
示例
下面的输入:
# Release notes
See https://example.com and `a **b** c`.
- Parent
- Child
- [X] Done
- [x] done
3. third
4. fourth
| Item | Price |
|:-----|------:|
| Widget | $9.99 |
| a \| b | 1 |
<b>raw</b> and <img src=x alt=y>
得到的 HTML(即「复制 HTML」的内容):
<h1>Release notes</h1>
<p>See <a href="https://example.com">https://example.com</a> and <code>a **b** c</code>.</p>
<ul>
<li>Parent
<ul>
<li>Child</li>
</ul>
</li>
<li><input type="checkbox" disabled="" checked="" /> Done</li>
<li><input type="checkbox" disabled="" checked="" /> done</li>
</ul>
<ol start="3">
<li>third</li>
<li>fourth</li>
</ol>
<table>
<thead>
<tr>
<th align="left">Item</th>
<th align="right">Price</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Widget</td>
<td align="right">$9.99</td>
</tr>
<tr>
<td align="left">a | b</td>
<td align="right">1</td>
</tr>
</tbody>
</table>
<p><b>raw</b> and <img src=x alt=y></p>
逐行看:裸网址成为链接(GFM 自动链接字面量);反引号里的星号原样保留,代码不解析强调;缩进的 - Child 是嵌套列表;[X] 与 [x] 都是已勾选的任务;从 3. 开始的列表把起始号写进 start 属性;分隔行的冒号设定左右对齐,\| 在单元格里表示竖线、不拆格;最后一行原始 HTML 输出为文字。
原始 HTML 显示为文字
CommonMark 允许在 Markdown 里写 HTML 标签,GitHub 渲染其中经过过滤的一部分:它的渲染管线会去掉 script 标签、内联样式和 class / id 属性。本预览选更严格的做法,把所有原始 HTML 转义成文字,这也是 micromark 的默认行为。原因在于预览运行的位置:zerotool.dev 上其他工具会把输入保存在浏览器存储里,同源的页面都能读到。如果渲染原始 HTML,粘贴文本里的 <img src=x onerror=…> 就会在本站执行脚本。转义之后,文本里的任何标记都不会成为页面元素,复制出的 HTML 粘贴到别处也安全。
链接地址同理:链接只保留相对地址和 http、https、mailto、irc、ircs、xmpp,图片只保留相对地址和 http、https;javascript:、data: 等其他协议的 href / src 置空,链接文字保留。需要 <details>、<kbd>、<br> 生效的文档,请在 GitHub 自己的预览里检查。
图片会联网加载
 生成的 <img> 会由浏览器从该地址下载,图片服务器能看到你的 IP 和浏览器信息。文字和文档其余部分留在浏览器里。
限制
- 原始 HTML 不渲染(见上文),依赖 HTML 标签的文档在这里与 GitHub 显示不同。
- 标题没有
id锚点;GitHub 渲染页面时会加。 :tada:这类 emoji 简码、@提及、#123这类 issue 引用是 GitHub 在 GFM 规范之外的功能,显示为文字。- 不渲染数学公式(
$…$)和 Mermaid 图。 - 代码块高亮支持 JavaScript、TypeScript、Python、Go、PHP、Ruby、Java、Bash、JSON、HTML/XML、CSS 和 Markdown,其他语言显示为普通代码。
FAQ
我的内容会上传到服务器吗?
不会。Markdown 完全在浏览器中通过 JavaScript 解析和渲染,唯一的网络请求是用  引用的图片。
支持哪些 Markdown 语法?
完整的 CommonMark,加上 GitHub 风格 Markdown(GFM)的扩展:带列对齐的表格、任务列表、删除线、裸网址自动成链接、脚注。嵌套列表、引用式链接、从任意数字开始的有序列表都支持。
可以复制渲染后的 HTML 吗?
可以。「复制 HTML」复制的是渲染器生成的 HTML,不含预览里的代码高亮标记。Markdown 里的原始 HTML 在其中是转义后的文字。
支持 GitHub 风格的 Markdown(GFM)吗?
支持,原始 HTML 除外。渲染器是 micromark 加 GFM 扩展,通过 CommonMark 与 GFM 规范的测试。GitHub 会渲染经过过滤的部分 HTML 标签(如 details、br),本预览把所有 HTML 标签显示为文字。
为什么我写的 HTML 显示成了文字?
预览运行在 zerotool.dev 上,其他工具的输入也保存在这个站点的浏览器存储里。粘贴文本中带 onerror 属性的 img 标签如果被渲染,就会在本站执行代码,所以原始 HTML 一律转义。使用 javascript:、data:、vbscript:、file: 的链接地址会被置空。链接、图片和强调请用 Markdown 语法。