How to Add Footnotes in Markdown

Add a footnote in Markdown with a caret reference in the text — [^1] — and a matching definition anywhere in the document: [^1]: The footnote text. Renderers turn the reference into a superscript link and collect all definitions at the bottom of the page.

Platform Support

GitHubsupportedGitLabsupportedObsidiansupportedDiscordnot supportedSlacknot supportedNotionnot supported

Footnotes are an extended syntax (popularized by PHP Markdown Extra and adopted by GFM in 2021), so support is good on document-oriented platforms and absent in chat apps. The label after the caret does not have to be a number: [^note], [^source-2], and [^citation] all work, and descriptive labels are easier to maintain in long documents. Whatever you write, the renderer replaces labels with sequential numbers in reading order — the labels are for you, the numbering is automatic.

Definitions can live anywhere in the file; the renderer moves them to a footnotes section at the end regardless of where you define them. Keeping each definition near the paragraph that references it makes the source easier to edit, while collecting them all at the bottom mirrors the rendered output — both styles are common. Each rendered footnote gets a back-link (usually a small arrow) returning the reader to the reference point, and you can reference the same footnote label from multiple places in the text.

Multi-paragraph footnotes work by indenting continuation content four spaces under the definition. That indented content can include lists and code blocks, though keeping footnotes short is kinder to readers — if a note grows past a couple of sentences, it probably belongs in the main text or an appendix section. One syntax constraint: the definition must start at the beginning of a line ([^1]: text), and there is no space between the brackets and the colon.

Where footnotes are unsupported — Discord, Slack, Notion, and many lightweight renderers — the syntax degrades poorly: readers see raw [^1] markers and an orphaned definition line. If a document needs to travel to those platforms, fall back to manual notes (superscript numbers via HTML where allowed, or simple parenthetical asides) or restructure to avoid notes entirely.

Examples

Footnote
Markdown
Here's a sentence with a footnote.[^1]

[^1]: This is the footnote content.
Output

Here's a sentence with a footnote.1


  1. This is the footnote content.

Add footnotes to your document.

Named labels
Markdown
The benchmark ran on commodity hardware.[^setup]

[^setup]: Apple M3, 16 GB RAM, macOS 15, Node 22.
Output

The benchmark ran on commodity hardware.1


  1. Apple M3, 16 GB RAM, macOS 15, Node 22.

Labels can be words — the renderer numbers them automatically in reading order.

Multi-paragraph footnote
Markdown
A claim that needs context.[^1]

[^1]: First paragraph of the note.

    Indent continuation paragraphs four spaces to keep them in the footnote.
Output

A claim that needs context.1

Indent continuation paragraphs four spaces to keep them in the footnote.

  1. First paragraph of the note.

Common Mistakes

Wrong
[^1] : Footnote with a space before the colon
Right
[^1]: Footnote text

The colon must directly follow the closing bracket. A space in between stops the line from being parsed as a definition.

Wrong
A reference [^2] with no matching definition
Right
Every [^label] needs a [^label]: definition line

Orphaned references render as literal [^2] text. Each reference label must have a definition somewhere in the document.

Wrong
Continuation paragraph not indented under the definition
Right
Indent additional footnote paragraphs four spaces

Unindented text after a definition is normal body text — only indented content stays inside the footnote.

Platform Notes

GitHub

Supported in READMEs, issues, and discussions since 2021. Footnotes render at the bottom with automatic numbering and back-links.

Obsidian

Full support, including inline footnotes with the ^[inline note text] shorthand that needs no separate definition.

Notion

No footnote support — the syntax renders literally. Workarounds include toggle blocks or superscript text.

Discord

Not supported; [^1] appears as plain text in messages.

Frequently Asked Questions

How do I add a footnote in Markdown?

Place [^1] where the reference should appear and add a definition line anywhere in the document: [^1]: The footnote text. The renderer numbers and collects footnotes automatically.

Do footnote labels have to be numbers?

No — [^note] or [^source] work fine. Renderers replace labels with sequential numbers in reading order, so descriptive labels cost nothing and are easier to maintain.

Where should I put footnote definitions?

Anywhere — the renderer always displays them at the bottom of the document. Defining each footnote near its reference keeps editing easy; grouping them at the end mirrors the output.

Why are my footnotes showing as plain [^1] text?

The platform does not support the footnote extension (Notion, Discord, and Slack do not), or your static site generator needs the footnotes plugin enabled in its Markdown parser.

Can a footnote contain multiple paragraphs or code?

Yes — indent the continuation content four spaces under the definition line. Lists and code blocks work inside footnotes on platforms with full support.

Related Syntax

Related Tools