PyPDF2
A pure-python PDF library capable of splitting, merging, cropping, and transforming PDF files
Decision gist · record as of 2026-08-14
Yes, with conditions. PyPDF2 is stable and widely used, with low install friction. However, version 3.0.x is the final release under this name, and development continues under a successor package. For new projects, evaluate the successor as the forward path; for maintaining existing code, PyPDF2 3.0.1 is safe. Review the two known security vulnerabilities before deploying to production.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Optional crypto dependencies required for AES encryption/decryption support; basic installation supports standard PDF operations.
- Low install friction with only two runtime dependencies (typing_extensions, dataclasses).
- Active maintenance status, though the latest release was 1322 days ago; the project is transitioning to a successor package.
License · maintenance · safety
permissive license (permissive) — Permissive license treatment means you can use this package in commercial and proprietary projects without significant legal restrictions.
last release 2022-12-31 (1322 days) · last repo commit 2026-08-13 · 10,154 stars
2 known vulnerabilities (OSV.dev, 2026-08-14) · 26,518,980 downloads/mo, #879 on PyPI
Alternatives
Verify before relying
pip install PyPDF2
from PyPDF2 import PdfReader
reader = PdfReader("example.pdf")
text = reader.pages[0].extract_text()- Current maintenance status and timeline for the transition to pypdf as the primary successor
- Scope and severity of the two known security vulnerabilities (GHSA-4vvm-4w3v-6mr8, PYSEC-2026-1835)
- Whether optional crypto dependencies are needed for your encryption use case
What it is and what it does
PyPDF2 is a mature pure-Python PDF library that lets you read, modify, and extract data from PDF files without external system dependencies. It handles core PDF manipulation tasks: splitting multi-page documents into individual files, combining multiple PDFs, cropping or rotating pages, and retrieving text and metadata. The library also supports password protection and encryption with optional dependencies for advanced cryptography.
The package has been in active development since 2013 and is classified as Production/Stable. However, the maintainers have announced that version 3.0.x is the final release under the PyPDF2 name; future development continues under a new package. If you are starting a new project, you may want to evaluate the successor package, though PyPDF2 3.0.1 remains functional for existing codebases.
Use it for
- Extract text and metadata from PDF files for data processing or document analysis workflows
- Split large multi-page PDFs into individual pages or ranges for batch processing
- Merge multiple PDF documents into a single file programmatically
- Add passwords or encrypt PDFs before distribution to control access
- Rotate, crop, or transform page layouts without re-rendering the document
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, with conditions.
PyPDF2 is stable and widely used, with low install friction. However, version 3.0.x is the final release under this name, and development continues under a successor package. For new projects, evaluate the successor as the forward path; for maintaining existing code, PyPDF2 3.0.1 is safe. Review the two known security vulnerabilities before deploying to production.
Install
pypdf2 on PyPI
Before you install
Low install friction with only two runtime dependencies (typing_extensions, dataclasses). Active maintenance status, though the latest release was 1322 days ago; the project is transitioning to a successor package.
Optional crypto dependencies required for AES encryption/decryption support; basic installation supports standard PDF operations.
License in practice
Permissive license treatment means you can use this package in commercial and proprietary projects without significant legal restrictions.
Quickstart
pip install PyPDF2
from PyPDF2 import PdfReader
reader = PdfReader("example.pdf")
text = reader.pages[0].extract_text()
Verify before relying
- Current maintenance status and timeline for the transition to pypdf as the primary successor
- Scope and severity of the two known security vulnerabilities (GHSA-4vvm-4w3v-6mr8, PYSEC-2026-1835)
- Whether optional crypto dependencies are needed for your encryption use case
Package facts
| License | permissive license permissive |
| Python support | Supports the current Python release >=3.6 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 2 packagestyping_extensionsdataclasses |
| Maintenance | Actively maintained 1,322 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 26,518,980 / month, #879 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | 2 GHSA-4vvm-4w3v-6mr8, PYSEC-2026-1835 |
| Classifiers | Development Status :: 5 - Production/StableIntended Audience :: DevelopersLicense :: OSI Approved :: BSD LicenseOperating System :: OS IndependentProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.6Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Topic :: Software Development :: Libraries :: Python ModulesTyping :: Typed |
Evidence: pypdf2-3.0.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 › “pdf page transformation”
- PyPDF2PyPDF2 is a pure-Python library for reading, splitting, merging,…
- mkdocs-print-site-pluginMkDocs plugin that generates a combined print page of your entire…
- pdf2imageConverts PDF files to PIL Image objects by wrapping the pdftoppm and…
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 pypdf · PyPDF3 · PyPDF4 · pikepdf · pdfrw2 · pdftext · pdfrw · pypdftk · extend-ai · pdf2image