# Online PDF Editor
> Free, privacy-first PDF editor that runs in the browser. Replace text, reorder pages, extract images and convert to Word — no install, no signup. Built with Flask + PyMuPDF on Google Cloud Run.
- URL: https://spoko.space/online-pdf-editor/
- Published: 2026-06-25
- Tags: python, flask, pymupdf, cloud-run, unocss, i18n
---## A PDF editor I built for myself — then made public

I work with a lot of PDFs: workshop manuals, parts documentation, invoices. The usual online editors either paywall the basics, push a desktop install, or quietly upload your files to a server you don't control. I wanted something faster and cleaner — so I built **pdf.uper.pl**, a small suite of PDF tools that run straight in the browser.

It started as a private utility for my own workflow. It turned out useful enough that I decided to release it publicly, for free, with no signup and no tracking.

## What it does

The toolset covers the everyday PDF jobs that usually send people hunting for a desktop app:

### Page management with live thumbnails

Upload a document and every page renders as a draggable thumbnail. Reorder by dragging, drop a page into the trash to remove it, and prepend or append a generated cover page — then download the rebuilt PDF.

### Batch text replacement

Each rule is a find/replace pair, and you can stack as many as you need to clean up a document in one pass — handy for swapping recurring strings across a long manual. A built-in search previews where each match sits before you commit.

### Pull images out of a PDF

Point it at a PDF and every embedded photo or graphic is listed with its dimensions and file size. A minimum-size slider hides small icons and logos, then you grab a single image or all of them as a ZIP.

### Convert to Markdown, Word or text

Extract the content of a PDF into an editable document — Markdown, plain text or Word (DOCX). Tick several formats and they come back together in a ZIP.

## Privacy by design

The whole thing is built around not keeping your data:

- Files are processed **in memory, only for the duration of the request** — the upload and every generated artifact are removed right after the response.
- **No account, no signup.** None of the tools require registration to use them.
- All traffic is served over HTTPS, with Cloudflare in front of the origin.

For documents like invoices or signed contracts, "nothing is stored" isn't a marketing line here — it's how the request lifecycle actually works.

## Bilingual from the ground up

The interface ships in **Polish and English**, each on its own set of URLs (`/strony` ↔ `/en/pages`) with proper hreflang and per-language SEO metadata, so each version is indexable on its own.

## Technical Implementation

A deliberately small Flask monolith: page routes render the bilingual UI, a handful of `/api/*` endpoints do the PDF work with PyMuPDF, and the frontend styling is generated from the [Spoko Design System](/spoko-design-system/) via UnoCSS.

It's free to use and gains new tools over time. Try it at [pdf.uper.pl](https://pdf.uper.pl/en).