Markdown 语法速查表
一页看完所有 Markdown 语法:左边是源码,右边是实时渲染结果,每个代码块都可以一键复制。
Markdown 的基本语法有哪些?
Markdown 用普通标点来表达格式:# 表示标题,**文字** 加粗,*文字* 倾斜,> 引用,- 或 1. 生成列表,反引号包裹代码,[文字](链接) 插入链接, 插入图片。扩展语法在此之上增加表格、围栏代码块、任务列表、脚注和删除线。
# 一级标题
**加粗** *斜体* ~~删除线~~
> 引用内容
- 无序列表
1. 有序列表
- [ ] 任务项
`行内代码`
[链接](https://example.com)

| 列 A | 列 B |
| ---- | ---- |
| 单元格 | 单元格 |依次渲染出一级标题,加粗、斜体和带删除线的文字,一段引用,无序、有序和复选框列表,行内代码、超链接、图片,以及一个两列表格。
在线使用 Markdown 语法速查表
基础语法
以下元素来自 John Gruber 最初的设计文档,所有 Markdown 应用都支持。
标题
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题一级标题
二级标题
三级标题
四级标题
五级标题
六级标题
段落
第一段。段落之间用一个空行分隔。
第二段。可以混排 *斜体*、**加粗** 和 `等宽字体`。列表
写起来是这样:
* 第一条
* 第二条
* 第三条第一段。段落之间用一个空行分隔。
第二段。可以混排 斜体、加粗 和 等宽字体。列表
写起来是这样:
- 第一条
- 第二条
- 第三条
加粗
**加粗文字**
__加粗文字__加粗文字
加粗文字
斜体
*斜体文字*
_斜体文字_斜体文字
斜体文字
粗体加斜体
***又粗又斜的文字***
___又粗又斜的文字___
__*又粗又斜的文字*__
**_又粗又斜的文字_**又粗又斜的文字
又粗又斜的文字
又粗又斜的文字
又粗又斜的文字
引用块
> 这是一段引用
>
> 引用可以跨越多行
> 引用还可以嵌套
> > 就像这一层这是一段引用
引用可以跨越多行
引用还可以嵌套
就像这一层
有序列表
1. 第一项
2. 第二项
3. 第三项
1. 缩进的子项
2. 缩进的子项
4. 第四项- 第一项
- 第二项
- 第三项
- 缩进的子项
- 缩进的子项
- 第四项
无序列表
- 第一项
- 第二项
- 第三项
- 缩进的子项
- 缩进的子项
- 第四项
* 也可以改用星号
* 效果完全相同
* 不必使用短横线- 第一项
- 第二项
- 第三项
- 缩进的子项
- 缩进的子项
- 第四项
- 也可以改用星号
- 效果完全相同
- 不必使用短横线
行内代码
在句子中间使用 `code` 表示行内代码。在句子中间使用 code 表示行内代码。
分隔线
三个或更多短横线
---
三个或更多星号
***
三个或更多下划线
___三个或更多短横线
三个或更多星号
三个或更多下划线
链接
图片



扩展语法
以下元素在基础语法之上提供了更多能力,但并非所有 Markdown 应用都支持,使用前请确认目标平台。
表格
| 语法 | 说明 | 示例 |
| ----------- | ----------- | ------- |
| 标题 | 页面标题 | Header |
| 段落 | 正文文字 | Content |
| 列表 | 项目符号 | • Item |
| 对齐方式 | 左对齐 | 居中对齐 | 右对齐 |
| --- | :--- | :---: | ---: |
| 示例 | Left | Center | Right |
| 数值 | Left | Center | Right || 语法 | 说明 | 示例 |
|---|---|---|
| 标题 | 页面标题 | Header |
| 段落 | 正文文字 | Content |
| 列表 | 项目符号 | • Item |
| 对齐方式 | 左对齐 | 居中对齐 | 右对齐 |
|---|---|---|---|
| 示例 | Left | Center | Right |
| 数值 | Left | Center | Right |
围栏代码块
```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()
脚注
标题 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 个井号决定标题级别,井号后面的空格不能省略。段落之间必须空一行——大多数解析器会把单个换行当作空格。想在同一段内强制换行,就在行尾加两个空格或一个反斜杠。
# 一级标题
## 二级标题
###### 六级标题
这是第一段。
这是第二段,上一行行尾有两个空格
所以这里另起了一行。生成 h1、h2、h6 三个标题,两个独立段落,并在行尾有两个空格的位置插入 <br>。
强调:加粗、斜体与删除线
一个符号是斜体,两个是加粗,三个同时生效。对完整词语来说星号和下划线可互换,但只有星号支持在单词内部强调,因为下划线常出现在 snake_case 这类标识符里。双波浪号的删除线属于 GFM 扩展,不是核心语法。
*斜体* 和 _斜体_
**加粗** 和 __加粗__
***又粗又斜***
~~删除线~~
un**bel**ievable分别渲染成 em、strong、strong 套 em、del,以及在单词中间加粗的效果。
列表、嵌套与任务列表
无序列表可用 -、* 或 +,有序列表用「数字 + 英文句点」,序号由渲染器自动重排,所以整段都写 1. 也是合法的。嵌套项缩进 2 到 4 个空格。在列表符号后写 [ ] 或 [x],在兼容 GitHub 的平台上就变成复选框。
- 第一项
- 第二项
- 嵌套项
1. 第一步
1. 第二步
1. 第三步
- [x] 已完成
- [ ] 未完成生成一个带一级嵌套的无序列表、一个自动编号为 1 到 3 的有序列表,以及一个勾选了首项的任务列表。
链接、图片与引用式写法
行内链接是「方括号写文字、圆括号写地址」,图片只需在前面加一个感叹号,方括号里的文字会成为 alt 描述。引用式写法把网址统一放到文末,长段落的源码会清爽很多。GFM 还会把裸露的网址自动变成链接。
[行内链接](https://example.com "可选标题")

[引用式链接][docs]
[docs]: https://example.com/docs渲染出一个带 title 的超链接、一张带 alt 文本的图片,以及一个由文末定义解析出来的超链接。
行内代码、围栏代码块与转义
单个反引号表示行内代码;如果代码本身包含反引号,就用两个反引号包裹。围栏代码块用三个反引号,后面可以跟语言名以启用语法高亮。代码内部的一切都不会被当作 Markdown 解析,这也是展示字面符号最省事的办法。
先执行 `npm install`。
用 ``a `b` c`` 包裹含反引号的代码。
```js
function hello() {
console.log("Hello");
}
```
\*这里不是斜体\*渲染出两段行内代码、一个带高亮的 JavaScript 代码块,以及原样显示的 *这里不是斜体*。
表格、脚注与其他扩展语法
表格需要表头行和分隔行,在分隔行里加冒号控制对齐。脚注、定义列表、标题 ID、高亮、上下标都属于扩展语法:在 Obsidian 或文档生成器里很好用,但在不支持的平台上会原样显示成符号。
| 左对齐 | 居中 | 右对齐 |
| :--- | :---: | ---: |
| a | b | c |
这句话需要一个出处。[^1]
[^1]: 这里是脚注内容。
### 自定义锚点 {#custom-id}渲染出一个左对齐、居中、右对齐的三列表格,一个跳转到文末注释的上标脚注标记,以及在支持标题 ID 的环境中 id 为 custom-id 的 h3。
各平台支持哪些 Markdown 语法
基础语法在任何地方都安全,真正会「翻车」的是扩展语法:同一份文件在 Obsidian 里完美渲染,粘到聊天工具里可能只剩一堆符号。使用「扩展语法」小节里的写法之前,先确认目标平台。
| 平台 | 支持情况 | 说明 |
|---|---|---|
| GitHub / GitLab | 基础 + 大部分扩展 | 支持表格、任务列表、删除线、脚注和自动链接;不支持定义列表、==高亮== 和上下标。 |
| Discord | 部分支持 | 支持标题、列表、引用、代码块、剧透和带文字的链接;不支持表格、图片和脚注。 |
| Slack | 部分支持 | 使用自有的 mrkdwn:*加粗*、_斜体_、~删除线~;不支持标题、表格和图片。 |
| Obsidian | 基础 + 扩展 | 额外支持 ==高亮==、标注块、[[双链]]、脚注和 LaTeX 公式。 |
| Notion | 部分支持 | 输入基础语法会即时转换;粘贴时脚注、定义列表和标题 ID 会被丢弃。 |
| 部分支持 | 支持表格、删除线和 ^上标^;不支持脚注和标题 ID。 | |
| VS Code 预览 | 基础 + 扩展 | 内置预览支持 CommonMark 以及 GFM 表格、任务列表和数学公式,其余靠插件补齐。 |
如何使用这份 Markdown 速查表
定位语法元素
需要通用写法就看「基础语法」,需要表格、脚注、任务列表这类能力就看「扩展语法」。
对照源码与效果
每个卡片左边是 Markdown 源码,右边是实时渲染结果,用之前就能确认某个符号到底会产生什么。
复制片段
点击卡片标题右侧的复制按钮,即可把该段语法原样复制到剪贴板。
粘贴并替换内容
把示例文字换成你自己的内容;如果用到了扩展语法,先在兼容性表格里确认目标平台是否支持。
常见问题
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 可能只剩原始符号。需要跨平台流转的文档,尽量只用基础语法。