DevTools•Jun 2026•3 min read

Markdown vs reStructuredText: Pick Markdown unless you're shipping a Python doc tree

A decisive verdict on the two dominant plain-text markup formats. Markdown wins on reach, tooling, and muscle memory; reStructuredText wins on rigor and cross-referencing inside Sphinx-powered documentation. Most people should write Markdown.

The short answer

Markdown over Restructuredtext Pick Markdown Unless You Re Shipping A Python Doc Tree for most cases. Markdown is where the readers, the editors, the renderers, and the LLMs already live — GitHub, every CMS, every chat tool, every static site generator.

  • Pick Markdown if writing READMEs, blog posts, wikis, issues, notes, or any docs that live on GitHub/GitLab, a CMS, or a static site generator — i.e. 95% of writing
  • Pick Restructuredtext Pick Markdown Unless You Re Shipping A Python Doc Tree if documenting a Python library with Sphinx and genuinely need autodoc, directives, and rich cross-references across a large versioned doc tree
  • Also consider: MyST Markdown — it bolts reST's directive/cross-reference power onto Markdown syntax inside Sphinx, letting you stop choosing. If you're tempted by reST only for Sphinx, use MyST instead.

— Nice Pick, opinionated tool recommendations

The verdict in one breath

Write Markdown. reStructuredText is a more rigorous, better-specified format with a real standard library of directives, roles, and cross-references — and almost none of that matters because the entire world standardized on Markdown anyway. GitHub renders it, every CMS speaks it, every static site generator defaults to it, and every LLM emits it natively. reST's reach is essentially one ecosystem: Python documentation via Sphinx. That's a fine ecosystem, but it's a walled garden. The honest framing: reST is the language a documentation engineer would design; Markdown is the language everyone actually adopted. Adoption beats elegance for a format whose entire job is to be read and maintained by other people. Unless your output is a Sphinx doc tree, the rich features you're paying for in reST friction will sit unused while you fight syntax nobody on your team remembers.

Where reStructuredText genuinely wins

Give reST its due: it was built for serious documentation and it shows. Directives (.. note::, .. code-block:: python, .. toctree::) and roles (:ref:, :class:, :func:) give you structured, semantic, extensible markup that plain Markdown simply lacks. Cross-references resolve by name across an entire multi-file, multi-version project and break the build if a target disappears — Markdown links rot silently. Sphinx autodoc pulls docstrings straight from Python source into rendered docs, which is unbeatable for API references. The grammar is actually specified, so two conformant parsers agree on output. If you maintain a large versioned library doc set — think the Python stdlib, NumPy, Django — reST plus Sphinx is the correct, battle-tested answer, and Markdown would force you to reinvent half of it badly.

Where Markdown crushes it

Markdown's superpower is gravity. It renders on GitHub, GitLab, Bitbucket, Notion, Slack, Discord, Reddit, every wiki, every CMS, and every static site generator from Hugo to Astro to Docusaurus. Pandoc converts it to anything. Editors give you live preview for free. New contributors already know it — there is no syntax to teach. And in 2026, every LLM writes Markdown as its default output, so AI-assisted docs are zero-friction. CommonMark pinned down the spec, and GitHub Flavored Markdown added tables, task lists, and fenced code that cover real-world needs. Yes, it fragments into dialects, but the 90% you use daily is identical everywhere. reST has none of this network effect — write a .rst file outside Sphinx and most tools render it as raw text or mangle it.

The syntax tax nobody mentions

reST punishes you in daily friction. Indentation is significant and unforgiving — misalign a directive body by a space and the build fails or, worse, silently swallows content. Inline markup has finicky whitespace rules: `**bold** needs surrounding space or escapes, nested inline markup is flat-out illegal, and you'll hit "Inline strong start-string without end-string" warnings that send you spelunking. Links use a backwards text <url>_ form with trailing underscores that everyone gets wrong. Markdown's [text](url) and bold` are forgettable in the good way — you stop thinking about them. The cost compounds: every non-expert contributor to a reST repo files a malformed PR, and you become the syntax-support desk. Markdown's looseness is occasionally ambiguous, but ambiguity that renders is cheaper than rigor that refuses to build.

Quick Comparison

FactorMarkdownRestructuredtext Pick Markdown Unless You Re Shipping A Python Doc Tree
Ecosystem reach / tool supportUniversal — GitHub, every CMS, SSG, chat tool, and LLMEffectively Sphinx + Python docs only
Cross-references & structured directivesNone native; links rot silentlyNamed refs, roles, build-breaking on broken links
Learning curve / contributor frictionNear zero; everyone already knows itSignificant whitespace and inline-markup rules
API reference from source (autodoc)Not built in; needs external toolingSphinx autodoc pulls docstrings directly
Spec consistency across renderersCommonMark + GFM, but dialect fragmentationSingle well-defined grammar

The Verdict

Use Markdown if: You're writing READMEs, blog posts, wikis, issues, notes, or any docs that live on GitHub/GitLab, a CMS, or a static site generator — i.e. 95% of writing.

Use Restructuredtext Pick Markdown Unless You Re Shipping A Python Doc Tree if: You're documenting a Python library with Sphinx and genuinely need autodoc, directives, and rich cross-references across a large versioned doc tree.

Consider: MyST Markdown — it bolts reST's directive/cross-reference power onto Markdown syntax inside Sphinx, letting you stop choosing. If you're tempted by reST only for Sphinx, use MyST instead.

Markdown vs Restructuredtext Pick Markdown Unless You Re Shipping A Python Doc Tree: FAQ

Is Markdown or Restructuredtext Pick Markdown Unless You Re Shipping A Python Doc Tree better?

Markdown is the Nice Pick. Markdown is where the readers, the editors, the renderers, and the LLMs already live — GitHub, every CMS, every chat tool, every static site generator. reStructuredText is technically the better-specified language, but a better spec nobody else implements is a liability, not a feature. You write docs to be read and maintained, and Markdown wins both by a mile outside the narrow Sphinx/Python niche.

When should you use Markdown?

You're writing READMEs, blog posts, wikis, issues, notes, or any docs that live on GitHub/GitLab, a CMS, or a static site generator — i.e. 95% of writing.

When should you use Restructuredtext Pick Markdown Unless You Re Shipping A Python Doc Tree?

You're documenting a Python library with Sphinx and genuinely need autodoc, directives, and rich cross-references across a large versioned doc tree.

What's the main difference between Markdown and Restructuredtext Pick Markdown Unless You Re Shipping A Python Doc Tree?

A decisive verdict on the two dominant plain-text markup formats. Markdown wins on reach, tooling, and muscle memory; reStructuredText wins on rigor and cross-referencing inside Sphinx-powered documentation. Most people should write Markdown.

How do Markdown and Restructuredtext Pick Markdown Unless You Re Shipping A Python Doc Tree compare on ecosystem reach / tool support?

Markdown: Universal — GitHub, every CMS, SSG, chat tool, and LLM. Restructuredtext Pick Markdown Unless You Re Shipping A Python Doc Tree: Effectively Sphinx + Python docs only. Markdown wins here.

Are there alternatives to consider beyond Markdown and Restructuredtext Pick Markdown Unless You Re Shipping A Python Doc Tree?

MyST Markdown — it bolts reST's directive/cross-reference power onto Markdown syntax inside Sphinx, letting you stop choosing. If you're tempted by reST only for Sphinx, use MyST instead.

🧊
The Bottom Line
Markdown wins

Markdown is where the readers, the editors, the renderers, and the LLMs already live — GitHub, every CMS, every chat tool, every static site generator. reStructuredText is technically the better-specified language, but a better spec nobody else implements is a liability, not a feature. You write docs to be read and maintained, and Markdown wins both by a mile outside the narrow Sphinx/Python niche.

Related Comparisons

Disagree? nice@nicepick.dev