html2docx
Convert valid HTML input to docx.
What it is and what it does
html2docx is a Python library that transforms valid HTML documents into Microsoft Word (.docx) files. It takes HTML as input and returns a BytesIO object containing the Word document, which you can then write to disk or process further. The package wraps python-docx for document generation and tinycss2 for CSS parsing, handling the translation from web markup to Office Open XML format.
The library is straightforward to use: read or construct your HTML, pass it to the html2docx() function with optional metadata like a title, and get back a binary buffer ready to save. It is marked Production/Stable and supports Python 3.7 through 3.10, though maintenance has been dormant since early 2023. The main constraint is that your HTML must be valid; the package does not attempt to repair or work around malformed markup.
Use it for:
- Export HTML reports or templates generated by a web application into Word documents for distribution or archival.
- Convert email HTML content to .docx files for offline storage or sharing with non-technical users.
- Generate Word documents programmatically from HTML templates in data processing or document generation pipelines.
- Build a document conversion microservice that accepts HTML and returns downloadable .docx files.
- Transform HTML documentation or help content into Word format for print or formal distribution.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Converts valid HTML to Microsoft Word (.docx) format, returning a BytesIO object that can be written to disk or processed further.
Yes, if you need straightforward HTML-to-Word conversion and can work with valid HTML input. The low install friction, permissive MIT license, and Production/Stable status make it a reasonable choice. However, dormant maintenance (last release January 2023) means you should verify that it works with your specific HTML/CSS requirements and check for any compatibility issues with current versions of its dependencies before committing to production use.
Install
html2docx on PyPI
pip
pip install html2docxuv
uv add html2docxpoetry
poetry add html2docxInstalling html2docx
Before you install
Low friction installation with only two runtime dependencies (python-docx and tinycss2). Maintenance is dormant—last release was 2023-01-19 and last commit 2024-01-16—but the package is marked Production/Stable and the repository remains active and unarchived.
License in practice
MIT license is permissive, allowing commercial and private use with minimal restrictions; you may use, modify, and distribute the package freely provided you include the license notice.
Quickstart
pip install html2docx
from html2docx import html2docx
with open("my.html") as fp:
html = fp.read()
buf = html2docx(html, title="My Document")
with open("my.docx", "wb") as fp:
fp.write(buf.getvalue())
HTML input must be valid; malformed HTML will cause conversion to fail.
Verify before relying
- What HTML features and CSS properties are actually supported by the conversion (the fact sheet does not detail the scope of HTML/CSS handling).
- Whether tinycss2 dependency is used for CSS parsing and what styling limitations exist in the output.
- Current compatibility with recent versions of python-docx and tinycss2.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.7) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — python-docx, tinycss2 |
| Maintenance | dormant — 1,303 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 119,726/month — #12,059 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: html2docx-1.6.0-py3-none-any.whl
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
html-for-docxConverts HTML content to Word documents…
permissive · top 15,000 on PyPI
pdf2docxConverts PDF files to Word documents (.docx…
permissive · top 5,000 on PyPI
htmldocxConverts HTML content into Microsoft Word…
permissive · top 5,000 on PyPI
doc2docxConverts legacy .doc files to modern .docx…
permissive · top 15,000 on PyPI
docx2pdfConverts DOCX files to PDF on Windows or macOS…
permissive · top 5,000 on PyPI
mammothConverts Microsoft Word .docx documents to…
permissive · top 5,000 on PyPI
docxCreates, reads, and writes Microsoft Office…
unclear · top 15,000 on PyPI
docx2pythonExtracts text, images, headers, footers,…
permissive · top 15,000 on PyPI
mf2pymf2py parses HTML documents to extract…
permissive · top 15,000 on PyPI
msoffcrypto-toolDecrypts and encrypts Microsoft Office files…
permissive · top 5,000 on PyPI