tree-sitter-markdown
Markdown grammar for tree-sitter
What it is and what it does
tree-sitter-markdown is a Markdown parser grammar for the tree-sitter incremental parsing framework. It parses Markdown text into a syntax tree following the CommonMark specification, with optional support for extensions like GitHub flavored markdown, task lists, strikethrough, pipe tables, and YAML/TOML metadata blocks. The parser is designed primarily for syntax highlighting and syntactic analysis in editors like Neovim and Helix.
The package is distributed as precompiled wheels for Python 3.9 and later, with no runtime dependencies. However, the authors explicitly note that the parser has known inaccuracies due to the constraints of fitting Markdown into tree-sitter's parsing rules, and recommend against using it where correctness is critical. Standalone usage requires two-pass parsing: first with the block grammar, then with the inline grammar using included ranges to mark inline content.
Use it for:
- Syntax highlighting for Markdown in text editors and IDE plugins that use tree-sitter
- Extracting structural information from Markdown documents for linting or analysis tools
- Building Markdown-aware code editors or documentation viewers with incremental parsing
- Parsing Markdown with GitHub extensions (tables, task lists, strikethrough) for web or static site generators
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides a tree-sitter grammar for parsing Markdown documents, enabling syntactic analysis of Markdown text according to CommonMark with optional extensions like GitHub flavored markdown, task lists, and tables.
Yes, if you need tree-sitter-based Markdown parsing for syntax highlighting or structural analysis. The permissive MIT license, active maintenance, and precompiled wheels make it straightforward to install. However, do not use it where Markdown correctness is critical—the authors acknowledge known inaccuracies. For general-purpose Markdown parsing where fidelity matters, consider alternatives.
Install
tree-sitter-markdown on PyPI
pip
pip install tree-sitter-markdownuv
uv add tree-sitter-markdownpoetry
poetry add tree-sitter-markdownInstalling tree-sitter-markdown
Before you install
Medium install friction due to compiled wheels; prebuilt binaries are available for common platforms (macOS, Linux, Windows on x86_64 and ARM64), reducing build requirements. Package is actively maintained with recent releases.
License in practice
MIT license is permissive; you can use, modify, and distribute this package with minimal restrictions, requiring only attribution and inclusion of the license notice.
Quickstart
pip install tree-sitter-markdown
import tree_sitter_markdown
# Use with tree-sitter bindings to parse Markdown text into a syntax tree
Requires Python 3.9 or later; tree-sitter Python bindings must be installed separately to use the grammar for actual parsing
Verify before relying
- Whether the parser's known inaccuracies (noted in the description) are acceptable for your specific use case beyond syntax highlighting
- Performance characteristics and parsing speed for large or deeply nested Markdown documents
- Compatibility with tree-sitter bindings beyond the Python layer
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 332 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 2,085,173/month — #3,305 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: tree_sitter_markdown-0.5.1-cp39-abi3-macosx_10_9_x86_64.whl; tree_sitter_markdown-0.5.1-cp39-abi3-macosx_11_0_arm64.whl; tree_sitter_markdown-0.5.1-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; tree_sitter_markdown-0.5.1-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; tree_sitter_markdown-0.5.1-cp39-abi3-musllinux_1_2_aarch64.whl; tree_sitter_markdown-0.5.1-cp39-abi3-musllinux_1_2_x86_64.whl; tree_sitter_markdown-0.5.1-cp39-abi3-win_amd64.whl; tree_sitter_markdown-0.5.1-cp39-abi3-win_arm64.whl
Keywords: incremental, parsing, tree-sitter, markdown
Tags
More Linguistic packages
Detects and normalizes text encoding from…
permissive · top 100 on PyPI
tiktokentiktoken is a fast BPE tokenizer that converts…
permissive · top 1,000 on PyPI
chardetDetects character encoding and language in byte…
permissive · top 1,000 on PyPI
text-unidecodeConverts Unicode text to ASCII by…
copyleft · top 1,000 on PyPI
larkLark is a parsing library that builds abstract…
permissive · top 1,000 on PyPI
tree-sitterPython bindings to the tree-sitter parsing…
permissive · top 1,000 on PyPI
tree-sitter-tomlProvides a tree-sitter parser grammar for TOML…
permissive · top 5,000 on PyPI
tree-sitter-xmlProvides a tree-sitter parser grammar for XML…
permissive · top 5,000 on PyPI
tree-sitter-pythonProvides a Python grammar for tree-sitter,…
permissive · top 5,000 on PyPI
html-to-markdownConverts real-world HTML—including malformed…
permissive · top 5,000 on PyPI
tree-sitter-yamlA tree-sitter parser grammar for YAML files…
permissive · top 5,000 on PyPI
tree-sitter-zigProvides a tree-sitter grammar for parsing Zig…
permissive · top 5,000 on PyPI
pymarkdownlntPyMarkdown is a GitHub Flavored Markdown linter…
permissive · top 5,000 on PyPI
tree-sitter-javaProvides a Java language grammar for…
permissive · top 5,000 on PyPI
mistletoemistletoe is a pure-Python Markdown parser that…
permissive · top 5,000 on PyPI
dbt-extractorExtracts metadata (refs, sources, configs) from…
permissive · top 1,000 on PyPI