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-docxfor post-processing wide tables (install withpip 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 frommkdocs.ymlare replaced - Relative link rewriting -
.mdlinks 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)
| File | Size | Uploaded | |
|---|---|---|---|
| mkdocx-0.1.3.tar.gz | 41.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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