markdown-it-py is a Python Markdown parser that aims to provide 100% CommonMark support, plus configurable syntax features, syntax extensions, and high-speed parsing. It is useful for converting Markdown to HTML using a Python API or the markdown-it command-line tool.
Project status
- The repository appears actively maintained, with a recent upstream push on 2026-07-13 and multiple tagged updates in 2026 (most recently v4.2.0 on 2026-05-07).
- Update cadence looks healthy for this period, with v4.2.0 and v4.1.0 arriving within about a day of each other (2026-05-07 and 2026-05-06), and the next major update being v4.0.0 on 2025-08-11.
AI summary generated
Recent updates
v4.2.0
v4.2.0 introduces a new `make_fence_rule()` factory to generate block-level fence parsing rules with configurable fence markers and closing behavior. The release notes only describe the factory addition, but the underlying `fence` parsing implementation was also refactored to be parameterized.
Featuresv4.1.0
v4.1.0 adds the new `gfm-like2` preset (task lists, alerts, and single-tilde strikethrough), plus a `--stdin` CLI option. It also extends the inline parser so plugins can register additional “terminator” characters, and improves performance of `fragments_join` and `text_join` by removing quadratic behavior.
Featuresv4.0.0
markdown-it-py v4.0.0 drops Python 3.8 and 3.9 support, adds Python 3.13, and updates the parser to align with CommonMark 0.31.2 and Markdown-It v14.1.0. The release also includes performance improvements, a reported parsing bug fix, and tooling/style maintenance (ruff-based formatting).
BreakingFeaturesv3.0.0
v3.0.0 ports markdown-it-py from upstream markdown-it 12.2.0 to 13.0.x, introducing stricter parsing around entities and backslash escapes. It adds inline `linkify` for full URLs and changes the typographic pipeline by introducing `text_special` and a final `text_join` rule, along with a few internal API breaks.
BreakingFeaturesv2.2.0
Release v2.2.0 updates dependencies and adds repository maintenance around CI, tooling, and security policy. It also includes targeted fixes, including a reported CVE fix and a CLI crash fix for non-UTF8 input. The code diff reveals additional behavioral changes (mostly removing assertions and making rendering more lenient) and several dependency range updates that are not described in the release notes.
Securityv2.1.0
v2.1.0 modernizes the project and fixes multiple parsing edge cases, most notably around list numbering and IndexError scenarios. It also drops Python 3.6 support and replaces setuptools-based packaging with flit. Internally, several core data structures (Rule/Delimiter/Token) are refactored to use Python dataclasses.
BreakingFeaturesv2.0.1
v2.0.1 primarily contains a crash fix in the blockquote parsing logic and introduces a new `inline_definitions` option for reference parsing. The new option can emit `definition` tokens into the token stream to support renderer use cases that need a more faithful syntax tree.
Featuresv2.0.0
v2.0.0 syncs markdown-it-py with upstream markdown-it (v12.1.0) and CommonMark (0.30). The release primarily focuses on URL normalization correctness (mdurl and punycode port), removing AttrDict usage, and improving re-export behavior via __all__, alongside test and spec updates.
Breakingv1.1.0
v1.1.0 primarily upgrades the `attrs` dependency to allow `attrs` v21. The diff also includes documentation and Sphinx config updates (notably around plugin usage), plus the package version bump to 1.1.0.
v1.0.0
This release marks v1.0.0 as the first stable release of markdown-it-py. The provided release notes are minimal and primarily direct readers to the changelog for details.