Tutorials 31 min read

The Complete Markdown Cheat Sheet (2026)

N[email protected]
markdownreferencecheat-sheetgfmsyntax

This 2026 reference documents every markdown element in active use — basic syntax, GitHub Flavored Markdown extensions, YAML/TOML/JSON frontmatter, KaTeX and MathJax math, Mermaid diagrams, wiki-links, Obsidian callouts, and the rendering quirks that quietly break documents across platforms. Twenty-two years after John Gruber's first release 1, the base spec is essentially done — what changes now is the periphery. Everything below assumes CommonMark 0.31.2 2 and GFM 0.29-gfm 3 as the floor.

Gruber released Markdown 1.0 on March 9, 2004 1 and announced it six days later on Daring Fireball 4. CommonMark, the formal specification maintained by John MacFarlane (Pandoc's author) and a small group of GitHub, Stack Overflow, and Discourse engineers, has been at version 0.31.2 since January 28, 2024 2. GitHub Flavored Markdown is a strict superset of CommonMark and adds the five features most writers reach for first: tables, task lists, strikethrough, autolinks, and alerts 3. The Internet Engineering Task Force formalized the format with RFC 7763 in March 2016, registering text/markdown as an official media type 5, and RFC 7764 catalogued the design philosophies of the major variants 6. Steph Ango, CEO of Obsidian, frames the durability case bluntly: "In the fullness of time, the files you create are more important than the tools you use to create them. Apps are ephemeral, but your files have a chance to last" 7. Markdown is the format that bet on that thesis and won.

What is Markdown and who uses it?

Markdown is a lightweight markup language that converts plain-text conventions — asterisks, hyphens, square brackets, hash signs — into structured HTML. John Gruber wrote it in 2004; Aaron Swartz was his sounding board during development 1. By 2026, every major writing surface a working professional touches understands it: GitHub READMEs, Reddit comments, Discord messages, Notion exports, Obsidian vaults, Slack canvases, ChatGPT responses, and most static-site generators.

Gruber's original announcement on Daring Fireball, dated March 15, 2004, described Markdown as a tool that "allows web writers to compose text using a simple, readable, plain text formatting syntax" 4. The design premise — readability before semantics — explains why a syntax built in 2004 powers ChatGPT outputs, GitHub READMEs, Reddit threads, Obsidian vaults, Discord chat, and almost every static-site generator written since 2010.

External reference: Daring Fireball: Markdown.

Basic markdown syntax in 2026

Basic markdown covers ten elements every writer uses daily — headings, bold, italic, blockquotes, ordered lists, unordered lists, code, horizontal rules, links, and images 8. These constructs are stable across every major flavor (CommonMark, GitHub Flavored Markdown, Pandoc, Obsidian, MultiMarkdown), so anything written with them renders the same way in any modern parser. Anchor each example to the version pins above and skim the table at the foot of the post for tool-specific support.

Headings

Two styles are supported. ATX headings prefix the line with one to six hash characters. Setext headings underline the title text with equals signs (level 1) or hyphens (level 2) 9.

# H1 — main title
## H2 — section
### H3 — sub-section
#### H4
##### H5
###### H6 — finest grain

Setext H1
=========

Setext H2
---------

Always include a space between the hash and the heading text, and surround headings with blank lines 10. ATX is the dominant convention in 2026 — it scales to six levels (Setext supports only two) and produces predictable output across every renderer.

External reference: CommonMark 0.31.2 spec — ATX headings.

Bold, italic, and emphasis

Wrap text in single asterisks (or underscores) for italic, double for bold, triple for both 8.

*italic* or _italic_
**bold** or __bold__
***bold italic*** or ___bold italic___

For emphasis inside a word, use asterisks only. Underscores are inconsistent mid-word because most parsers treat un_frigging_believable as plain text rather than emphasis 8. Pick one delimiter for a project and keep it; mixed delimiters in the same list or paragraph trip linters and reviewers.

Blockquotes

Prefix each line with a > character. Empty lines between paragraphs inside the quote need their own >. Nested quotes stack with multiple > characters 9.

> A quote on a single line.
>
> A second paragraph inside the same quote.
>
> > A nested quote.

Ordered and unordered lists

Unordered lists use a hyphen, asterisk, or plus sign. Ordered lists use any number followed by a period — the renderer auto-numbers in output. Indent four spaces (or one tab) for nesting 11.

- First item
- Second item
  - Nested item
  - Another nested item
- Third item

1. Step one
2. Step two
3. Step three

Don't mix delimiters in the same list; pick - or * and keep it consistent for readability and lint compliance.

Inline code, code blocks, and fenced code

Inline code uses single backticks: like this. Code blocks come in two forms. The original 2004 syntax indents the block four spaces. CommonMark 0.31.2 prefers fenced blocks — three backticks above and below, with an optional language identifier on the opening fence for syntax highlighting 2.

Use `printf()` inline.

```python
def hello(name: str) -> None:
    print(f"hello, {name}")
```

Every major renderer in 2026 (GitHub, GitLab, Obsidian, VS Code preview, Notion, Slack canvases, ChatGPT output) supports fenced code with language tags. Common identifiers include js, ts, py, rb, go, rust, sh, bash, sql, html, css, json, yaml, md, and diff.

Horizontal rules

Three or more hyphens, asterisks, or underscores on their own line, surrounded by blank lines.

---
***
___

Inline links place text in square brackets followed by the URL in parentheses. Reference links keep URLs at the bottom of the document, which keeps prose readable when the same URL appears multiple times 9.

[MNMNOTE](https://mnmnote.com)

[link text][ref]

[ref]: https://example.com "Optional title"

Wrap a bare URL in angle brackets for an automatic link: <https://example.com>. URL-encode spaces (%20) and parentheses (%28, %29) — unescaped characters break many parsers 8.

Images

Images use the same syntax as links with a leading exclamation mark. Alt text is not optional — it is read by screen readers, indexed by search engines, and displayed when the image fails to load 8.

![A handwritten note on textured paper](/images/note.jpg "Notebook by the window")

For an image that links to another page, nest the image inside a link: [![alt](image.jpg)](https://target.url).

External reference: Markdown Guide — basic syntax.

Intermediate syntax: tables, footnotes, heading IDs

Intermediate syntax covers the three constructs most writers learn second: GitHub Flavored Markdown tables, footnotes, and heading IDs. Each is part of GFM 0.29-gfm (April 6, 2019) or the broader extended-syntax conventions documented by Pandoc and the Markdown Guide 3 8. Together they cover the gap between "writing prose" and "shipping a reference document."

Tables

GFM tables consist of a header row, a delimiter row, and zero or more data rows. The delimiter row's hyphens and colons set column alignment 12.

| Feature        | CommonMark | GFM    | Obsidian |
| :------------- | :--------: | :----- | -------: |
| Tables         |     —      | yes    | yes      |
| Task lists     |     —      | yes    | yes      |
| Wiki-links     |     —      | —      | yes      |
| Math (KaTeX)   |     —      | yes    | yes      |

Alignment: :--- left, ---: right, :---: center, --- default. Header and delimiter row must have the same cell count, or the table is silently treated as paragraph text. Pipes inside cells are escaped with \|.

Pandoc supports four table styles beyond GFM's pipe tables: simple tables, grid tables (which allow block content like nested lists), and multi-line tables 13. For most writers, GFM pipe tables are sufficient; reach for grid tables only when a cell needs a list or paragraph.

External reference: GFM tables extension.

Footnotes

Footnotes use a reference at the citation point and a definition anywhere in the document. They are part of Markdown Extra, Pandoc, GFM (as of 2021), and most static-site renderers 8.

A claim that needs a citation.[^source]

[^source]: Full citation goes here, with URL and date.

Identifiers can be numbers ([^1]) or words ([^source]). The renderer collects all definitions at the bottom of the page in source order regardless of where they appear in the manuscript.

Heading IDs

The extended-syntax convention {#custom-id} appended to a heading sets the anchor target 8.

### Pricing FAQ {#pricing}

The resulting HTML is <h3 id="pricing">Pricing FAQ</h3>. Link to it with [See pricing](#pricing). GitHub auto-generates anchors from heading text by lowercasing and replacing whitespace with hyphens; explicit IDs only matter when a renderer doesn't auto-anchor or when the heading text changes frequently.

GitHub Flavored Markdown extensions

GitHub Flavored Markdown is a strict superset of CommonMark and adds five primary extensions: tables, task list items, strikethrough, autolinks, and disallowed raw HTML 3. A sixth addition — alerts (admonition-style callouts) — was announced on December 14, 2023 and is the most-adopted GFM change in years 14. Together these features power the README economy on a platform that hosts over 100 million developers 15.

Task lists

Task lists are checkbox-prefixed list items. They render as interactive checkboxes on GitHub issues, PRs, wikis, and .md files 3.

- [x] Draft the post
- [ ] Run GEO checklist
- [ ] Schedule cross-posts

The exact syntax is hyphen, space, bracket-group, space, text. Use [x] (lowercase) for checked. GitHub renders the checkboxes as clickable in some surfaces; other parsers render them as plain <input> elements.

Strikethrough

Wrap text in double tildes for strikethrough 3.

The first ~~draft~~ revision shipped Thursday.

GFM autolinks recognize bare URLs and email addresses without angle brackets 3. Writing https://mnmnote.com in a sentence produces a hyperlink in GFM but not in strict CommonMark.

Alerts

Alerts use a blockquote prefix with one of five bracketed type tags. They were announced December 14, 2023 and render with distinctive colors and icons on GitHub 14.

> [!NOTE]
> Useful context the reader should keep in mind.

> [!TIP]
> A suggestion that helps without being mandatory.

> [!IMPORTANT]
> Information the reader must not miss.

> [!WARNING]
> A risk with potential negative consequences.

> [!CAUTION]
> The strongest signal — destructive or irreversible.

GitHub alerts only render on GitHub. Cross-platform documents that need the same visual emphasis fall back to bold prefixes ("Note:") or Obsidian-style callouts (see below).

Disallowed raw HTML and the GFM superset rule

GFM strips a small list of HTML tags it considers unsafe in user-generated content — <title>, <textarea>, <style>, <xmp>, <iframe>, <noembed>, <noframes>, <script>, <plaintext>. Everything else passes through 3. This is the security floor GitHub enforces; consumer-facing applications sanitize beyond it.

External reference: GitHub Flavored Markdown spec 0.29-gfm.

What is markdown frontmatter? YAML, TOML, JSON

Frontmatter is a metadata block at the top of a markdown document, fenced by delimiters that signal the serialization format: --- for YAML, +++ for TOML, and {} for JSON 16. Static-site generators (Jekyll, Hugo, Astro, Next.js, Eleventy) parse frontmatter to set title, date, layout, tags, and arbitrary custom fields without polluting the body. The convention is older than most static-site generators; it dates to Jekyll's first release in 2008.

YAML frontmatter

YAML 1.2.2 — released October 1, 2021 — is the dominant frontmatter format 17. It is a strict superset of JSON, designed "to be human-friendly and work well with modern programming languages for common everyday tasks."

---
title: The Complete Markdown Cheat Sheet (2026)
slug: the-complete-markdown-cheat-sheet
date: 2026-05-15
author: MNMNOTE
tags: [markdown, reference, cheat-sheet]
draft: false
description: A 2026 reference for every markdown element a writer touches.
---

Jekyll's documentation states: "Any file that contains a YAML front matter block will be processed by Jekyll as a special file" 18. Hugo accepts the same block with the same --- fences, plus TOML and JSON alternatives 16.

TOML frontmatter

TOML uses +++ fences. Numbers and dates need no quoting; strings are single-quoted. Hugo lists TOML as a first-class option alongside YAML 16.

+++
title = 'The Complete Markdown Cheat Sheet (2026)'
date = 2026-05-15T08:00:00-05:00
tags = ['markdown', 'reference']
draft = false
+++

TOML is preferred when configuration is complex and YAML's significant whitespace becomes a liability. For most blog posts, YAML wins on familiarity.

JSON frontmatter

JSON frontmatter uses literal {} braces with no fences 16. Rarely used in human-authored content but common in machine-generated pipelines.

{
  "title": "The Complete Markdown Cheat Sheet (2026)",
  "date": "2026-05-15",
  "tags": ["markdown", "reference"]
}

External reference: Hugo — front matter formats.

How to write math in markdown (KaTeX, MathJax)

Most modern markdown renderers support LaTeX-style math expressions delivered through one of two libraries: KaTeX or MathJax. GitHub adopted MathJax across .md files, issues, discussions, pull requests, and wikis 19. Pandoc emits both. Inline math uses single dollar signs; block math uses double dollar signs or a fenced math code block. Escape dollars in prose with \$ to avoid accidental rendering.

Inline math

Einstein wrote $E = mc^2$ and Euler wrote $e^{i\pi} + 1 = 0$.

Block math

$$
\int_{-\infty}^{\infty} e^{-x^2} \, dx = \sqrt{\pi}
$$

Or, GitHub's alternative fence form 19:

```math
\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}
```

KaTeX vs MathJax

KaTeX renders synchronously with no page reflow and ships in a few hundred kilobytes of CSS, JavaScript, and web fonts 20. MathJax 3 closed most of the rendering-speed gap and remains the broader-compatibility choice because it accepts MathML and AsciiMath input and emits HTML, SVG, and MathML output with strong accessibility tooling 20. For markdown content delivered through static-site generators in 2026, KaTeX is the common default — smaller, faster, sufficient for most non-research math. MathJax is the right call when accessibility, MathML interchange, or exotic LaTeX macros matter.

Escape dollar signs in prose with \$ (inside expressions) or <span>$</span> (outside expressions on the same line) to avoid accidental math rendering 19.

External reference: GitHub — writing mathematical expressions.

Mermaid diagrams in markdown

Mermaid is a JavaScript diagramming tool created by Knut Sveidqvist that renders text definitions into flowcharts, sequence diagrams, Gantt charts, and twenty-plus other diagram types 21. GitHub added native Mermaid rendering inside fenced code blocks; GitLab, Obsidian, Notion (via plugins), and most static-site frameworks followed. The project won the 2019 JS Open Source Award for "the most exciting use of technology."

Flowchart

```mermaid
graph TD
    A[Idea] --> B{Worth writing?}
    B -->|Yes| C[Draft in markdown]
    B -->|No| D[Add to backlog]
    C --> E[Publish]
```

Sequence diagram

```mermaid
sequenceDiagram
    Reader->>Browser: Open mnmnote.com
    Browser->>IndexedDB: Read note list
    IndexedDB-->>Browser: Return notes
    Browser-->>Reader: Render workspace
```

Other supported diagrams

Mermaid in 2026 supports flowcharts, sequence diagrams, class diagrams, state diagrams, entity-relationship diagrams, Gantt charts, pie charts, mindmaps, Git graphs, and C4 architecture diagrams, among others 21. The full reference lives at mermaid.js.org.

External reference: GitHub — creating diagrams.

Wiki-links are the double-bracket internal link syntax popularized by MediaWiki in 2001 and adopted by Obsidian, Foam, Roam Research, Logseq, Dendron, and MNMNOTE 22. The syntax is [[Note Title]]. Aliased links use a pipe: [[Note Title|display text]]. Embedded references prefix with an exclamation mark: ![[Note Title]]. The brackets are inert outside supporting tools, so files stay portable.

See [[Markdown History]] for the timeline.

Aliased: [[Markdown History|the long story]].

Embedded: ![[Citation Style Guide]]

Wiki-links are not part of CommonMark or GFM. They render as plain text on GitHub. They render as live links inside personal-knowledge-management tools — Obsidian alone has well over a million active users in 2026, confirmed informally by founder Steph Ango 23 — and inside browser-native tools that read the same plain-text files.

Block references ([[Note#^block-id]]) and heading references ([[Note#Section]]) link to specific paragraphs or sections within a note 22. Obsidian and MNMNOTE both render these as deep links. Tools that don't understand them treat the brackets as literal characters, so the source file stays portable.

External reference: Obsidian — internal links syntax.

Callouts and admonitions

Callouts are an Obsidian extension on the GFM alert pattern. Where GitHub supports five types (NOTE, TIP, IMPORTANT, WARNING, CAUTION), Obsidian supports thirteen named types plus arbitrary aliases 24. They are written as blockquotes with a bracketed type tag on the first line; an optional + or - suffix makes them foldable.

> [!note] A neutral observation
> The body of the callout can hold markdown — *emphasis*, [[wiki-links]], lists, even nested callouts.

> [!tip] Custom title for a tip
> The text after the type tag overrides the default title.

> [!warning]- Collapsed by default
> The `-` suffix collapses; `+` expands; no suffix means open.

> [!quote]
> > [!todo] Nested callout
> > Callouts compose. The outer `>` is the quote level.

Obsidian supports thirteen callout types: note, abstract (aliases summary, tldr), info, todo, tip (hint, important), success (check, done), question (help, faq), warning (caution, attention), failure (fail, missing), danger (error), bug, example, and quote (cite) 24. Each type has a default color and icon; CSS snippets can override either.

Pick a callout type that exists in both GFM (NOTE, TIP, IMPORTANT, WARNING, CAUTION) and Obsidian (uppercase or lowercase). The blockquote falls back to a plain quote on every other renderer.

External reference: Obsidian — callouts.

Why markdown breaks across platforms

Markdown's portability is real, but a handful of edge cases bite every writer once. Five quirks are responsible for most cross-platform formatting bugs — line breaks via trailing spaces, escape characters, smart quotes, ATX vs Setext mismatches, and HTML-in-markdown rules. Knowing the failure modes is the difference between a portable source file and an export disaster.

The two-space line break problem

The original 2004 syntax for a soft line break is two trailing spaces at the end of a line 9. Modern editors — VS Code, Sublime Text, JetBrains IDEs — strip trailing whitespace on save by default, silently destroying the formatting 25.

Three durable alternatives:

First line, then a backslash at the end of this one.\
Second line — survives trim-whitespace settings and works in every CommonMark parser.

First line.<br>
Second line — explicit HTML, always works.

First paragraph.

Second paragraph — a blank line separates them as two block elements.

The backslash line break is part of CommonMark 0.31.2 2 and works across GitHub, GitLab, Obsidian, MNMNOTE, and every modern parser. Use it as the default for soft breaks; reserve <br> for environments that strip backslashes.

Escape characters

The complete list of characters that markdown treats as syntax — and that you escape with a backslash to display literally — is \ * _ { } [ ] < > ( ) # + - . ! | 8.

\*not italic, just asterisks\*

\#not a heading

A literal backslash: \\

Inside fenced code blocks, escape characters are unnecessary — code is rendered verbatim.

Smart quotes and typographic substitutions

Some renderers (Typora, Pandoc, MNMNOTE with typographic-quote mode) replace straight quotes (", ') with curly ones (", '), em-dashes (two hyphens become ), and ellipses (three periods become ). GitHub does not. The same source file can render with curly quotes in one tool and straight in another. For technical documentation where punctuation precision matters, disable smart-quote substitution; for editorial prose, embrace it.

ATX vs Setext headings

Setext headings only support two levels (H1 and H2) and require an underline of at least one equals sign or hyphen. ATX headings support six levels with one to six hash characters. CommonMark's spec allows both; markdownlint's default MD003 rule asks for consistency 26. For any document with more than two heading levels, ATX is the only option that scales.

HTML in markdown

Most parsers allow inline HTML, but block-level HTML (<div>, <table>, <pre>) must be separated from surrounding markdown by blank lines, and markdown syntax inside a block-level HTML element is generally not parsed 9. Indenting an HTML tag with spaces or tabs breaks recognition. Use HTML sparingly — it survives raw-text reading, but it defeats the readability premise.

External reference: Markdown Guide — basic syntax best practices.

Flavors compared: CommonMark, GFM, Obsidian, Pandoc

Markdown is a family of flavors, not a single specification. The matrix below summarizes what the major flavors and tools support in 2026 across seven dimensions that account for most cross-platform pain. Use it as the lookup table when a source file needs to travel between Obsidian, GitHub, Notion, and a static-site generator.

Flavor / ToolSpec basisTablesTask listsFootnotesWiki-linksCalloutsMath
CommonMark 0.31.2the spec
GitHub (GFM)CommonMark+yesyesyes5 alert typesyes
GitLabCommonMark+yesyesyesyes (admonitions)yes
ObsidianCommonMark+yesyesyesyes13 callout typesyes
Pandocown dialect4 stylesyesyesoptionalvia fenced divsyes
Discordpartial (no headings, tables, images)
RedditCommonMarkyes
Notion (export)CommonMark-ishpartialas HTML
MNMNOTECommonMark+yesyesyesyesGFM-compatibleyes

Cells marked "—" indicate the feature is not supported natively. A source file with wiki-links and callouts written in Obsidian or MNMNOTE will render its plain text correctly on GitHub — but the wiki-links degrade to literal brackets and the callouts to plain blockquotes. Pick the lowest-common-denominator set when a document will be read in multiple tools; rely on extensions only when the audience uses the matching renderer.

Notion's markdown export has known quirks. Notion's official help page confirms one directly: "Callout blocks will be exported as HTML, as there is no Markdown equivalent" 27. Beyond callouts, Notion's exporter appends a 32-character hexadecimal ID to every filename, flattens table cells with rich content (images, checkboxes, nested lists) to plain text, and exports formula columns as their evaluated values rather than the formulas themselves 27. Plan a manual cleanup pass after every export.

External reference: Markdown Guide — tools directory.

Markdown editors compared

Markdown editor choice is workflow-shaped. The matrix below covers the six editors most readers ask about — the platform, price, wiki-link support, math, and callout behavior tell most of the story.

EditorPlatformsPriceWiki-linksMathCallouts
ObsidianmacOS, Win, Linux, iOS, AndroidFree (personal) / paid (commercial)yesyes13 callout types
MNMNOTEBrowser (any modern)Local-first, no accountyesyesGFM-compatible
BearmacOS, iOS onlySubscriptionyespartial
VS CodemacOS, Win, LinuxFreevia pluginvia pluginvia plugin
TyporamacOS, Win, LinuxOne-time licenseyes
NotionBrowser, desktop, mobileFreemiumpartialyesas HTML on export

Obsidian and MNMNOTE are the closest pair on raw markdown capability — both treat plain text as the source of truth, both support wiki-links and math, both render GitHub-compatible callouts. The difference is install posture: Obsidian is a desktop-first app with a sync subscription; MNMNOTE runs in the browser with local-first storage and no account. Bear remains the iOS-and-macOS typography favorite. VS Code is the developer default for mixed code-and-prose workflows. Typora is a one-time-purchase WYSIWYG that emphasizes typographic substitution. Notion is the team-wiki incumbent whose export is lossy enough to warrant the cleanup pass described above.

What changed in markdown in 2026

The 2025–2026 window brought three substantive changes to the markdown ecosystem. Alerts went mainstream. GitHub's NOTE/TIP/IMPORTANT/WARNING/CAUTION alerts, announced December 14, 2023 14, crossed the adoption tipping point during 2024. By mid-2025, GitLab, Bitbucket, Forgejo, MkDocs Material, and most static-site generators shipped first-class support. Cross-platform documents now lean on alerts the way they once leaned on bold-prefixed lines.

AI assistants standardized on markdown for output. ChatGPT and Claude both default to GFM-shaped responses — headings, fenced code, tables, task lists. Markdown is now the default surface for AI output the way it was once the default for READMEs 28. The implication for human writers is mechanical: a document that reads cleanly in markdown is a document an assistant can quote, summarize, and re-emit without distortion.

MDX 3 stabilized for component-rich content. MDX — the format that embeds JSX components inside markdown — reached version 3 with a redesigned compiler. Adopters now include Next.js, Astro, Docusaurus, and Vercel's documentation pipeline 29. Plain-prose writers don't need MDX; component-heavy product docs do.

The base format has barely changed since CommonMark 0.31.2 released in January 2024 2. What changes is the periphery: more callout types, better math, more diagram engines, more parsers. Twenty-two years after Gruber's first release, the spec is small enough that the format is done.

For a deeper look at how browser-based notes actually store the markdown source — and why IndexedDB is the right floor for a local-first editor — see IndexedDB vs localStorage.

Frequently Asked Questions

Q: What is the difference between Markdown and CommonMark? A: Markdown is John Gruber's 2004 plain-text formatting syntax. CommonMark is the formal, testable specification of that syntax, maintained by John MacFarlane and a small group from GitHub, Stack Overflow, and Discourse. The current version is 0.31.2, released January 28, 2024. CommonMark removes ambiguity in the original spec without changing how documents render in practice 2.

Q: Does ChatGPT use markdown? A: Yes. ChatGPT, Claude, Gemini, and most large language models default to GitHub Flavored Markdown for formatted output — headings, lists, fenced code blocks, tables, bold, italic, and task lists. This is true in 2026 across web chat interfaces, API responses, and developer tooling. The format is durable across copy-paste, version control, and downstream rendering.

Q: How do I add a line break in markdown without trailing spaces? A: End the line with a backslash. This is part of CommonMark 0.31.2 and works across every major renderer, including GitHub, GitLab, Obsidian, MNMNOTE, and Pandoc. The two-space original syntax still works but is silently stripped by editors that trim trailing whitespace on save (VS Code, Sublime Text, most IDEs) 25.

Q: What's the best markdown editor in 2026? A: Editor choice depends on workflow. For desktop knowledge management with wiki-links and plugins, writers tend toward Obsidian. For browser-based markdown with local-first storage, MNMNOTE works without an account. For Apple-only users prioritizing typography, Bear remains beloved. For mixed plain-text/code workflows, VS Code with a preview plugin is the developer default. All four read and write the same CommonMark base; differences are in the surrounding experience.

Q: Are wiki-links part of standard markdown? A: No. Wiki-links ([[Note Title]]) are an extension popularized by MediaWiki in 2001 and adopted by Obsidian, Foam, Roam Research, Logseq, Dendron, and MNMNOTE. They are not part of CommonMark, GFM, or Pandoc's default dialect. Files containing wiki-links remain portable — non-supporting renderers display the literal brackets — but the links only resolve in tools that understand them.

Q: How do I write math in markdown? A: Use single dollar signs for inline math and double dollar signs for block math. GitHub, GitLab, Obsidian, and most static-site generators render the result through MathJax or KaTeX. Escape literal dollar signs with \$ inside expressions or <span>$</span> outside them on the same line 19.

Q: Does Notion export real markdown? A: Notion's markdown export is CommonMark-shaped but lossy. Notion's own help page states that callout blocks export as HTML because there is no markdown equivalent 27. Filenames receive a 32-character ID suffix, table cells with rich content (images, checkboxes, nested lists) flatten to plain text, and formula columns export their evaluated result rather than the formula. Plan for a manual cleanup pass after export.

Markdown lives best in tools that respect plain text — MNMNOTE is one, open in your browser, no account.

Structured data

References

Tier 1 — Standards and primary specifications

Tier 2 — Vendor and tooling references

Tier 3 — Editorial and personal-site sources

Footnotes

  1. Wikipedia. "Markdown." https://en.wikipedia.org/wiki/Markdown — initial release date March 9, 2004; Aaron Swartz as Gruber's sounding board during development; Setext / Textile / reStructuredText design lineage; RFC 7763 / 7764 timeline; GFM 2009 / 2017 timeline. Accessed 2026-05-15. 2 3

  2. MacFarlane, J. et al. "CommonMark Spec, version 0.31.2." January 28, 2024. https://spec.commonmark.org/0.31.2/ — formal grammar for ATX/Setext headings, fenced code blocks, link reference definitions. Accessed 2026-05-15. 2 3 4 5 6

  3. GitHub. "GitHub Flavored Markdown Spec," version 0.29-gfm, April 6, 2019. https://github.github.com/gfm/ — extensions: tables, task lists, strikethrough, autolinks, disallowed raw HTML. Accessed 2026-05-15. 2 3 4 5 6 7 8

  4. Gruber, J. "Introducing Markdown." Daring Fireball, March 15, 2004. https://daringfireball.net/2004/03/introducing_markdown — original announcement of Markdown six days after its March 9, 2004 release; GPL distribution; Movable Type and Blosxom plug-ins. Accessed 2026-05-15. 2

  5. Leonard, S. "RFC 7763: The text/markdown Media Type." IETF, March 2016. https://www.rfc-editor.org/rfc/rfc7763.html — registration of text/markdown as official media type, charset and variant parameters. Accessed 2026-05-15.

  6. Leonard, S. "RFC 7764: Guidance on Markdown." IETF, March 2016. https://www.rfc-editor.org/rfc/rfc7764.html — design philosophies and variant registrations including MultiMarkdown, GFM, Pandoc, Markdown Extra. Accessed 2026-05-15.

  7. Ango, S. "File over app." July 1, 2023. https://stephango.com/file-over-app — "In the fullness of time, the files you create are more important than the tools you use to create them. Apps are ephemeral, but your files have a chance to last." Accessed 2026-05-15.

  8. Markdown Guide. "Basic syntax." https://www.markdownguide.org/basic-syntax/ — best-practice formatting for headings, emphasis, lists, code, links, images. Accessed 2026-05-15. 2 3 4 5 6 7 8 9

  9. Gruber, J. "Markdown: Syntax." Daring Fireball. https://daringfireball.net/projects/markdown/syntax — original syntax reference for headings, emphasis, lists, links, code, blockquotes, line breaks, escapes. Accessed 2026-05-15. 2 3 4 5

  10. Markdown Guide. "Cheat sheet." https://www.markdownguide.org/cheat-sheet/ — quick-reference for basic and extended elements. Accessed 2026-05-15.

  11. Markdown Guide. "Extended syntax." https://www.markdownguide.org/extended-syntax/ — tables, fenced code, footnotes, heading IDs, definition lists, strikethrough, task lists. Accessed 2026-05-15.

  12. GitHub. "GFM Tables Extension." Section 4.10 of GFM Spec 0.29-gfm. https://github.github.com/gfm/#tables-extension- — pipe table syntax, delimiter row alignment rules, escape characters. Accessed 2026-05-15.

  13. MacFarlane, J. "Pandoc User's Guide — Pandoc's Markdown." https://pandoc.org/MANUAL.html#pandocs-markdown — simple/pipe/grid/multiline tables, footnotes, citations, fenced divs. Accessed 2026-05-15.

  14. GitHub. "New Markdown extension: Alerts provide distinctive styling for significant content." GitHub Changelog, December 14, 2023. https://github.blog/changelog/2023-12-14-new-markdown-extension-alerts-provide-distinctive-styling-for-significant-content/ — NOTE/TIP/IMPORTANT/WARNING/CAUTION alert types. Accessed 2026-05-15. 2 3

  15. GitHub. "Octoverse: state of open source." Annual report citing 100M+ developers on the platform. https://github.blog/news-insights/octoverse/ — adoption scale for Markdown across READMEs and issues. Accessed 2026-05-15.

  16. Hugo. "Front matter formats." https://gohugo.io/content-management/front-matter/ — YAML, TOML, JSON delimiters and reserved fields. Accessed 2026-05-15. 2 3 4

  17. YAML Language Development Team. "YAML Ain't Markup Language (YAML) version 1.2 (Revision 1.2.2)." October 1, 2021. https://yaml.org/spec/1.2.2/ — strict superset of JSON, human-friendly serialization. Accessed 2026-05-15.

  18. Jekyll Documentation. "Front matter." https://jekyllrb.com/docs/front-matter/ — triple-dash YAML block convention, predefined variables (layout, title, date, permalink). Accessed 2026-05-15.

  19. GitHub Docs. "Writing mathematical expressions." https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/writing-mathematical-expressions — inline $…$, block $$…$$, fenced math blocks, MathJax. Accessed 2026-05-15. 2 3 4

  20. KaTeX project. "KaTeX — The fastest math typesetting library for the web." https://katex.org/ — bundle composition (CSS, JavaScript, web fonts) and synchronous rendering model. MathJax 3 release notes at https://www.mathjax.org/ describe MathML/AsciiMath input and HTML/SVG/MathML output. Accessed 2026-05-15. 2

  21. Mermaid project. "Mermaid — Introduction." https://mermaid.js.org/intro/ — supported diagram types, creator (Knut Sveidqvist), 2019 JS Open Source Award. Accessed 2026-05-15. 2

  22. Obsidian Help. "Internal links / Wiki-links syntax." https://obsidian.md/help/syntax[[Note Title]], aliases, embeds, block references. Accessed 2026-05-15. 2

  23. Ango, S. LinkedIn post, 2025. https://www.linkedin.com/posts/stephango_no-one-knows-how-many-users-obsidian-has-activity-7351766158372429825-WH9p — founder's primary statement that Obsidian's exact user count is unpublished but well above one million active users. Accessed 2026-05-15.

  24. Obsidian Help. "Callouts." https://obsidian.md/help/callouts — thirteen callout types, foldable variants, nested callouts. Accessed 2026-05-15. 2

  25. Markdown Guide. "Line breaks." https://www.markdownguide.org/basic-syntax/#line-breaks — backslash and <br> alternatives to the two-space line break; covers editor whitespace-trim behavior. Accessed 2026-05-15. 2

  26. DavidAnson. "markdownlint MD003 — heading-style rule." https://github.com/DavidAnson/markdownlint/blob/main/doc/md003.md — ATX, atx_closed, Setext heading consistency. Accessed 2026-05-15.

  27. Notion. "Export your content." https://www.notion.com/help/export-your-content — official documentation, including "Callout blocks will be exported as HTML, as there is no Markdown equivalent." Cross-referenced with unmarkdown.com's third-party report on 32-character filename IDs and table flattening (https://unmarkdown.com/blog/notion-export-broken). Accessed 2026-05-15. 2 3

  28. BigGo News. "HTML vs Markdown for AI Agent Output: rendering preferences in 2026." November 2025. https://rentierdigital.xyz/blog/html-vs-markdown-ai-agent-output — markdown as the default output surface for ChatGPT and Claude, copy-paste fidelity discussion. Accessed 2026-05-15.

  29. MDX project. "What is MDX." https://mdxjs.com/docs/what-is-mdx/ — markdown + JSX format, MDX 3 features, adoption by Next.js, Docusaurus, Astro. Accessed 2026-05-15.