Markdown Footnotes
Every way to write footnotes in Markdown — reference syntax, inline syntax, multi-paragraph notes, code in footnotes, and what works on GitHub, Pandoc, Obsidian, and beyond.
Footnotes are an extension to Markdown, not part of CommonMark. GitHub Flavored Markdown and Pandoc support them; Reddit, Discord, and Notion do not.
Reference Syntax
The standard footnote pattern has two parts: a marker like [^1] placed inline where you want the superscript, and a definition like [^1]: on its own line at the end of the document. The renderer collects all definitions and renders them at the bottom.
Markdown is easy to learn.[^1] It was created in 2004.[^origin]
[^1]: Most people pick up the basics in 10 minutes.
[^origin]: John Gruber and Aaron Swartz created Markdown together.Markdown is easy to learn.[1] It was created in 2004.
- 1.Most people pick up the basics in 10 minutes.
- 2.John Gruber and Aaron Swartz created Markdown together.
[^99] first and [^7] second — they render as 1 and 2.Multi-paragraph Footnotes
Footnotes can hold multiple paragraphs, lists, and even code blocks. Indent every line that should belong to the footnote with 4 spaces (or one tab). A blank, indented line separates paragraphs inside the footnote.
Here's a complex footnote.[^longnote]
[^longnote]: First paragraph of the footnote.
Second paragraph — indent with 4 spaces to keep it inside the footnote.
`code blocks work too`
More content here.Here's a complex footnote.[1]
- 1.First paragraph of the footnote.Second paragraph — indent with 4 spaces to keep it inside the footnote.
code blocks work tooMore content here.
Inline Footnotes (Pandoc only)
Pandoc supports a shorter inline syntax: ^[note text] placed exactly where the footnote should appear — no separate definition needed. This is convenient for short notes but is not supported by GitHub, Obsidian, or most other renderers.
This is the main text.^[Inline footnotes are written right where they appear.]
Pandoc supports this — GitHub does not.This is the main text.[1] Pandoc supports this — GitHub does not.
- 1.Inline footnotes are written right where they appear.
^[note] renders literally as the characters ^[note]. Use the reference style on GitHub.Code Blocks Inside Footnotes
Indented code blocks and fenced code blocks both work inside footnote definitions. Add 4 leading spaces of indentation to every line that belongs to the footnote — including the fence lines.
The function returns a Promise.[^api]
[^api]: See the `fetch()` API:
```js
const data = await fetch(url)
```Word Identifiers Instead of Numbers
Identifiers can be words, numbers, or any combination — as long as they don't contain spaces, tabs, or the characters ^, [, or ]. The renderer still numbers the output sequentially — word identifiers exist purely to keep your source readable.
Bold uses asterisks.[^bold] Italic uses one asterisk.[^italic]
[^bold]: Two asterisks: **like this**.
[^italic]: One asterisk: *like this*.Bold uses asterisks.[1] Italic uses one asterisk.
- 1.Two asterisks: like this.
- 2.One asterisk: like this.
Common Mistakes
Footnotes have a few specific failure modes. If your footnote is rendering as raw text, one of these is almost always the cause.
Missing the colon
The definition needs a colon directly after the closing bracket: [^1]: text — not [^1] text.
Spaces in the identifier
[^my note] is invalid. Use a hyphen, underscore, or dot: [^my-note].
Definition inside a list or quote
Footnote definitions must live at the document root. Definitions placed inside a > blockquote, list, or table are ignored by most renderers.
Using inline syntax on GitHub
^[inline note] only works in Pandoc. On GitHub it renders as literal text. Use the reference style on GitHub, GitLab, and Obsidian.
Platform Support
Footnotes are an extension to Markdown, not part of CommonMark. Support varies — here is what works where.
| Platform | Supported? | Notes |
|---|---|---|
| GitHub (issues, PRs, READMEs) | Yes | Added in 2021. Multiline footnotes work with 2-space line endings. |
| GitHub Wikis | No | Footnotes are not supported in GitHub wiki pages. |
| GitLab | Yes | Reference-style footnotes render in markdown files and issues. |
| Pandoc | Yes | Full support including inline (^[note]) and multi-paragraph footnotes. |
| Obsidian (Reading view) | Yes | Renders correctly in Reading mode. |
| Obsidian (Live Preview) | Partial | Sometimes shows the raw caret syntax instead of rendering inline. |
| VS Code preview | Yes | Renders via the built-in markdown preview. |
| Notion | No | No native footnote syntax — Notion uses a separate inline mention system. |
| Reddit (old + new) | No | Footnote syntax is rendered as plain text — emulate with regular links. |
| Discord | No | Discord does not support footnotes — emulate with subtext (-#). |
| Slack | No | No footnote syntax in Slack messages or canvases. |
| Standard Markdown / CommonMark | No | Footnotes are an extension, not part of the CommonMark spec. |
Frequently Asked Questions
How do I write a footnote in Markdown?
Use [^1] inline at the spot you want the marker, then define the note on its own line elsewhere with [^1]: Your footnote text. The number is just an identifier — it does not have to be sequential, and the renderer will auto-number the output.
Does GitHub support Markdown footnotes?
Yes. GitHub added footnote support in September 2021. Footnotes work in issues, pull request descriptions and comments, READMEs, and most other Markdown fields. They are not supported in GitHub Wikis.
What's the difference between reference and inline footnotes?
Reference footnotes use two parts — a marker like [^1] inline, and a definition like [^1]: text on its own line. Inline footnotes use ^[note text here] in a single place. Inline footnotes are simpler but only Pandoc supports them; GitHub, Obsidian, and most other renderers require the reference style.
Can footnote identifiers be words instead of numbers?
Yes. [^bignote] or [^source-2024] both work as long as the identifier has no spaces, tabs, or the characters ^, [, or ]. The renderer still numbers footnotes sequentially in the output — the identifier is only for matching the reference to the definition in your source.
How do I add multiple paragraphs to a footnote?
After the first line of the definition, add a blank line, then indent the following paragraphs with 4 spaces (or one tab). You can include code blocks, lists, and most other block content this way.
Why is my footnote rendering as plain text?
Either the renderer does not support footnotes (Reddit, Discord, Notion, Slack, vanilla CommonMark), or you are missing the colon and space in the definition. The reference uses [^1] and the definition uses [^1]: with a colon and space before the text.
Why aren't footnotes working in Obsidian Live Preview?
Obsidian's Live Preview mode does not always render footnotes inline — you may see the raw [^1] syntax. Switch to Reading view to see the rendered output. Footnotes are also not supported inside Callouts or Tables in Obsidian.
Can I put a footnote inside a table or blockquote?
The reference marker [^1] usually works inside tables and blockquotes, but the definition must be at the document root — outside any table, list, or blockquote. Some renderers (Obsidian, parts of Pandoc) refuse to render the marker inside tables at all.
How do you write footnotes on Reddit, Discord, or Notion?
These platforms do not support footnote syntax. The standard workaround is to use superscript or a regular link. On Reddit, write ^1 or ^([1]) for the marker and put a numbered list at the bottom. On Discord, use subtext (-#) for the note. On Notion, link to a callout block or use Notion's native footnote-like inline references.
Related Markdown Guides
Footnotes are an extended-syntax feature. For the rest of the Markdown surface area: