Markdown 编辑器,免费
编写 Markdown,实时查看 HTML 预览。
使用方法
- 在左侧面板输入或粘贴 Markdown 文本。右侧面板显示实时 HTML 预览。
- 使用工具栏按钮快速插入格式(粗体、斜体、标题、链接等)。
- 在编辑器下方查看字数、字符数和行数。
- 下载您的 Markdown 为 .md 文件,或复制 HTML 输出。
常见问题
此编辑器支持标准 Markdown 语法吗?
支持。它支持标题、粗体、斜体、链接、图片、代码块、列表、引用和水平线。简化的 Markdown 解析器会实时渲染 HTML。
可以保存我的工作吗?
编辑时,编辑器会自动将文本保存到浏览器存储中。使用下载 .md将其保存为本地文件。
如何插入链接或图片?
使用工具栏按钮。链接使用 [文本](url)。图片使用 。预览会立即更新。
Markdown简史
Markdown由John Gruber于2004年3月创建,他是Daring Fireball博客背后的作家,与Aaron Swartz(这位多才多艺的人后来共同创立了Reddit,并共同撰写了RSS 1.0规范)有重要合作。其设计目标(写入原始语法页面)是「使其尽可能可读」。Gruber希望创建一种可以原样发布的纯文本格式,在终端或纯文本编辑器中无需任何渲染就能看起来自然。该格式规范化了人们在纯文本电子邮件和Usenet帖子中已经在做的事情:*asterisks for emphasis*、> for quoted text,段落之间用空行分隔。
名称是对「标记语言」的文字游戏,Markdown如此轻量,以至于它是「向下标记」而非向上标记。使它与HTML在哲学上区分开来的核心:HTML的源代码是为机器准备的,Markdown的源代码是为人类准备的。一个.md文件无需渲染就应该在终端中读起来非常舒适。
Gruber最初的语法页面留下了许多边缘情况的歧义,在2000年代末期,每个需要Markdown解析器的项目都编写了自己的,对未指定的部分做出了不同的决定。到2010年代初期,同一个.md文件在Reddit、GitHub、Stack Overflow和Jekyll博客上的渲染效果明显不同。2014年,一个工作组(包括Jeff Atwood(Stack Overflow、Discourse)、John MacFarlane(Pandoc)以及来自GitHub、Reddit和Meteor的工程师)制定了严格的规范,最初称为「Standard Markdown」,在Gruber提出异议后更名为CommonMark。CommonMark发布了人类可读的文档和包含600多个边缘案例测试的机器可读测试套件;当前版本为0.31.2(2024年1月)。GitHub、GitLab、Reddit、Stack Overflow、Discourse和数十种编程语言现在都声称符合该规范。
常用语法
这是几乎所有Markdown风格中都能使用的语法,也是本编辑器支持的实用基准。
| 您想要的效果 | 书写方式 |
|---|---|
| 标题 | # H1 到 ###### H6 |
| 粗体/斜体 | **bold** · *italic* · ***both*** |
| 内联代码 | `code` |
| 代码块 | 用三个反引号围栏;可选语言标签用于语法高亮 |
| 无序列表 | - item(或 * 或 +) |
| 有序列表 | 1. first:实际数字通常无关紧要 |
| 链接 | [text](https://example.com) |
| 图像 | :替代文本对无障碍性很重要 |
| 引用块 | > quoted text |
| 水平线 | ---,单独一行 |
两个常见陷阱:单个换行不会创建换行符:您需要一个空行来开始新段落,或在换行前加两个尾随空格(或在GFM中加反斜杠)来在段落内强制换行。Markdown是HTML的超集:任何内联HTML标签都会传递到渲染输出,这偶尔有用,偶尔也是安全风险。
GitHub Flavored Markdown和其他风格
GFM是GitHub的CommonMark超集。它添加了表格(使用连字符分隔行的管道分隔行)、任务列表项(- [ ]未选中,- [x]已选中)、删除线(~~text~~)、自动URL检测,以及会过滤危险标签的「disallowed raw HTML」过滤器。GitHub本身还渲染一些规范外的扩展:emoji简写(:tada:)、@mentions、#123议题自动链接、提醒标注(> [!NOTE])、可折叠的<details>节,但这些是GitHub渲染特性,而非GFM规范的一部分。
您会遇到的其他风格:
- Pandoc Markdown:添加元数据块、脚注、定义列表、数学公式(
$...$LaTeX)、引用。被称为「瑞士军刀」的通用文档版本。 - MultiMarkdown和Markdown Extra:早期的扩展风格,影响了GFM的表格语法。
- R Markdown:将Markdown与可执行的R或Python代码块结合;通过Pandoc渲染为HTML/PDF/Word。
- MDX:Markdown加JSX。用于基于React的文档(Docusaurus、Next.js MDX)。
- Discord使用有意设计的子集;Slack使用一种有意不标准的变体,称为「mrkdwn」,使用单星号加粗和单下划线斜体。将标准Markdown粘贴到Slack会得到令人意外的结果。
Markdown的使用场景
几乎在开发人员写作文本的每个地方:
- 代码托管:每个GitHub README、议题和PR评论;GitLab、Bitbucket、Codeberg、Gitea同理。
- 问答和论坛:Stack Overflow、Stack Exchange、Reddit、Discourse。
- 笔记:Obsidian、Joplin和Logseq原生使用Markdown。Notion和Bear可导出为它。
- 静态站点生成器:Jekyll(Ruby,Kramdown)、Hugo(Go,Goldmark)、Eleventy(Node,markdown-it)、Docusaurus、MkDocs、Astro。
- 文档工具:JSDoc、TypeDoc、Rustdoc(Rust使用CommonMark用于
///文档注释)、Sphinx via MyST。 - 现代聊天工具:Mattermost、Zulip、Element/Matrix都使用Markdown进行消息格式化。
Markdown还是已注册的IETF媒体类型(text/markdown,RFC 7763,2016年3月),带有variant参数(GFM、CommonMark、MultiMarkdown等),以便接收方知道应用哪种风格。常见文件扩展名:.md是目前最流行的,另外还有.markdown、.mdown、.mkdn、.mkd。
关于本编辑器解析器的说明
本页面使用简化的Markdown解析器,涵盖上述常用子集:标题、粗体和斜体、链接、图像、围栏代码、列表、引用块和水平线。它不是完整的CommonMark或GFM实现,可能无法处理所有边缘情况(带混合项目符号的深层嵌套列表、延迟行延续、跨文档的链接引用定义)。对于要求严格CommonMark一致性的场景,像marked.js、markdown-it或commonmark.js这样的专用解析器才是正确选择,对于不可信Markdown的生产环境渲染,请将解析器输出通过DOMPurify等净化器处理,以防止通过内联HTML导致XSS。
适合使用的场景
- 起草GitHub README,在粘贴到仓库之前进行实时预览。
- 撰写博客文章,用于源文件为
.md的Jekyll、Hugo、Ghost或Eleventy站点。 - 原型设计Notion或Obsidian笔记,当您不想打开桌面应用时。
- 将快速片段转换为HTML,用于嵌入CMS、电子邮件或Slack画布。
- 学习Markdown语法:实时预览立即显示每个字符的效果。
- 起草机密内容:编辑器会自动保存到您浏览器的
localStorage,因此敏感的合同条款或发布前公告永远不会离开您的设备。
更多问题
为何单个换行不会创建新行?
出于设计目的。Markdown将单个换行符折叠为连续段落,因为该格式在纯文本中意在看起来自然,读者在其编辑器中以任意宽度换行而不影响渲染输出。要在段落内强制换行,请在行末加两个尾随空格(原始Markdown惯例),或在GFM中加反斜杠。要创建新段落,请在两者之间留一个空行。
可以在Markdown中使用HTML吗?
可以,Markdown是HTML的超集。内联标签如<span>、<a>、<sub>和<sup>会传递到渲染输出,其中的Markdown语法仍然被识别。块级HTML(<div>、<table>)需要与周围的Markdown之间用空行分隔,并且块内的Markdown不会被处理。对于Markdown无法原生表达的内容可以使用它:图像尺寸(<img width="…">)、键盘按键(<kbd>)或可折叠节(<details>)。
表格、脚注和任务列表怎么样?
三者都是GFM扩展,不属于原始Markdown规范。表格使用带连字符分隔行的管道分隔行;本页面的简化解析器可能将其渲染为纯文本。脚注([^1]引用和[^1]: definition定义)是GFM规范之外的GitHub渲染特性。任务列表(- [ ]和- [x])在GFM中。要完整支持这些功能,请将文件粘贴到GitHub预览本身等CommonMark+GFM兼容的渲染器中。
为何图像需要替代文本?
因为替代文本是屏幕阅读器遇到图像时所宣读的内容,它是视障读者的主要无障碍性钩子。在技术上是有效的Markdown,但对屏幕阅读器毫无用处;才是真正具有描述性的。跳过替代文本或用文件名填充它是Web内容中最常见的无障碍性失误之一。
有任何内容会发送到服务器吗?
不会。编辑器在浏览器中将Markdown解析为HTML,实时预览在本地更新,自动保存使用您浏览器的localStorage:这是您设备上的小型私密存储。没有任何内容离开页面。编辑器加载后可离线工作。