Markdown 语法速查表

一页看完所有 Markdown 语法:左边是源码,右边是实时渲染结果,每个代码块都可以一键复制。

免费 · 无需注册 · 全程在浏览器内运行最后更新

Markdown 的基本语法有哪些?

Markdown 用普通标点来表达格式:# 表示标题,**文字** 加粗,*文字* 倾斜,> 引用,- 或 1. 生成列表,反引号包裹代码,[文字](链接) 插入链接,![说明](图片) 插入图片。扩展语法在此之上增加表格、围栏代码块、任务列表、脚注和删除线。

markdown
# 一级标题
**加粗**  *斜体*  ~~删除线~~

> 引用内容

- 无序列表
1. 有序列表
- [ ] 任务项

`行内代码`
[链接](https://example.com)
![图片说明](image.png)

| 列 A | 列 B |
| ---- | ---- |
| 单元格 | 单元格 |

依次渲染出一级标题,加粗、斜体和带删除线的文字,一段引用,无序、有序和复选框列表,行内代码、超链接、图片,以及一个两列表格。

在线使用 Markdown 语法速查表

基础语法

以下元素来自 John Gruber 最初的设计文档,所有 Markdown 应用都支持。

标题

# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题

一级标题

二级标题

三级标题

四级标题

五级标题
六级标题

段落

第一段。段落之间用一个空行分隔。

第二段。可以混排 *斜体*、**加粗** 和 `等宽字体`。列表
写起来是这样:
  * 第一条
  * 第二条
  * 第三条

第一段。段落之间用一个空行分隔。

第二段。可以混排 斜体加粗等宽字体。列表
写起来是这样:

  • 第一条
  • 第二条
  • 第三条

加粗

**加粗文字**
__加粗文字__

加粗文字
加粗文字

斜体

*斜体文字*
_斜体文字_

斜体文字
斜体文字

粗体加斜体

***又粗又斜的文字***
___又粗又斜的文字___
__*又粗又斜的文字*__
**_又粗又斜的文字_**

又粗又斜的文字
又粗又斜的文字
又粗又斜的文字
又粗又斜的文字

引用块

> 这是一段引用
>
> 引用可以跨越多行

> 引用还可以嵌套
> > 就像这一层

这是一段引用

引用可以跨越多行

引用还可以嵌套

就像这一层

有序列表

1. 第一项
2. 第二项
3. 第三项
   1. 缩进的子项
   2. 缩进的子项
4. 第四项
  1. 第一项
  2. 第二项
  3. 第三项
    1. 缩进的子项
    2. 缩进的子项
  4. 第四项

无序列表

- 第一项
- 第二项
- 第三项
  - 缩进的子项
  - 缩进的子项
- 第四项

* 也可以改用星号
* 效果完全相同
* 不必使用短横线
  • 第一项
  • 第二项
  • 第三项
    • 缩进的子项
    • 缩进的子项
  • 第四项
  • 也可以改用星号
  • 效果完全相同
  • 不必使用短横线

行内代码

在句子中间使用 `code` 表示行内代码。

在句子中间使用 code 表示行内代码。

分隔线

三个或更多短横线

---

三个或更多星号

***

三个或更多下划线

___

三个或更多短横线


三个或更多星号


三个或更多下划线


图片

![MDUtil Logo](/images/example-image.png)

![带标题的 MDUtil Logo](/images/example-image.png "MDUtil Logo")

MDUtil Logo

带标题的 MDUtil Logo

扩展语法

以下元素在基础语法之上提供了更多能力,但并非所有 Markdown 应用都支持,使用前请确认目标平台。

表格

| 语法 | 说明 | 示例 |
| ----------- | ----------- | ------- |
| 标题 | 页面标题 | Header |
| 段落 | 正文文字 | Content |
| 列表 | 项目符号 | • Item |

| 对齐方式 | 左对齐 | 居中对齐 | 右对齐 |
| --- | :--- | :---: | ---: |
| 示例 | Left | Center | Right |
| 数值 | Left | Center | Right |
语法说明示例
标题页面标题Header
段落正文文字Content
列表项目符号• Item
对齐方式左对齐居中对齐右对齐
示例LeftCenterRight
数值LeftCenterRight

围栏代码块

```javascript
function hello() {
  console.log("Hello, world!");
}

// 注释
hello();
```

```python
def hello():
    print("Hello, world!")

# 注释
hello()
```
function hello() {
  console.log("Hello, world!");
}

// 注释
hello();
def hello():
    print("Hello, world!")

# 注释
hello()

脚注

这句话带有一个脚注。[^1]

[^1]: 这里是脚注的内容。

一段文字里也可以放多个脚注 [^2] [^3]。

[^2]: 第二个脚注的内容。
[^3]: 第三个脚注的内容。

这句话带有一个脚注。1

一段文字里也可以放多个脚注 2 3

Footnotes

  1. 这里是脚注的内容。

  2. 第二个脚注的内容。

  3. 第三个脚注的内容。

标题 ID

### 我的标题 {#custom-id}

我的标题 {#custom-id}

定义列表

第一个术语
: 第一个术语的解释。

第二个术语
: 第二个术语的解释。

第一个术语
: 第一个术语的解释。

第二个术语
: 第二个术语的解释。

删除线

~~这段文字带删除线~~

这段文字带删除线

任务列表

- [x] 写完引言
- [x] 补充示例
- [ ] 完成交互组件
- [ ] 补充文档
  • 写完引言
  • 补充示例
  • 完成交互组件
  • 补充文档

Emoji 表情

:smile: :+1: :rocket: :octocat:

:smile: :+1: :rocket: :octocat:

高亮

我需要把这段文字 ==高亮== 起来。

我需要把这段文字 ==高亮== 起来。

下标

H~2~O 是水的化学式。

H2O 是水的化学式。

上标

2^10^ 等于 1024。

2^10^ 等于 1024。

Markdown 语法逐项详解

Markdown 分为两层。基础语法来自 John Gruber 2004 年的原始设计,任何解析器都支持;扩展语法(表格、围栏代码块、任务列表、脚注等)主要来自 GitHub Flavored Markdown 和 CommonMark 扩展,各平台支持程度不一。下面按元素族整理,并标注最容易踩坑的规则。

标题、段落与换行

行首 1 到 6 个井号决定标题级别,井号后面的空格不能省略。段落之间必须空一行——大多数解析器会把单个换行当作空格。想在同一段内强制换行,就在行尾加两个空格或一个反斜杠。

markdown
# 一级标题
## 二级标题
###### 六级标题

这是第一段。

这是第二段,上一行行尾有两个空格  
所以这里另起了一行。

生成 h1、h2、h6 三个标题,两个独立段落,并在行尾有两个空格的位置插入 <br>。

强调:加粗、斜体与删除线

一个符号是斜体,两个是加粗,三个同时生效。对完整词语来说星号和下划线可互换,但只有星号支持在单词内部强调,因为下划线常出现在 snake_case 这类标识符里。双波浪号的删除线属于 GFM 扩展,不是核心语法。

markdown
*斜体* 和 _斜体_
**加粗** 和 __加粗__
***又粗又斜***
~~删除线~~
un**bel**ievable

分别渲染成 em、strong、strong 套 em、del,以及在单词中间加粗的效果。

列表、嵌套与任务列表

无序列表可用 -、* 或 +,有序列表用「数字 + 英文句点」,序号由渲染器自动重排,所以整段都写 1. 也是合法的。嵌套项缩进 2 到 4 个空格。在列表符号后写 [ ] 或 [x],在兼容 GitHub 的平台上就变成复选框。

markdown
- 第一项
- 第二项
  - 嵌套项

1. 第一步
1. 第二步
1. 第三步

- [x] 已完成
- [ ] 未完成

生成一个带一级嵌套的无序列表、一个自动编号为 1 到 3 的有序列表,以及一个勾选了首项的任务列表。

链接、图片与引用式写法

行内链接是「方括号写文字、圆括号写地址」,图片只需在前面加一个感叹号,方括号里的文字会成为 alt 描述。引用式写法把网址统一放到文末,长段落的源码会清爽很多。GFM 还会把裸露的网址自动变成链接。

markdown
[行内链接](https://example.com "可选标题")
![替代文字](/images/example.png)

[引用式链接][docs]

[docs]: https://example.com/docs

渲染出一个带 title 的超链接、一张带 alt 文本的图片,以及一个由文末定义解析出来的超链接。

行内代码、围栏代码块与转义

单个反引号表示行内代码;如果代码本身包含反引号,就用两个反引号包裹。围栏代码块用三个反引号,后面可以跟语言名以启用语法高亮。代码内部的一切都不会被当作 Markdown 解析,这也是展示字面符号最省事的办法。

markdown
先执行 `npm install`。
用 ``a `b` c`` 包裹含反引号的代码。

```js
function hello() {
  console.log("Hello");
}
```

\*这里不是斜体\*

渲染出两段行内代码、一个带高亮的 JavaScript 代码块,以及原样显示的 *这里不是斜体*。

表格、脚注与其他扩展语法

表格需要表头行和分隔行,在分隔行里加冒号控制对齐。脚注、定义列表、标题 ID、高亮、上下标都属于扩展语法:在 Obsidian 或文档生成器里很好用,但在不支持的平台上会原样显示成符号。

markdown
| 左对齐 | 居中 | 右对齐 |
| :--- | :---: | ---: |
| a | b | c |

这句话需要一个出处。[^1]

[^1]: 这里是脚注内容。

### 自定义锚点 {#custom-id}

渲染出一个左对齐、居中、右对齐的三列表格,一个跳转到文末注释的上标脚注标记,以及在支持标题 ID 的环境中 id 为 custom-id 的 h3。

各平台支持哪些 Markdown 语法

基础语法在任何地方都安全,真正会「翻车」的是扩展语法:同一份文件在 Obsidian 里完美渲染,粘到聊天工具里可能只剩一堆符号。使用「扩展语法」小节里的写法之前,先确认目标平台。

平台支持情况说明
GitHub / GitLab基础 + 大部分扩展支持表格、任务列表、删除线、脚注和自动链接;不支持定义列表、==高亮== 和上下标。
Discord部分支持支持标题、列表、引用、代码块、剧透和带文字的链接;不支持表格、图片和脚注。
Slack部分支持使用自有的 mrkdwn:*加粗*、_斜体_、~删除线~;不支持标题、表格和图片。
Obsidian基础 + 扩展额外支持 ==高亮==、标注块、[[双链]]、脚注和 LaTeX 公式。
Notion部分支持输入基础语法会即时转换;粘贴时脚注、定义列表和标题 ID 会被丢弃。
Reddit部分支持支持表格、删除线和 ^上标^;不支持脚注和标题 ID。
VS Code 预览基础 + 扩展内置预览支持 CommonMark 以及 GFM 表格、任务列表和数学公式,其余靠插件补齐。

如何使用这份 Markdown 速查表

  1. 定位语法元素

    需要通用写法就看「基础语法」,需要表格、脚注、任务列表这类能力就看「扩展语法」。

  2. 对照源码与效果

    每个卡片左边是 Markdown 源码,右边是实时渲染结果,用之前就能确认某个符号到底会产生什么。

  3. 复制片段

    点击卡片标题右侧的复制按钮,即可把该段语法原样复制到剪贴板。

  4. 粘贴并替换内容

    把示例文字换成你自己的内容;如果用到了扩展语法,先在兼容性表格里确认目标平台是否支持。

常见问题

Markdown 是什么?

Markdown 是一种轻量级标记语言,用普通标点来表达排版格式。John Gruber 在 2004 年设计它,目标是让源码本身就足够易读。解析器会把它转换成 HTML,所以同一个 .md 文件可以在 GitHub、Obsidian、静态站点生成器和很多聊天工具里渲染出一致的效果。

基础语法和扩展语法有什么区别?

基础语法是最初设计的那批元素:标题、段落、加粗、斜体、引用、列表、代码、分隔线、链接和图片,所有解析器都支持。扩展语法由 GitHub Flavored Markdown 带火,增加了表格、围栏代码块、脚注、定义列表、删除线、任务列表、Emoji 和标题 ID,各平台支持情况不一致。

GitHub 上的 Markdown 语法一样吗?

GitHub 使用 GitHub Flavored Markdown,它是 CommonMark 的超集。基础语法行为完全一致,GFM 另外提供表格、任务列表、删除线、脚注、网址自动链接以及围栏代码块的语法高亮。GFM 不支持定义列表、等号高亮和上下标。

Markdown 里怎么换行?

在行尾敲两个空格再回车,或者在行尾加一个反斜杠,都能在同一段内强制换行。单独一个换行在多数解析器里只相当于一个空格;如果空一行,得到的是新的段落而不是换行。

Markdown 表格怎么写?

先写一行用竖线分隔的表头,再写一行分隔线,然后每行一条数据。在分隔线里加冒号控制对齐::--- 左对齐,:---: 居中,---: 右对齐。表格属于扩展语法,需要兼容 GitHub Flavored Markdown 的解析器才能渲染。

Markdown 里可以直接写 HTML 吗?

大多数解析器都可以。行内标签(例如 kbd、sub)可以直接写在段落中,块级 HTML 需要前后各空一行。块级 HTML 内部通常不再解析 Markdown 语法;此外 GitHub 等平台会做安全过滤,脚本和 style 属性会被移除。

怎么转义 Markdown 的特殊符号?

在符号前加一个反斜杠即可。可转义的字符包括反斜杠、反引号、星号、下划线、花括号、方括号、圆括号、井号、加号、减号、英文句点、感叹号和竖线。把内容用反引号包成行内代码,同样可以让符号原样显示。

标题的井号后面必须加空格吗?

必须加。在 CommonMark 和 GitHub Flavored Markdown 中,#标题 会被当作普通文字,# 标题 才是标题。列表和引用同理:短横线后、大于号后都需要一个空格,块级标记才会被识别。

Markdown 文件用什么扩展名?

标准扩展名是 .md,.markdown 同样有效。它们都是纯文本,任何编辑器都能打开。GitHub 会自动渲染仓库根目录的 README.md;静态站点生成器一般要求 .md,当文件中还包含组件时则使用 .mdx。

为什么同一份 Markdown 在别的平台效果不一样?

因为各平台实现的语法子集不同。高亮、上标、下标、脚注和定义列表属于扩展而非标准语法,在 Obsidian 里正常显示的内容,到 GitHub 或 Reddit 可能只剩原始符号。需要跨平台流转的文档,尽量只用基础语法。