markdownify
Convert HTML to markdown.
Decision gist · record as of 2026-08-14
Yes. Markdownify is a well-maintained, actively developed library with low install friction, no security vulnerabilities, and a permissive MIT license. It solves a clear problem (HTML to Markdown conversion) with extensive configuration options and extensibility. The two-dependency footprint and pure-Python distribution make it suitable for most Python environments. Install it if you need reliable HTML-to-Markdown conversion.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Low friction: pure Python wheel with only two runtime dependencies (beautifulsoup4 and six).
- Active maintenance—last release 45 days ago, repository has 2235 stars and no archived status.
License · maintenance · safety
permissive license (permissive) — MIT license (permissive). No restrictions on commercial or private use; you may modify and distribute freely under the same terms.
last release 2026-06-30 (45 days) · last repo commit 2026-06-30 · 2,235 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 88,556,136 downloads/mo, #385 on PyPI
Alternatives
Verify before relying
pip install markdownify
from markdownify import markdownify as md
result = md('<b>Yay</b> <a href="http://github.com">GitHub</a>')
print(result) # '**Yay** [GitHub](http://github.com)'- Whether the package actively supports Python versions beyond 3.8 (classifiers list 3.8 as the latest, but requires_python is unspecified).
- Performance characteristics when converting large HTML documents or deeply nested structures.
What it is and what it does
Markdownify is a Python library that converts HTML markup into Markdown syntax. It parses HTML using BeautifulSoup and outputs semantically equivalent Markdown, preserving structure like links, bold/italic text, headings, lists, code blocks, and tables. The conversion is highly configurable: you can exclude specific tags, include only certain tags, choose heading styles (ATX, SETEXT, etc.), customize bullet characters, control how emphasis symbols are rendered, and adjust whitespace handling. It also supports custom converters by subclassing MarkdownConverter to override tag-specific conversion logic.
The package is useful for workflows that need to transform web content, API responses, or rich text into plain Markdown—common in documentation generation, content migration, and static site building. It depends on beautifulsoup4 for HTML parsing and six for Python 2/3 compatibility, though the classifier list suggests modern Python 3 versions are the primary target. A command-line interface is also provided for batch conversion of HTML files.
Use it for
- Convert HTML email or web content to Markdown for documentation or archival purposes.
- Extract and reformat web-scraped HTML into Markdown for static site generators or wikis.
- Transform rich-text HTML from CMS or API responses into clean Markdown for further processing.
- Batch-convert HTML files to Markdown via the command-line tool for content migration projects.
- Customize HTML-to-Markdown conversion in a subclass to handle domain-specific tags or formatting rules.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
Markdownify is a well-maintained, actively developed library with low install friction, no security vulnerabilities, and a permissive MIT license. It solves a clear problem (HTML to Markdown conversion) with extensive configuration options and extensibility. The two-dependency footprint and pure-Python distribution make it suitable for most Python environments. Install it if you need reliable HTML-to-Markdown conversion.
Install
markdownify on PyPI
Before you install
Low friction: pure Python wheel with only two runtime dependencies (beautifulsoup4 and six). Active maintenance—last release 45 days ago, repository has 2235 stars and no archived status.
License in practice
MIT license (permissive). No restrictions on commercial or private use; you may modify and distribute freely under the same terms.
Quickstart
pip install markdownify
from markdownify import markdownify as md
result = md('<b>Yay</b> <a href="http://github.com">GitHub</a>')
print(result) # '**Yay** [GitHub](http://github.com)'
Verify before relying
- Whether the package actively supports Python versions beyond 3.8 (classifiers list 3.8 as the latest, but requires_python is unspecified).
- Performance characteristics when converting large HTML documents or deeply nested structures.
Package facts
| License | permissive license permissive |
| Python support | Not specified |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 2 packagesbeautifulsoup4six |
| Maintenance | Actively maintained 45 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 88,556,136 / month, #385 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Environment :: Web EnvironmentFramework :: DjangoIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseOperating System :: OS IndependentProgramming Language :: Python :: 2.5Programming Language :: Python :: 2.6Programming Language :: Python :: 2.7Programming Language :: Python :: 3.6Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Topic :: Utilities |
Evidence: markdownify-1.2.3-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “html markdown transformation”
- markdownifyConverts HTML to Markdown, with fine-grained control over which tags…
- html-to-markdownConverts real-world HTML—including malformed tags, broken entities,…
- pandocPandoc Python Library wraps the Pandoc document model to analyze,…
Give your agent the search over MCP, or paste the wish link into any chat.
More Utilities packages
Converts domain names between Unicode and ASCII-compatible encoding (Punycode) according to IDNA 2008 and Unicode Technical Standard 46, with security validation and broader script coverage than the standard library.
Install it if you work with internationalized domain names, need to validate domains, or use HTTP clients that depend on it transitively.
Detects and normalizes text encoding from unknown or ambiguous sources, supporting all IANA character sets that Python's core library provides codecs for, with the ability to register custom codecs.
Setuptools is a Python build backend and package management tool that handles building, distributing, and installing Python packages, including support for C/C++ extension modules.
Pluggy provides a plugin system that lets you define hook specifications and register implementations to be called in sequence, enabling extensible Python applications without tight coupling.
Install it if you're building an extensible application or framework.
Pygments is a syntax highlighter that colorizes source code and text in over 500 languages and formats, outputting to HTML, LaTeX, RTF, SVG, images, or ANSI terminal sequences.
Install it if you need to display or transform source code.
Six provides utility functions to write Python code that runs on both Python 2.7 and Python 3.3+, smoothing over language differences between the two versions.
See also django-markdownify · mdutils · telegramify-markdown · strip-markdown · prettierfier · soup2dict · md2pdf · notion2md · jira2markdown · notion-to-md-py