pypdf
Pure-Python library for splitting, merging, transforming and reading PDF documents.
Operated by pypdf contributors
Opens the vendor's own site.
Jobs covered
Open a task to see exactly what the vendor documentation supports.
Extract
Browse all extract toolsextracting content from PDFs with pypdf, where the documentation documents PdfReader and page.extract_text() for the text layer, extraction_mode=layout for a fixed-width layout-preserving mode, visitor_text/visitor_operand functions for controlling extraction, metadata access, image extraction, and attachment handling. The scope records text-layer, metadata, image and attachment extraction, notes that text extraction is not OCR or layout/table analysis and that scanned pages need an OCR tool, and makes no redaction or arbitrary text-editing claim
Merge
Browse all merge toolsmerging and assembling PDFs with pypdf, where the documentation documents PdfWriter.append() and merge() for whole or partial documents, add_page/insert_page for explicit page insertion, list-based page selection and repeated insertion, form-field grouping when merging forms, and writing the assembled result to a new PDF. The scope records page append, merge, insertion, reordering and selection/assembly, and makes no claim to edit page content, render pages, preserve signatures or merge encrypted documents without decryption
Edit
Browse all edit toolswriting and transforming PDFs with pypdf, where the documentation documents rotating and cropping pages, transforming page contents, adding and reading annotations, adding stamps and watermarks, filling and flattening form fields, updating metadata and outlines, adding JavaScript and viewer preferences, and serialising the result with PdfWriter.write(). The scope records page transformation, form filling/flattening, annotation/stamp addition, metadata/outline updates and PDF serialisation, notes that cropping hides content rather than removing it, and makes no arbitrary body-text editing, general redaction, rendering, OCR, signing or certificate-trust claim
Protect
Browse all protect toolsencrypting and decrypting PDFs with pypdf, where the documentation documents PdfWriter.encrypt() with RC4-40, RC4-128, AES-128, AES-256-R5 and AES-256 algorithms up to PDF 2.0, PdfReader.decrypt() for encrypted files, is_encrypted checks, the extra pyca/cryptography or pycryptodome dependency for AES, and the vendor warning that RC4 is the default for compatibility and is insecure while AES-256-R5 is recommended. The scope records password-based PDF encryption and decryption and the documented algorithm choices, and makes no reader-enforcement, permission, certificate-trust, unbreakable-encryption or legal-security guarantee
Where your files are processed
No server involved
A pure-Python library with no service component. It reads and writes files in the caller's own process, so there is no server in the path and nothing for a probe to observe. That is a property of the library itself: what an application built with it does with your file depends on that application, not on this.
A library that runs in your own Python process. There is no service, no account and no network call in the package itself, so a document handled with pypdf never leaves the machine unless the calling code sends it somewhere.
What it does
pypdf is a pure-Python PDF library under BSD-3-Clause, installed from a py3-none-any wheel with no compiled extension and no external binary. The current release is pypdf 6.21.1, published 17 October 2026; the package metadata requires Python >=3.9 and declares support for Python 3.9 through 3.15, with official Python 3.15 support added in the 6.20 line.
It reads PDFs with PdfReader and writes them with PdfWriter: extracting the text layer with extract_text and layout/visitor modes, reading metadata, images and attachments, appending/merging/inserting/reordering/selecting pages, filling and flattening forms, adding annotations and stamps, rotating/cropping/transforming pages, updating metadata and outlines, and encrypting or decrypting PDFs. It is a library only: there is no first-party CLI, no HTTP service and no hosted pypdf product.
The catalog has no convert job for pypdf because its output is PDF serialisation and transformation, not conversion to other document formats or rendering.
Best for
Python projects that need to assemble, split or re-order PDFs as part of something larger, and teams who value a dependency with no native code in it. It also reads metadata and the text layer, with a documented layout-preserving mode when the order of the text matters.
Worth knowing
The current release is pypdf 6.21.1, published 17 October 2026; 6.21.0 was published the previous day and 6.21.1 is a security fix for opening /DCTDecode image data through the Pillow JPEG plugin. PyPI already serves 6.21.1, so there is no lag to reconcile.
The package requires Python >=3.9, declares support for Python 3.9 through 3.15, and ships a py3-none-any wheel, so the supported-platform list is the Python runtime's, not an OS-specific binary claim. pypdf is a library only: it has no first-party CLI, no HTTP service and no hosted product. Text extraction reads the stored text layer and can be wrong for complex columns, tables and reading order; extract_text(extraction_mode=layout) and visitor functions help, but pypdf does not perform OCR, so scanned pages need an OCR tool.
It cannot render pages, perform layout/table analysis, redact content, sign or validate signatures, or convert to other document formats; its writing path serialises and transforms PDFs. Filling forms and adding annotations/stamps, updating metadata/outlines and flattening forms are supported, but arbitrary body-text editing and general redaction are not.
Encryption supports RC4-40, RC4-128, AES-128, AES-256-R5 and AES-256 up to PDF 2.0; AES requires an extra dependency such as pyca/cryptography, the default is RC4 for compatibility and is documented as insecure, and no permission, certificate-trust or legal-security guarantee is made. The catalog's actual jobs are extract, merge, edit and protect; there is no convert job, and no generic Office/PDF conversion, rendering, OCR, arbitrary text editing, redaction, signing or certificate trust is claimed.
Details, and where each comes from
Vendor statements, our own reading of their pages, and the things nobody has established yet, each answered separately. Where we have not confirmed something it says so rather than guessing, and a row nobody has established is greyed out.
- Versions covered
- Self-hosted · Linux · Windows · macOS
- Website
- github.com
- Requires an account
- Not applicable
- Watermark on the free tier
- Not verified
- Maximum file size
- Not verified
- Batch processing
- Yes
- Data residency
- Self-hosted
- Open source
- Yes
- Self-hostable
- Yes
- Licence
-
BSD-3-Clause.
BSD-3-Clause. The LICENSE file carries copyright 2006-2008 Mathieu Fenniak and contributions copyright Ashish Kulkarni, Steve Witham and other pypdf contributors, with the three BSD-3-Clause conditions including the no-endorsement clause.
The package metadata declares BSD-3-Clause and Python >=3.9. The pyproject lists Mathieu Fenniak as author and stefan6419846 and Martin Thoma as maintainers; the project describes itself as a collaborative effort under the py-pdf organisation, not a company or a hosted service.
- Redaction
- No redaction feature
- Programmatic access
- Embeddable library
- Last availability check
- Responded in 477 ms 21 October 2026
Checked automatically by our own runner, not reported by the vendor. 100% of our last 30 checks got a response.
What the redaction verdict rests on
From the vendor's own documentation, read 22 September 2026. Not tested by us.
“pypdf is a free and open-source pure-python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files. It can also add custom data, viewing options, and passwords to PDF files. pypdf can retrieve text and metadata from PDFs as well.”
What that does not establish
Recorded as `none` on the absence of any redaction feature from the library's own documentation and feature index, not on a test. The quoted description is the whole of the documented surface - page assembly, metadata, passwords, text retrieval - and nothing in it removes content from a page.
What it does not establish: that pypdf cannot be used to damage a document. It exposes the object model, so someone determined enough can delete a content stream, but that is rewriting a file rather than redacting one, and it is exactly the distinction this index exists to draw.
What the vendor says
Claims are labelled rather than repeated as fact. Where we have checked something ourselves, it says so and shows when. Checked means we read the vendor's own page and it says what we recorded - not that we tested the behaviour, unless the note says we did.
-
“pypdf is a free and open-source pure-python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files. It can also add custom data, viewing options, and passwords to PDF files. pypdf can retrieve text and metadata from PDFs as well.”
Checked by us - the source says this Read 1 October 2026
Confirmed. The quoted text appears in the rendered page as read on 2026-10-01.
This claim was carried as reported rather than checked until this read. The first read of this page captured too little of the rendered text to compare, so it was read a second time with the network quiet.
Standing: Not re-read against the live source
Check it yourself: the source, the SHA-256, and how we checked
- From
- the text a browser renders
- SHA-256
- 412e4fc6b5b0f4bd46b5a5d8b9fa16380ce1f479c480dc448f96f83a251f073d
How we checked
Read as rendered text in headless Chrome on 2026-10-01 and saved to the evidence archive, so the read can be repeated against the same file. Comparison ignores case, punctuation and hyphenation, which is why "open-source" on the record matches "open source" on the page.
Each claim is quoted from the vendor's own pages. This section describes what we have and have not checked - it is not a judgement about anyone.
Sponsorship is distribution, not an endorsement or a promise of search rankings, AI citations, traffic, or sales. This listing is a free entry, compiled from published sources.
Related reading
- Which PDF tools keep your file on your machine - what we count as processing on your own device.
- Open source PDF tools, and what their licences require - what open source does and does not tell you.