Skip to content

MkDocs: Markdown Documentation for Python Projects

MkDocs is a static site generator that builds documentation websites from Markdown source files. A project’s structure, navigation, theme, and plugins are declared in a single mkdocs.yml file at the repo root.

Note

MkDocs 1.6.1 (August 30, 2024) is the current stable release; license is BSD-2-Clause. Install via uv add --group docs mkdocs or pip install mkdocs. The maintainers are also developing MkDocs 2.0 as a ground-up rewrite alongside Zensical.

When to use MkDocs

Pick MkDocs when contributors prefer Markdown over reStructuredText, when the documentation is prose-first (tutorials, how-to guides, conceptual explanations) rather than API-first, or when the project’s audience already writes Markdown for READMEs and changelogs. For an API-first project or one that needs PDF output and a richer cross-reference system, see the Sphinx reference.

Key Features

  • Markdown-only source format (CommonMark plus Python-Markdown extensions)
  • Single-file YAML configuration (mkdocs.yml)
  • Built-in dev server with auto-reload (mkdocs serve)
  • Built-in themes: mkdocs (default) and readthedocs
  • Plugin API for extending the build (search, redirects, autogenerated content)
  • Theme ecosystem, including Material and the built-in readthedocs theme

Configuration

A minimal mkdocs.yml declares the site name, the Markdown source directory (docs/ by default), and optionally a theme:

mkdocs.yml
site_name: mypackage
theme:
  name: material
plugins:
  - search
  - mkdocstrings
nav:
  - Home: index.md
  - API: api.md

The nav block defines the sidebar navigation. Pages without an nav entry are still rendered but do not appear in the menu.

Common Commands

# Scaffold a new site in a directory
mkdocs new mypackage

# Build to site/
mkdocs build

# Run the dev server with live reload
mkdocs serve

# Deploy to GitHub Pages
mkdocs gh-deploy

mkdocs gh-deploy pushes the built site/ directory to a gh-pages branch and is the simplest path to GitHub Pages hosting.

Pros

  • Lower barrier to entry than Sphinx for Markdown-first projects
  • Single YAML config is easy to read and review
  • Live-reload dev server is built in (no separate watcher needed)
  • Plugin and theme ecosystem with hundreds of community entries in the MkDocs catalog
  • mkdocs gh-deploy ships docs to GitHub Pages in one command

Cons

  • No multi-format output (PDF, ePub) without third-party plugins
  • Smaller cross-reference ecosystem than Sphinx; intersphinx equivalents exist as plugins but are less mature
  • API documentation requires the mkdocstrings plugin and its language handlers
  • The Material theme entered maintenance mode in early 2026; greenfield projects should track Zensical as the proposed successor

Learn More

Last updated on

Please submit corrections and feedback...