Skip to main content

mkdocx

Export MkDocs Material markdown files to clean DOCX documents using pandoc.

Converts MkDocs markdown files into standard DOCX documents ready to be pasted into a branded template. Heading levels are shifted down by one (Markdown H2 becomes Word Heading 1, etc.) since H1 is the page title handled by MkDocs.

Installation

uv tool install mkdocx

With support for post-processing wide tables

uv tool install mkdocx[postprocess]

Installation From Source

uv tool install .

With support for post-processing wide tables

uv tool install .[postprocess]

Installation for Development

uv pip install -e ".[dev]"

Requirements

  • Python 3.10+
  • pandoc must be installed and available on PATH (or specify with --pandoc)
  • Optional: python-docx for post-processing wide tables (install with pip install mkdocx[postprocess])

Usage

# Single file (output defaults to docx-exports/<filename>.docx)
mkdocx docs/guides/getting-started.md

# Single file with explicit output path
mkdocx docs/guides/getting-started.md -o getting-started.docx

# Single file into a specific output folder
mkdocx docs/guides/getting-started.md -of docx-exports/custom

# Export an entire directory (mirrors structure relative to docs/)
mkdocx docs/guides/

# Export a directory, filtering by frontmatter tag
mkdocx docs/ --tag report

# Export with tag into a custom output folder
mkdocx docs/ -t report -of docx-exports/custom

CLI reference

mkdocx <input> [-o OUTPUT | -of [OUTPUT_FOLDER]] [-t TAG] [--pandoc PATH] [--preserve-heading-numbers]
Flag Description
input Path to a markdown file or directory
-o, --output Explicit DOCX output path (single file only, mutually exclusive with -of)
-of, --output-folder Output folder (default: docx-exports/)
-t, --tag Filter by frontmatter tag (directory mode only)
--pandoc Path to pandoc binary (auto-detected if omitted)
--preserve-heading-numbers Keep leading numbers like "1. Introduction" in headings

Output behaviour

Input Flags Output path
File (none) docx-exports/<stem>.docx
File -o path.docx path.docx
File -of folder folder/<stem>.docx
Directory (none) docx-exports/ mirroring structure relative to docs/
Directory -of folder folder/ mirroring structure relative to docs/
Directory -t policy docx-exports/tag/policy/<stem>.docx (flat)
Directory -t policy -of dir dir/tag/policy/<stem>.docx (flat)

Features

  • Macro resolution - {{ extra_var }} placeholders from mkdocs.yml are replaced
  • Relative link rewriting - .md links become full site URLs
  • Admonition conversion - !!! / ??? blocks become styled fenced divs
  • Heading shift - H2 becomes H1, H3 becomes H2, etc.
  • Empty header table fix - promotes first data row when header is blank
  • Abbreviation stripping - removes *[ABBR]: ... definition lines
  • Content-aware table widths - Lua filter balances column proportions
  • Wide table font shrinking - tables with 4+ columns get a smaller font size

Development

# Install dev dependencies
uv pip install -e ".[dev]"

# Run tests
pytest

Release files for mkdocx 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mkdocx 0.1.3
File Size Uploaded
mkdocx-0.1.3.tar.gz 41.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mkdocx 0.1.3
File Interpreter ABI Platform
mkdocx-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size:53.9 kB

Release files / mkdocx-0.1.3.tar.gz

Download URL mkdocx-0.1.3.tar.gz
Size 41.9 kB
Tags Source
SHA-256 checksum
How to use checksums
c88e9e70c724f463a99e6fbbef32e5f384a4c982548f768addb68eff2021fa26
BLAKE2b-256 checksum
How to use checksums
e80287cd4a1d396e2cfe21635f43eac3850984ea9ec08b46df2b8d7b74b778d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 20, 2026.

Transparency log

Release files / mkdocx-0.1.3-py3-none-any.whl

Download URL mkdocx-0.1.3-py3-none-any.whl
Size 12.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
68ddf4c2a0d6468b6de04d98a6fd4cf25bb23caea1b501ea08c1f1dd7f733339
BLAKE2b-256 checksum
How to use checksums
5e56132670c9348ee6436ad52fce916eab56d9f32e5c407b36a0fdc4588a9283
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 20, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page