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
To create a table in Markdown, separate the columns with pipes and add a row of dashes under the header. Colons in that separator row set the 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.
Front matter
Front matter is a metadata block at the very top of a file, fenced by --- and
written as YAML (or sometimes TOML). Static-site generators like Jekyll and Hugo read it to
set values like the page title, date and tags. The block itself is not shown in the
output.
---
title: My First Post
date: 2026-07-20
tags: [markdown, docs]
draft: false
---
Table of contents
Some processors replace a [[toc]] or [TOC] marker with a linked
table of contents built from the headings on the page.
[TOC]
# Install
## Requirements
## Setup
More handy extensions
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.