v1.0.1 · MIT licence

PDF → Text

Pull the text out of any PDF, in your own browser. Nothing is uploaded.

No subscription. The download link is yours to keep — re-download any time.

What it does

Everything below is in the app you download — no add-ons, no upsell.

Runs entirely on your machine

The PDF is parsed in the tab with PDF.js. No upload, no account, no tracking code, no server bill.

Every page, one plain text

Progress bar while it walks the document, then one editable text block you can clean up.

Download .txt or copy it

One click for a file, one for the clipboard.

Optional clean & translate

Point it at a local model and it will clean up OCR noise or translate into 16 languages, 1,500 characters at a time, with pause and stop.

Paste text too

Not every source is a PDF — the paste box takes notes, e-mails, anything.

What you get

The whole package, nothing hidden behind a plan:

CHANGELOG.md
LICENSE
README.md
VERSION
docs/USAGE.md
src/index.html
vendor/pdf.min.js
vendor/pdf.worker.min.js

Requirements

Any modern browser. Python 3 only to serve the folder — or any static host.

No OCR: a scanned PDF with no text layer comes out empty.

One file at a time — there is no batch mode.

Browsers refuse to start a Web Worker from file://, so serve the folder (python3 -m http.server). Double-clicking the file extracts nothing.

Questions

Straight answers, including the ones that cost a sale.

Do my documents leave my computer?

No. The PDF never leaves the browser tab. Translation is the only step that talks to anything, and only to a model endpoint you point it at.

Do I need an account or a key?

No account. Only if you use the optional translation and point it at a hosted endpoint do you need that endpoint's key.

Why does double-clicking give an empty result?

PDF.js runs as a Web Worker and browsers block workers on file://. Serve the folder over HTTP — one command, no install.

Will it read a scanned document?

Only if the scanner already added a text layer. There is no OCR.

Can I translate without a cloud service?

Yes — set API Source to Local, run ollama pull translategemma:latest, and pick that model. Fully offline.

Tell us what is wrong

A bug, a missing feature, a question before you buy — this goes to the operator, not to a ticket system. How feedback works →