Python port of markdown-it. Markdown parsing, done right!
Project Links
Meta
Author: Chris Sewell
Requires Python: >=3.7
Classifiers
Development Status
- 5 - Production/Stable
Intended Audience
- Developers
License
- OSI Approved :: MIT License
Programming Language
- Python :: 3
- Python :: 3.7
- Python :: 3.8
- Python :: 3.9
- Python :: 3.10
- Python :: Implementation :: CPython
- Python :: Implementation :: PyPy
Topic
- Software Development :: Libraries :: Python Modules
- Text Processing :: Markup
markdown-it-py
Markdown parser done right.
- Follows the CommonMark spec for baseline parsing
- Configurable syntax: you can add new rules and even replace existing ones.
- Pluggable: Adds syntax extensions to extend the parser (see the plugin list).
- High speed (see our benchmarking tests)
- Safe by default
This is a Python port of markdown-it, and some of its associated plugins. For more details see: https://markdown-it-py.readthedocs.io.
For details on markdown-it itself, see:
Installation
conda install -c conda-forge markdown-it-py
or
pip install markdown-it-py[plugins]
or with extras
conda install -c conda-forge markdown-it-py linkify-it-py mdit-py-plugins
pip install markdown-it-py[linkify,plugins]
Usage
Python API Usage
Render markdown to HTML with markdown-it-py and a custom configuration with and without plugins and features:
from markdown_it import MarkdownIt
from mdit_py_plugins.front_matter import front_matter_plugin
from mdit_py_plugins.footnote import footnote_plugin
md = (
MarkdownIt('commonmark' ,{'breaks':True,'html':True})
.use(front_matter_plugin)
.use(footnote_plugin)
.enable('table')
)
text = ("""
---
a: 1
---
a | b
- | -
1 | 2
A footnote [^1]
[^1]: some details
""")
tokens = md.parse(text)
html_text = md.render(text)
## To export the html to a file, uncomment the lines below:
# from pathlib import Path
# Path("output.html").write_text(html_text)
Command-line Usage
Render markdown to HTML with markdown-it-py from the command-line:
usage: markdown-it [-h] [-v] [filenames [filenames ...]]
Parse one or more markdown files, convert each to HTML, and print to stdout
positional arguments:
filenames specify an optional list of files to convert
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
Interactive:
$ markdown-it
markdown-it-py [version 0.0.0] (interactive)
Type Ctrl-D to complete input, or Ctrl-C to exit.
>>> # Example
... > markdown *input*
...
<h1>Example</h1>
<blockquote>
<p>markdown <em>input</em></p>
</blockquote>
Batch:
$ markdown-it README.md README.footer.md > index.html
References / Thanks
Big thanks to the authors of markdown-it:
- Alex Kocharin github/rlidwka
- Vitaly Puzrin github/puzrin
Also John MacFarlane for his work on the CommonMark spec and reference implementations.
Aug 11, 2025
4.0.0
Jun 03, 2023
3.0.0
Feb 22, 2023
2.2.0
Apr 16, 2022
2.1.0
Jan 24, 2022
2.0.1
Dec 03, 2021
2.0.0
May 08, 2021
1.1.0
May 02, 2021
1.0.0
May 01, 2021
1.0.0b3
Apr 25, 2021
1.0.0b2
Mar 31, 2021
1.0.0b1
Feb 06, 2021
0.6.2
Jan 01, 2021
0.6.1
Dec 15, 2020
0.6.0
Dec 13, 2020
0.5.8
Dec 13, 2020
0.5.7
Oct 21, 2020
0.5.6
Sep 27, 2020
0.5.5
Sep 08, 2020
0.5.4
Sep 04, 2020
0.5.3
Aug 22, 2020
0.5.2
Aug 21, 2020
0.5.1
Aug 18, 2020
0.5.0
Aug 11, 2020
0.4.9
Jul 13, 2020
0.4.8
Jun 22, 2020
0.4.7
May 28, 2020
0.4.6
Apr 01, 2020
0.4.5
Mar 30, 2020
0.4.4
Mar 29, 2020
0.4.3
Mar 29, 2020
0.4.2
Mar 28, 2020
0.4.1
Mar 28, 2020
0.4.0
Mar 28, 2020
0.3.3
Mar 27, 2020
0.3.2
Mar 27, 2020
0.3.1
Mar 27, 2020
0.3.0
Mar 27, 2020
0.2.3
Mar 26, 2020
0.2.2
Mar 26, 2020
0.2.1
Mar 26, 2020
0.2.0
Mar 25, 2020
0.1.1
Mar 25, 2020
0.1.0