pdfplumber
Python library that exposes every character, line and rectangle in a PDF, with text and table extraction built on top of that.
Operated by Jeremy Singer-Vine
Opens the vendor's own site.
Jobs covered
Open a task to see exactly what the vendor documentation supports.
Extract
Browse all extract toolsextracting PDF content and structure with pdfplumber, where the README documents page text and layout extraction with extract_text/extract_text_simple, word and character extraction with coordinates through chars/extract_words, table extraction through extract_tables/extract_table/find_tables/debug_tablefinder using line or word-alignment strategies, shape extraction through lines/rects/curves, image extraction through images, annotations and hyperlinks through annots/hyperlinks, PDF and page metadata, password-protected PDFs via the password argument, and CLI output in CSV, JSON or text.
The scope records the documented text, layout, word/character, table, shape, image, annotation/hyperlink and metadata extraction paths and the CLI formats, explicitly notes that the library is read-only, has no OCR and works best on machine-generated text-layer PDFs, and makes no table-accuracy, scanned-document or edit/convert claim
View
Browse all view toolsinspecting extraction results with pdfplumber's visual-debugging tools, where the README documents PageImage via Page.to_image() with resolution, width, height, antialias and crop options, image rendering of a page or cropped page for checking detected objects, and debug_tablefinder/table-finder diagnostics for table detection. The scope is limited to visual debugging and page-image inspection for extraction development, plus the CLI text projection; it is not a general PDF reader, viewer or rendering API, and makes no OCR, redaction, signing, editing or document-conversion claim
Where your files are processed
No server involved
A pure-Python library that parses bytes already in memory. There is no vendor service and no network component at all. 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.
Architectural and documented: pdfplumber.open() takes a filesystem path, raw bytes or a file-like object, and the project describes no hosted component anywhere. Nothing in the library posts a document anywhere; there is no account, no endpoint and no telemetry described in the README.
Files are read on the local filesystem and results are returned in-process.
What it does
pdfplumber is an MIT-licensed Python library that exposes the objects on each PDF page -- characters, words, lines, rectangles, curves, images and annotations, with their coordinates -- and builds text, layout and table extraction on top of them. The current release is 0.11.10, published 15 June 2026, built on pdfminer.six 20260107 and also depending on Pillow>=12.2.0 and pypdfium2>=5.9.0.
It extracts page text with layout options, words and characters with coordinates, tables via a configurable line- or word-alignment strategy, shapes and images, annotations and hyperlinks, and PDF/page metadata; it opens password-protected PDFs with a password argument; and it provides visual debugging through PageImage and table-finder diagnostics. The CLI emits CSV, JSON or text.
It is read-only by design: upstream explicitly lists PDF generation, PDF modification and OCR as features it does not provide, and it works best on machine-generated PDFs with a text layer rather than scanned images. It runs locally with no hosted service.
The catalog has two jobs, extract and view; there is no edit or convert job, matching the upstream non-features.
Best for
Python developers and data journalists who need the layout around a table as well as the table itself: column positions, font sizes, the heading above the grid. It is a permissive MIT licence with no compiled code of its own, though installing it brings pypdfium2 and Pillow, so how it installs depends on whether wheels exist for your platform and Python version.
Worth knowing
The current release is 0.11.10, published 15 June 2026. PyPI declares Python >=3.8 and the wheel is py3-none-any, while the README says the library is tested on Python 3.10 through 3.14; the install floor and the tested range are different claims, not a contradiction, and both are recorded.
The package pins pdfminer.six==20260107 and requires Pillow>=12.2.0 and pypdfium2>=5.9.0, so installation can depend on platform wheels for those binary dependencies. It is read-only: upstream explicitly does not provide PDF generation, PDF modification or OCR, and says it does not strongly support extracting tables from OCR'ed documents.
It works best on machine-generated PDFs with a text layer; image-only scans need a separate OCR step and are not a supported extraction path here. Table extraction reconstructs cells from visible drawn lines or inferred word alignments; it is not a guarantee of table accuracy, and borderless or complex tables can be misread.
Page objects cache layout and object information, which can consume substantial memory on large PDFs. The catalog's view job is only visual debugging and page-image inspection for extraction development, not a general PDF reader or renderer: Page.to_image() produces a PageImage for checking detected objects, and the CLI text output is a text projection, not a viewer.
The catalog has no edit or convert job and none should be added; cropping and filtering return derived in-memory page views and do not write PDFs. No redaction, signing, OCR, Office conversion, table-accuracy guarantee or general rendering claim is made.
Password-protected PDFs can be opened when the password is supplied, but decryption beyond that is not an editing feature.
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
- Windows · macOS · Linux · Self-hosted
- 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
-
MIT.
MIT. The repository LICENSE.txt is the MIT License, copyright 2015 Jeremy Singer-Vine, and PyPI classifies the package as OSI-approved MIT.
The package is pure Python with direct dependencies on pdfminer.six==20260107, Pillow>=12.2.0 and pypdfium2>=5.9.0; the wheel is py3-none-any, while Pillow and pypdfium2 may bring platform wheels. There is no paid tier, hosted service or commercial edition.
- Redaction
- No redaction feature
- Programmatic access
- Embeddable library · Command line
- Last availability check
- Responded in 417 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.
What that does not establish
The vendor’s own site was read on 22 September 2026 and contains no mention of redaction, sanitisation, blackout or whiteout. Absence from a vendor’s own material is not proof that a feature does not exist - it may be undocumented, or on a page the reading did not reach - but for a NEGATIVE claim it is the strongest evidence available, and it is weaker than a positive quote.
Recorded as such rather than presented as certainty.
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.
-
“It's also helpful to know what features `pdfplumber` does __not__ provide: PDF *generation*; PDF *modification*; Optical character recognition (OCR); Strong support for extracting tables from OCR'ed documents”
Checked by us - the source says this Read 22 September 2026
Confirmed: the claim is the sentence introducing a list of four things pdfplumber does not provide, and all four items match the list exactly - PDF generation, PDF modification, Optical character recognition (OCR), and strong support for extracting tables from OCR'ed documents. The library's own reference to "strong support" rather than none is itself a careful distinction and the claim keeps it.
Documenting what a tool cannot do is rare enough to be worth noting: of the libraries in this tier, this and Tesseract.js's "does not support PDF files" are the two that state their limits up front. Recorded as the project's documentation; no control was run.
Standing: Re-read: the text is unchanged, but the page publishes values that move
Check it yourself: the source, the SHA-256, and how we checked
- From
- the text a browser renders
- SHA-256
- 961a43459890c2ee1f1eab1dc08aa21af8f57643903700d1b379504f3465bcd8
How we checked
Re-verified verbatim on 2026-09-22: https://github.com/jsvine/pdfplumber re-rendered in headless Chrome with scripts/render-page.mjs and the claim's wording found in the rendered text. Originally verified on 2026-09-21. sourceHash is the SHA-256 of the re-rendered text, held as rv-github-com-jsvine-pdfplumber-0c32ac88.txt.
-
“`pymupdf` is substantially faster than `pdfminer.six` (and thus also `pdfplumber`) and can generate and modify PDFs”
Checked by us - the source says this Read 22 September 2026
Confirmed verbatim, and this sentence sits in the library's comparison of alternatives, where the full text runs on past the claim's end: pymupdf "can generate and modify PDFs, but the library requires installation of non-Python software (MuPDF)". So the sentence the claim quotes is a favourable comparison, and the sentence immediately after it is an unfavourable one the claim truncates - for a Python-only project, needing to install MuPDF is the practical drawback.
Reading the two together is the honest position: pdfplumber's own documentation says pymupdf is faster and more capable, and also harder to install. That is an unusual thing for a project to publish about a competitor, and it makes the source more useful than the claim.
Standing: Re-read: the text is unchanged, but the page publishes values that move
Check it yourself: the source, the SHA-256, and how we checked
- From
- the text a browser renders
- SHA-256
- 961a43459890c2ee1f1eab1dc08aa21af8f57643903700d1b379504f3465bcd8
How we checked
Re-verified verbatim on 2026-09-22: https://github.com/jsvine/pdfplumber re-rendered in headless Chrome with scripts/render-page.mjs and the claim's wording found in the rendered text. Originally verified on 2026-09-21. sourceHash is the SHA-256 of the re-rendered text, held as rv-github-com-jsvine-pdfplumber-0c32ac88.txt.
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.