readme-renderer
readme_renderer is a library for rendering readme descriptions for Warehouse
Decision gist · record as of 2026-08-14
Yes. This is a mature, actively maintained library with low install friction, no known vulnerabilities, and a permissive license. Install it if you need to render README files safely to HTML or validate package metadata formatting—it's the standard tool for this task in the Python packaging ecosystem.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.10 or later.
- Low friction installation with three straightforward runtime dependencies.
- Actively maintained as of 66 days ago with recent commits and no archived status.
License · maintenance · safety
Apache-2.0 (permissive) — Licensed under Apache-2.0 (permissive), allowing use in commercial and private projects with minimal restrictions.
last release 2026-06-09 (66 days) · last repo commit 2026-08-03 · 176 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 41,655,456 downloads/mo, #669 on PyPI
Alternatives
Verify before relying
pip install readme-renderer
from readme_renderer.rst import render
html = render(rst_content)- Whether the package handles malformed or edge-case markup gracefully beyond the 'safe rendering' claim.
- Performance characteristics when processing very large README files.
- Specific HTML sanitization rules applied by nh3 dependency and whether they align with your security model.
What it is and what it does
readme-renderer is a library that converts README files in multiple markup formats (Markdown, reStructuredText, and plain text) into safe HTML. It was built specifically for Warehouse, the PyPI package repository, to render the long_description metadata field that appears on package pages. The library handles the parsing and sanitization of markup to prevent injection attacks while preserving formatting.
The package depends on three runtime libraries: nh3 for HTML sanitization, docutils for reStructuredText parsing, and Pygments for syntax highlighting. It's designed to be lightweight and focused—its primary use case is validating and rendering package metadata before it appears on PyPI, though it can be used anywhere you need safe conversion of README-style documentation to HTML.
Use it for
- Validate package long_description locally before uploading to PyPI using twine check.
- Render user-submitted README files on a package repository or documentation site safely.
- Convert reStructuredText or Markdown documentation to HTML in a build pipeline.
- Sanitize and display README content in a web application without XSS risk.
- Test README formatting during package development to catch markup errors early.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
This is a mature, actively maintained library with low install friction, no known vulnerabilities, and a permissive license. Install it if you need to render README files safely to HTML or validate package metadata formatting—it's the standard tool for this task in the Python packaging ecosystem.
Install
readme-renderer on PyPI
Before you install
Low friction installation with three straightforward runtime dependencies. Actively maintained as of 66 days ago with recent commits and no archived status.
Requires Python 3.10 or later.
License in practice
Licensed under Apache-2.0 (permissive), allowing use in commercial and private projects with minimal restrictions.
Quickstart
pip install readme-renderer
from readme_renderer.rst import render
html = render(rst_content)
Verify before relying
- Whether the package handles malformed or edge-case markup gracefully beyond the 'safe rendering' claim.
- Performance characteristics when processing very large README files.
- Specific HTML sanitization rules applied by nh3 dependency and whether they align with your security model.
Package facts
| License | Apache-2.0 permissive |
| Python support | Supports the current Python release >=3.10 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 3 packagesnh3docutilsPygments |
| Maintenance | Actively maintained 66 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 41,655,456 / month, #669 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Intended Audience :: DevelopersNatural Language :: EnglishOperating System :: MacOS :: MacOS XOperating System :: Microsoft :: WindowsOperating System :: POSIXOperating System :: POSIX :: BSDOperating System :: POSIX :: LinuxProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPyTyping :: Typed |
Evidence: readme_renderer-45.0-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 › “readme to html renderer”
- readme-rendererSafely renders README files in Markdown, reStructuredText, and plain…
- gripGrip is a command-line server that renders local Markdown files using…
- rich-rstRenders reStructuredText documents as Rich terminal output,…
Give your agent the search over MCP, or paste the wish link into any chat.
More HTML packages
MarkupSafe provides a text object that escapes special characters so untrusted strings can be safely embedded in HTML and XML without injection attacks.
Jinja2 is a templating engine that renders dynamic content by combining templates with Python-like syntax and data, supporting template inheritance, macros, autoescaping, and sandboxed execution.
Beautiful Soup parses HTML and XML documents into a navigable tree, providing Pythonic methods to search, iterate, and modify the parsed content.
Install it if you need to parse or extract data from markup documents.
lxml provides Python bindings to libxml2 and libxslt, enabling parsing, validation, and transformation of XML and HTML documents through an ElementTree-compatible API with support for XPath, XSLT, and schema validation.
Install it if you need robust XML/HTML parsing, validation, or transformation; avoid it only if you must stay pure-Python and can accept slower performance.
Docutils converts plaintext documentation in reStructuredText format into multiple output formats including HTML, XML, and LaTeX using a modular processing system.
Converts Markdown text to HTML using a Python implementation of John Gruber's Markdown specification, with support for extensions.
Install it if you need to parse Markdown in Python.
See also rich-rst · setuptools-markdown · mdit-plain · grip · m2r2 · sphinx_mdinclude · rich-text-renderer · rst2ansi · mistune · bandit-sarif-formatter