This free browser tool finds PyMuPDF references and shows replacement lines for pypdf, pypdfium2, or pdfplumber.

Try it freeFull version · $149 once →
What you get: Whole-workspace migration plan (each use mapped to its replacement), a dated AGPL exposure report for the company and a CI gate that fails builds adding new PyMuPDF use.
Updated 2026-10-01 · ReadyStack
Finds every PyMuPDF / fitz import, call and requirement line (AGPL-3.0 or paid Artifex licence) and prints the exact pypdf, pypdfium2 or pdfplumber line that replaces it. Runs entirely in your browser — nothing is uploaded.
Same engine as the VS Code extension, byte for byte.
Free for the file open in your editor - no key, no limit. The workspace sweep and the report ask for a key.
VS Code MarketplaceOpen VSX (Cursor, VSCodium)ext install ReadyStack.pypdf-migration-check
Team? One key for every ReadyStack linter, 5 seats, $149 once
Whole-workspace migration plan (each use mapped to its replacement), a dated AGPL exposure report for the company and a CI gate that fails builds adding new PyMuPDF use.
One payment, one licence key for this tool. The key is shown right after payment.
Aspose.PDF for Python via .NET, Developer Small Business: US$1199 (1 developer, 1 location)
Buy the full version — $29Need more than this one? ReadyStack Pass opens all 679 files and 561 full versions — $29/month or $199/year. See the Pass →
· ReadyStack
Real numbers from this tool, line by line.

Migrate from PyMuPDF to pypdf: 6 findings in one invoice worker
6 findings in a 13-line invoice export worker: that is what the checker printed for a Python backend team running PyMuPDF behind a customer portal.
What Artifex states
Artifex licenses PyMuPDF under the GNU AGPLv3 or a commercial licence. Its licensing page (artifex.com/licensing) says you cannot deploy the open-source edition as part of a server-based application or service without disclosing your own application's full source code under AGPL to any users interacting with it, and that if you cannot meet the AGPL requirements a commercial licence is required. There is no public price on that page. The exposure starts the day the service is deployed to users.
pymupdf4llm, the LLM and RAG helper, is published on PyPI under the same dual licence. So is the binary wheel PyMuPDFb.
What the sample file looked like
The worker opened a PDF, joined the text of every page, rendered page one to a PNG thumbnail, searched the last page for "Total due" and pulled its tables. Six lines touch PyMuPDF:
import fitz -> from pypdf import PdfReader, PdfWriter fitz.open(path) -> reader = PdfReader(path) page.get_text() -> page.extract_text() page.get_pixmap(dpi=110) -> pypdfium2.PdfDocument(path)[i].render(scale=dpi/72).to_pil() page.search_for("Total due") -> pdfplumber.open(path).pages[i].search("text") page.find_tables() -> pdfplumber.open(path).pages[i].extract_tables()
After the rewrite the same file returns 0 findings. pypdf (BSD-3-Clause) handles reading, text, merging and metadata. pdfplumber (MIT) handles word positions, search and tables. pypdfium2 (BSD-3-Clause / Apache-2.0) renders pages to images. The versions in the fixes were read on PyPI on 2026-09-30: pypdf 6.19.0, pdfplumber 0.11.10, pypdfium2 5.13.0.
Why a package scanner is not enough
pip-licenses and similar tools tell you that pymupdf is AGPL. They stop there. They do not find the six call sites, and they cannot tell you that get_pixmap needs a different library from get_text. Chatbots often answer with PyPDF2, which the project itself retired in favour of pypdf. And the PyPI package literally named fitz is an unrelated 0.0.0 project, so a requirements line reading fitz is a bug on top of a licence question.
The 25 rules
Five dependency rules cover requirements*.txt, pyproject.toml (PEP 621 and Poetry) and conda environment.yml: pymupdf, PyMuPDFb, pymupdf4llm, pymupdfpro and fitz. Six import rules cover import fitz, import pymupdf, from fitz import, pymupdf4llm, the LangChain PyMuPDFLoader and the LlamaIndex PyMuPDFReader. Fourteen call rules cover open, Matrix and Rect, get_text, get_pixmap, search_for, find_tables, insert_pdf, page_count, get_toc, set_metadata, set_rotation, get_images, insert_text and authenticate. Call rules only fire in a file that imports fitz or pymupdf, so a Tkinter get_text call stays quiet.
How to run it
Open the file in VS Code with the extension installed, or paste it into the web version. The Problems panel lists each line with its replacement.
What comes next
A single file is where most people start. The next job is the whole repository: every service, every requirements file, and proof for the company that nobody adds import fitz back next quarter. That is the workspace plan, the dated exposure report and the CI gate.
This is not legal advice. Read the Artifex terms with your counsel before deciding between a commercial licence and a migration.
It reads Python files, requirements*.txt, pyproject.toml and environment.yml, finds every PyMuPDF use (import fitz, fitz.open, get_text, get_pixmap, search_for, find_tables and 19 more patterns, 25 rules in total) and prints the exact pypdf, pdfplumber or pypdfium2 line that replaces each one. On the bundled 13-line invoice worker it reports 6 findings, one per PyMuPDF line.
Python backend developers and tech leads at companies that run PyMuPDF inside a closed-source product or a SaaS, API or RAG pipeline, for example a FastAPI invoice service or a LangChain ingest job using PyMuPDFLoader. Artifex's licensing page says server-based use under AGPL requires disclosing your full source, so these teams either buy a commercial licence or migrate.
pip-licenses and similar scanners tell you that the pymupdf package is AGPL, then stop. They do not find the 6 call sites in your code or say what replaces get_pixmap or find_tables. Chatbots often suggest PyPDF2, which is deprecated in favour of pypdf. This checker maps each line to a replacement read from PyPI on 2026-09-30.
Free, with no key and no limit: the full map for the open file, every finding with its replacement line, in VS Code and in the web version. A licence key adds the whole-workspace migration plan with each use mapped to its replacement, a dated AGPL exposure report for the company, and a CI gate that fails a build adding new PyMuPDF use.
Artifex does not publish a PyMuPDF commercial price; you contact sales. A comparable commercial library, Aspose.PDF for Python via .NET, lists its Developer Small Business licence at US$1199 for 1 developer and 1 deployment location. pypdf (BSD-3-Clause), pdfplumber (MIT) and pypdfium2 (BSD-3-Clause / Apache-2.0) cost nothing to ship in closed code.
One question, answered by the person who built it. Your email only if you want the answer sent.
Paste this code into your page. It runs in your visitor’s browser and stays up to date. Nothing your visitors type is stored.
For businesses: your name and logo instead of ours, and each visitor’s result + e-mail in your inbox (only when they tick consent) — Pro from $19/month. See Pro →
For a team or company: for an invoice with your company details, a quote or several licences, write to [email protected].
New york chatbot law — check your chatbot prompt freeWhat you get: Export the dated evidence pack - every file, finding, statute section and rule-set version in one Markdown/JSON artifact you…FreeFull version $29
AODA Accessibility Feedback Form: your Ontario feedback-process checkOntario business? See which AODA feedback channels you are missing, whether you file the accessibility compliance report by 31 December…FreeFull version $60
Log Retention requirements — check log retention values in your configThis browser tool flags log-retention values below the requirements named in the description.FreeFull version $29
BIPA Consent form — check biometric consent and retentionThis browser tool audits code that captures biometric data for missing consent and destruction schedules, excess retention, and third party…FreeFull version $29Cert Lifetime Lint — TLS validity caps 200/100/47Finds the renewal settings in your repo that outlive the public TLS cap: 200 days since 15 March 2026, 100 days from 15 March 2027, 47 days…Free
CMS 0057 deadline — check your FHIR capability statementThis browser tool audits a FHIR CapabilityStatement against the CMS-0057-F prior authorization rule.FreeFull version $29ReadyStack
Calculators, templates and deadlines for the rules that change every year — free in your browser.