Independent guide. Not affiliated with the pdfplumber project or its maintainers.Official repository: jsvine/pdfplumber ↗

Reference

Versions and upgrade notes

pdfplumber has had 76 releases on PyPI since 2015, and 0.11.10 is the current one. Most upgrades are drop-in. A handful changed results or renamed things, and those are the ones collected here, checked against the project's changelog and the package metadata on PyPI.

Tested with pdfplumber 0.11.10 · Python 3.13Updated 2026-11-04

Short answer

The latest release is 0.11.10 (14 June 2026), with pdfminer.six 20260107. Check what you have:

check_version.py
import pdfplumber
import pdfminer

print("pdfplumber", pdfplumber.__version__)
print("pdfminer.six", pdfminer.__version__)
Outputcaptured · Python 3.13.18 · pdfplumber 0.11.10
pdfplumber 0.11.10
pdfminer.six 20260107

Upgrade with python -m pip install -U pdfplumber. Every example on this site was run with the versions shown under each output.

pdfplumber releases on PyPI per year
05101520201520162017201820192020202120222023202420252026
Show data
LabelValue
20154
201613
20178
20185
20193
202011
20214
20229
20237
20246
20254
20262

Source: PyPI release history, checked 2026-11-04: 76 versions with files, the first uploaded 2015-08-24

Releases have slowed to a few a year, and the last three all update pdfminer.six, the parser underneath. That is a reason to upgrade on its own: two of those updates fixed security issues.

Which version should you be on?

Your situation Use Why
Python 3.10 or newer 0.11.10 Current; includes both pdfminer.six security fixes
Python 3.9 0.11.8 What pip resolves; has the first security fix but not the second
Python 3.8 0.11.5 What pip resolves; no security fixes. Upgrade Python if you parse untrusted PDFs

pdfplumber itself declares requires-python >= 3.8, but its newer pins of pdfminer.six and Pillow need newer Python, so pip quietly picks an older pdfplumber on old interpreters. We verified those resolutions in clean environments (install guide). The two security issues are described in the FAQ.

Changes that can break your code

Ordered newest first. Each line links to the release notes on GitHub.

Version Change What to do
0.11.7 stroking_pattern and non_stroking_pattern removed from objects Stop reading those keys; the colour keys remain
0.11.5 PageImage.debug_tablefinder() argument renamed to table_settings= Rename the keyword, or pass the settings positionally
0.11.0 word["direction"] is now "ltr", "rtl", "ttb" or "btt" instead of 1 / -1; vertical_ttb and horizontal_ltr deprecated for char_dir and char_dir_rotated Compare with the strings; move to the new parameters
0.10.0 to_image() renders with pypdfium2 instead of Wand/ImageMagick; colours are tuples; Python 3.7 dropped; vestigial font and name object keys removed; PageImage.save() quantizes to 256 colours by default Remove ImageMagick setup; compare colours as tuples; pass quantize=False for photos (images)
0.9.0 Ligatures expanded by default (fi → fi); stricter word segmentation; curves now count as table edges Pass expand_ligatures=False to keep them; re-check table results on drawings with curves
0.8.0 In table extraction, keep_blank_chars must be passed as text_keep_blank_chars; curve["points"] deprecated for pts; layout=True text is padded to the page size Rename the setting; read pts

Release history since 0.7

Version Date pdfminer.six Highlights
0.11.10 2026-06-14 20260107 pdfminer.six update; higher minimum Pillow (12.2.0) and pypdfium2 (5.9.0)
0.11.9 2026-01-05 20251230 pdfminer.six update with the fix for CVE-2025-70559
0.11.8 2025-11-08 20251107 edge_min_length_prefilter table setting (dashed lines); pdfminer.six fix for CVE-2025-64512
0.11.7 2025-06-12 20250506 Page.trimbox, bleedbox, artbox; pattern keys removed
0.11.6 2025-03-27 20250327 First pdfminer.six update in over a year; to_csv() uses minimal quoting; pdfminer errors on malformed PDFs are caught and wrapped
0.11.5 2025-01-01 20231228 CLI --format text; raise_unicode_errors option; name on image objects
0.11.4 2024-08-18 20231228 Type-hint fix for Python 3.8
0.11.3 2024-08-07 20231228 Table.columns; extract_words(return_chars=True); unicode_norm; repair(setting=...); non-zero mediabox origins handled
0.11.2 2024-07-06 20231228 extra_attrs for dedupe_chars()
0.11.1 2024-06-11 20231228 page.close() also clears the text map cache; annotation fixes on rotated pages
0.11.0 2024-03-07 20231228 Right-to-left and vertical text parameters; curve["path"] and curve["dash"]
0.10.4 2024-02-10 20221105 x_tolerance_ratio; structure_tree; page.close() back; force_mediabox
0.10.3 2023-10-26 20221105 Marked content (mcid, tag); gs_path for repair
0.10.2 2023-07-29 20221105 PDF.path
0.10.1 2023-07-19 20221105 antialias for to_image()
0.10.0 2023-07-16 20221105 (inferred) pypdfium2 rendering; pdfplumber.repair() and open(repair=True); Page.find_table()
0.9.0 2023-04-13 20221105 extract_text_lines(); regex groups in search(); ligature expansion
0.8.1 2023-04-08 20221105 Fix for drawing rectangle fills with newer Pillow versions
0.8.0 2023-02-13 20221105 Text options accepted by table extraction; to_image(width=, height=)
0.7.0–0.7.6 2022 20220524, then 20221105

Dates are the changelog’s. PyPI shows 0.11.10 as uploaded on 15 June 2026, because the upload happened after midnight UTC. PyPI’s metadata for 0.10.0 lists no dependencies at all; the releases on either side of it, 0.9.0 and 0.10.1, both pin 20221105.

Pin it

For applications, pin the version you tested with, so a future upgrade is a decision rather than a surprise:

Terminal
python -m pip install pdfplumber==0.11.10

Pinning pdfplumber also pins pdfminer.six, because each release requires one exact pdfminer.six version. Do not pin pdfminer.six separately to something else: pip will refuse the combination.