Product Page | Docs | API Reference | Examples | Blog | Free Support | Temporary License
GroupDocs.Markdown for Python via .NET is a Markdown processing and conversion API. Convert documents to Markdown and Markdown back to other formats with full control over formatting, flavors, and rendering.
Get Started
pip install groupdocs-markdown-net
from groupdocs.markdown import MarkdownConverter
md = MarkdownConverter.to_markdown("document.docx")
print(md)
How It Works
The package is a self-contained Python wheel that includes everything needed to process documents. No external software installation is required - just pip install and start converting. The wheel works across Python 3.5 - 3.14 on Windows, Linux, and macOS (Intel + Apple Silicon).
Features
- Document to Markdown: Convert DOCX, PDF, XLSX, PPTX, HTML, EPUB and 20+ formats to Markdown.
- Markdown to Document: Convert Markdown back to PDF, DOCX, and other formats.
- Markdown Flavors: CommonMark and GitHub Flavored Markdown (GFM).
- Spreadsheet Control: Max rows, columns, sheet separator, hidden sheets.
- Heading & Metadata: Heading level offset, YAML front matter.
- Cross-Platform: Windows x64/x86, Linux x64, macOS x64/ARM64.
Supported Conversions
| Source Format | Examples |
|---|---|
| Word Processing | DOCX, DOC, RTF, ODT |
| Spreadsheets | XLSX, XLS, ODS, CSV |
| Presentations | PPTX, PPT, ODP |
| eBooks | EPUB, MOBI, AZW3 |
| Web | HTML, MHTML, CHM |
| Text | TXT, XML |
Examples
Convert to Markdown String
from groupdocs.markdown import MarkdownConverter
md = MarkdownConverter.to_markdown("./report.docx")
print(md)
Save Markdown to File
from groupdocs.markdown import MarkdownConverter
MarkdownConverter.to_file("./report.pdf", "./report.md")
Convert with Options
from groupdocs.markdown import MarkdownConverter, ConvertOptions, MarkdownFlavor, SkipImagesStrategy
with MarkdownConverter("./document.docx") as converter:
options = ConvertOptions()
options.flavor = MarkdownFlavor.GIT_HUB
options.heading_level_offset = 1
options.include_front_matter = True
options.image_export_strategy = SkipImagesStrategy()
result = converter.convert(options)
print(result.content)
Convert with Load Options
from groupdocs.markdown import MarkdownConverter, LoadOptions
load_opts = LoadOptions()
load_opts.password = "secret"
md = MarkdownConverter.to_markdown("./protected.docx", load_options=load_opts)
print(md)
Get Document Info
from groupdocs.markdown import MarkdownConverter
info = MarkdownConverter.get_info("./document.docx")
print(f"Format: {info.file_format}")
print(f"Pages: {info.page_count}")
Convert from Stream / BytesIO
import io
from groupdocs.markdown import MarkdownConverter, ConvertOptions, SkipImagesStrategy
with open("document.docx", "rb") as stream:
with MarkdownConverter(stream) as converter:
result = converter.convert(ConvertOptions())
print(result.content)
buf = io.BytesIO(downloaded_bytes)
with MarkdownConverter(buf) as converter:
options = ConvertOptions()
options.image_export_strategy = SkipImagesStrategy()
result = converter.convert(options)
print(result.content)
Spreadsheet Options
from groupdocs.markdown import MarkdownConverter, ConvertOptions, SkipImagesStrategy
with MarkdownConverter("./data.xlsx") as converter:
options = ConvertOptions()
options.max_columns = 10
options.max_rows = 50
options.include_hidden_sheets = False
options.image_export_strategy = SkipImagesStrategy()
result = converter.convert(options)
print(result.content)
AI Agent & LLM Friendly
This package is designed for seamless integration with AI agents, LLMs, and automated code generation tools.
AGENTS.mdin the package — AI coding assistants (Claude Code, Cursor, GitHub Copilot) auto-discover the API surface, usage patterns, and troubleshooting tips from the installed package- MCP server — connect your AI tool to GroupDocs documentation for on-demand API lookups:
{ "mcpServers": { "groupdocs-docs": { "url": "https://docs.groupdocs.com/mcp" } } }
- Machine-readable docs — full documentation available as plain text for RAG and LLM context:
- Single file:
https://docs.groupdocs.com/markdown/python-net/llms-full.txt - Per page: append
.mdto any docs URL
- Single file:
- Markdown output for RAG — clean, structured Markdown is the preferred input for LLMs and embedding pipelines
Evaluation Mode
The API works without a license in evaluation mode with the following limitations:
- Only the first 3 pages of a document are processed.
- An evaluation watermark is added to the output.
To remove these limitations, apply a license or request a temporary license:
from groupdocs.markdown import License
License().set_license("path/to/license.lic")
Or set the environment variable (auto-applied at import):
export GROUPDOCS_LIC_PATH="path/to/license.lic"
Troubleshooting
| Issue | Platform | Fix |
|---|---|---|
DllNotFoundException: libSkiaSharp |
macOS | Stale system copy — rename: sudo mv /usr/local/lib/libSkiaSharp.dylib{,.bak} |
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT errors |
Linux | Do NOT set this variable. Install ICU: apt-get install libicu-dev |
TypeLoadException |
Any | Reinstall: pip install --force-reinstall groupdocs-markdown-net |
System Requirements
- Python: 3.5 - 3.14
- Platforms: Windows x64/x86, Linux x64, macOS x64/ARM64
- No external dependencies on Windows. Linux/macOS may need ICU (see Troubleshooting).
Metadata
Release files for groupdocs-markdown-net 26.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| groupdocs_markdown_net-26.3.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| groupdocs_markdown_net-26.3.0-py3-none-manylinux1_x86_64.whl | Python 3 | none | Linux glibc 2.5+ x86-64 | Details |
| groupdocs_markdown_net-26.3.0-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| groupdocs_markdown_net-26.3.0-py3-none-macosx_10_14_x86_64.whl | Python 3 | none | macOS 10.14+ x86-64 | Details |
Total release size: 234.2 MB
Release files / groupdocs_markdown_net-26.3.0-py3-none-win_amd64.whl
| Download URL | groupdocs_markdown_net-26.3.0-py3-none-win_amd64.whl |
|---|---|
| Size | 58.6 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
5c153247a8faac59cdd259ebdc7682c80f682186916a2faf63d4658485842a24
|
|
BLAKE2b-256 checksum How to use checksums |
85c19387de043ecee69b9f9ce383324e278bda79aba48b6d5b916c1da9d2e8bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Release files / groupdocs_markdown_net-26.3.0-py3-none-manylinux1_x86_64.whl
| Download URL | groupdocs_markdown_net-26.3.0-py3-none-manylinux1_x86_64.whl |
|---|---|
| Size | 57.9 MB |
| Tags | Linux glibc 2.5+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
79c1cab5e795bae2798a5e8a221ed20e21572d82abd35cb42d6f00f2bd78055f
|
|
BLAKE2b-256 checksum How to use checksums |
3647076e27766d75d9f6a793a06e3a3e0e2559d753740cd07e0fd45eaf475693
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Release files / groupdocs_markdown_net-26.3.0-py3-none-macosx_11_0_arm64.whl
| Download URL | groupdocs_markdown_net-26.3.0-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 57.7 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e67b545096aaed359802c8e6bc07bddfbf8024b0b7bf9630f44908ba185db246
|
|
BLAKE2b-256 checksum How to use checksums |
cf868995e5409a42ca053ac3c7105494da4b14f2aa97b995be39764cb56cd027
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Release files / groupdocs_markdown_net-26.3.0-py3-none-macosx_10_14_x86_64.whl
| Download URL | groupdocs_markdown_net-26.3.0-py3-none-macosx_10_14_x86_64.whl |
|---|---|
| Size | 60.0 MB |
| Tags | Python 3 macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
14d7489737613bf0f162deabf90c341b3170b696e01cb0fa8272201a77e732ae
|
|
BLAKE2b-256 checksum How to use checksums |
43c09372507ba6aaaaaaf4702a2e00830b393e9bf70b944e0eb04568f9b455f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|