Extensions
The original Markdown is small on purpose. Over the years, flavours and plugins have added the things real documents need — tables, task lists, footnotes, math and diagrams. Below is an index of the most useful ones and how to write them. Support varies by processor, so check your tool.
GitHub Flavored Markdown (GFM)
By far the most widely used dialect. GFM is a strict superset of CommonMark that bundles several of the extensions below into one spec: tables, task lists, strikethrough, autolinks for bare URLs, and disallowed raw HTML filtering. If a tool says it "supports GitHub Markdown", you get all of these at once.
Tables
Build a table with pipes for columns and a row of dashes to separate the header. Colons in the separator set column alignment.
| Feature | Core | GFM |
|:--------|:----:|----:|
| Tables | No | Yes |
| Tasks | No | Yes |
| Feature | Core | GFM |
|---|---|---|
| Tables | No | Yes |
| Tasks | No | Yes |
Task lists
Add [ ] or [x] after a list marker to get interactive checkboxes —
the basis of every Markdown to-do list and pull-request checklist.
- [x] Write the draft
- [x] Review it
- [ ] Publish
- Write the draft
- Review it
- Publish
Diagrams & charts
Several extensions turn a fenced code block into a rendered diagram, so the source of the picture lives in your text file and versions alongside it. These are the most common:
Mermaid
Flowcharts, sequence, class, state, Gantt, pie and ER diagrams from a
```mermaid block. Rendered natively on GitHub, GitLab, Notion and many editors.
PlantUML
Text-based UML — sequence, component, deployment and more — embedded in a
```plantuml block via a plugin or server.
Vega-Lite charts
Data charts (bar, line, scatter) from a JSON spec in a fenced block, supported by Markdown viewers such as VS Code extensions and Observable.
Graphviz / DOT
Render dot graph descriptions as node-and-edge diagrams through plugins
like markdown-it-graphviz.
Math & formulas
Write LaTeX between dollar signs and have it typeset by KaTeX or MathJax. Single $…$ is inline; double
$$…$$ is a centred block. Now supported directly on GitHub and GitLab.
The mass–energy relation is $E = mc^2$.
$$
\int_0^\infty e^{-x}\,dx = 1
$$
Footnotes, callouts & definition lists
Footnotes
Reference a note with [^1] and define it anywhere in the document.
Markdown was created in 2004.[^1]
[^1]: By John Gruber and Aaron Swartz.
Admonitions / callouts
Highlighted note, warning and tip boxes. Syntax varies: GitHub uses
> [!NOTE] blockquotes; Obsidian uses > [!warning]; MkDocs and
Python-Markdown use !!! note.
> [!NOTE]
> Useful information that users should know.
> [!WARNING]
> Something that could cause a problem.
Definition lists
Pair a term with one or more definitions (PHP Markdown Extra, kramdown).
Markdown
: A lightweight markup language.
: Created by John Gruber in 2004.
More handy extensions
Front matter
A YAML (or TOML) metadata block fenced by --- at the top of a file — title,
date, tags — read by static-site generators.
Auto table of contents
A [[toc]] or [TOC] marker is replaced with a generated,
linked table of contents from your headings.
Emoji shortcodes
Type :rocket: and get 🚀. Supported on GitHub, Slack, Discord and many
editors.
Heading anchors / IDs
Add {#custom-id} after a heading, or auto-generate slugs so every heading is
directly linkable.
Highlight & sub/superscript
==marked== for highlight, H~2~O and x^2^ for
sub- and superscript (Pandoc, markdown-it plugins).
Abbreviations
Define *[HTML]: HyperText Markup Language once and every match gets a
tooltip (PHP Markdown Extra).
Which of these work depends entirely on your processor. The tools directory notes what each one supports.