readability-lxml
fast html to text parser (article readability tool) with python 3 support
Decision gist · record as of 2026-08-14
Yes, if you need reliable article extraction from HTML documents. The low install friction, permissive license, and broad Python version support (3.8–3.13) make it practical. The aging maintenance status (468 days since last release) is a minor concern for a stable, mature tool, but verify that recent HTML patterns in your target documents still parse correctly before committing to production use.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Low friction: pure Python wheel with four straightforward runtime dependencies (chardet, lxml, cssselect, lxml-html-clean).
- Maintenance status is aging—last release was 468 days ago—but the repository remains active and the package has accumulated 2895 stars.
License · maintenance · safety
Apache License 2.0 (permissive) — Apache License 2.0 is permissive, allowing commercial and private use with minimal restrictions; you must retain license and copyright notices but face no copyleft obligations.
last release 2025-05-03 (468 days) · last repo commit 2026-01-26 · 2,895 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 2,058,771 downloads/mo, #3,334 on PyPI
Alternatives
Verify before relying
pip install readability-lxml
from readability import Document
doc = Document(html_content)
print(doc.title())
print(doc.summary())- Current performance characteristics on large documents or high-volume extraction workloads
- Compatibility with modern HTML5 edge cases beyond the changelog's mention of improved HTML5 tag handling
- Whether the package requires external HTTP fetching or works only with pre-downloaded HTML content
What it is and what it does
readability-lxml is a Python port of arc90's Readability algorithm that parses HTML documents and isolates the main article content—title, body text, and optionally images—stripping away navigation, ads, and boilerplate. It uses lxml for DOM manipulation and cssselect for content scoring, applying heuristics to identify the primary reading material.
The package is designed for content extraction pipelines where you need clean article text from HTML. It supports CJK text, can preserve multiple images per article, and outputs HTML5-formatted summaries. With 2058771 monthly downloads, it serves as a standard tool for news aggregators, content analysis systems, and archival tools.
Use it for
- Extract article text from HTML documents for content aggregation or archival without manual parsing
- Build a content pipeline that isolates main text from pages with heavy sidebar and footer markup
- Prepare training data for NLP models by cleaning HTML-sourced documents to pure article text
- Implement a reader mode or reading list feature that strips formatting and focuses on text
- Analyze article metadata (title, author, images) from bulk HTML content
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need reliable article extraction from HTML documents.
The low install friction, permissive license, and broad Python version support (3.8–3.13) make it practical. The aging maintenance status (468 days since last release) is a minor concern for a stable, mature tool, but verify that recent HTML patterns in your target documents still parse correctly before committing to production use.
Install
readability-lxml on PyPI
Before you install
Low friction: pure Python wheel with four straightforward runtime dependencies (chardet, lxml, cssselect, lxml-html-clean). Maintenance status is aging—last release was 468 days ago—but the repository remains active and the package has accumulated 2895 stars.
License in practice
Apache License 2.0 is permissive, allowing commercial and private use with minimal restrictions; you must retain license and copyright notices but face no copyleft obligations.
Quickstart
pip install readability-lxml
from readability import Document
doc = Document(html_content)
print(doc.title())
print(doc.summary())
Verify before relying
- Current performance characteristics on large documents or high-volume extraction workloads
- Compatibility with modern HTML5 edge cases beyond the changelog's mention of improved HTML5 tag handling
- Whether the package requires external HTTP fetching or works only with pre-downloaded HTML content
Package facts
| License | Apache License 2.0 permissive |
| Python support | Not specified |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 4 packageschardetlxmlcssselectlxml-html-clean |
| Maintenance | Aging 468 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 2,058,771 / month, #3,334 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Environment :: Web EnvironmentIntended Audience :: DevelopersOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Programming Language :: Python :: Implementation :: PyPyTopic :: InternetTopic :: Software Development :: Libraries :: Python ModulesTopic :: Text Processing :: IndexingTopic :: Utilities |
Evidence: readability_lxml-0.8.4.1-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 to text article”
- readability-lxmlExtracts and cleans the main article text and title from HTML…
- newspaper3kNewspaper3k downloads and extracts article text, metadata, images,…
- readabilipyExtracts article content from HTML using either Mozilla's…
Give your agent the search over MCP, or paste the wish link into any chat.
More Python Modules 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.
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.
PyYAML parses and emits YAML 1.1 data format, enabling serialization and deserialization of configuration files and Python objects to and from human-readable YAML text.
Pydantic validates Python data structures against type hints, coercing and checking input at runtime to ensure it matches a declared schema.
Provides reusable metadata objects for use with PEP-593 `typing.Annotated` to express common constraints like bounds, collection sizes, and predicates on types.
Install it if you use or build libraries that need to express type constraints in a standardized, inspectable way—or if you want to annotate your own types with…
Provides runtime tools to inspect and introspect Python type annotations, enabling programmatic examination of type hints at execution time.
See also breadability · readabilipy · jusText · readable-content · turbohtml · textract · newspaper3k · docx2python · textacy · Crawl4AI