Local PDF editing for desktop workflows

PDF Editor Offline

Edit, convert, protect, redact, and clean PDFs on your machine. No account, no upload queue, no cloud storage.

Local-first Private files Free tools
PDF Editor Offline product header
62 tracked features
100+ API routes
400+ tests in repo
3 sample PDFs

What the repo supports

One local toolchain for common PDF jobs

The public surface is split into web workflows, API endpoints, CLI commands, and reusable Python core modules.

01

Edit and annotate

Page editing, metadata, watermarks, signatures, drawings, comments, images, file attachments, popup notes, polygons, and annotation appearance controls.

02

Convert both ways

PDF export to Word, PowerPoint, Excel, JPG, Markdown, TXT, EPUB, SVG, and PDF/A, plus document, text, image, CSV, JSON, and HTML imports.

03

Manipulate pages

Merge, split, extract, insert, duplicate, organize, rotate, crop, resize, compress, repair, number, and remove blank pages.

04

Protect privacy

AES PDF protection, granular permissions, unlock, metadata cleanup, hidden data cleanup, permanent redaction, temp cleanup, and safe upload validation.

05

Advanced text tools

Font-aware replace, quad-based search, font extraction, rich HTML text boxes, multi-font composition, reflow, bookmarks, TOC, and link management.

06

Automation ready

FastAPI routes, Typer commands, batch processing examples, local sample PDFs, and smoke tests for web and advanced editing flows.

Local workflow

Upload locally, operate locally, export locally.

  1. Start the app Run the backend and Vite frontend, then open the local web workspace.
  2. Load a PDF Use the editor upload flow or API upload endpoint. Files stay in local app storage.
  3. Choose a tool Edit pages, convert files, manage navigation, add annotations, clean metadata, or run batch work.
  4. Export the result Save the edited PDF or download converted outputs from the browser, CLI, or API.

Captured proof

Real screenshots from the local app

These images were captured after real API-backed operations using the sample PDFs included in this repository.

Editor workspace after uploading demo-basic.pdf.
Text search, font data, and permanent redaction.
File attachment annotation created through the web app.
Metadata and hidden-data cleanup tools.
Two sample PDFs merged successfully.
PDF to TXT conversion from the conversion panel.

Run it

Install, start, or automate.

The repo supports a Python package, local web app, Docker image, and direct Python imports.

Install from package
pip install pdf-editor-offline
Run from source
git clone https://github.com/OthmaneBlial/pdf-editor-offline.git
cd pdf-editor-offline
pip install -e ".[dev]"
./start.sh
CLI examples
pdf-editor-offline extract text input.pdf
pdf-editor-offline extract images input.pdf --output-dir ./images
pdf-editor-offline edit metadata input.pdf title "Quarterly Report"
pdf-editor-offline add image input.pdf stamp.png 0 100 120 180 80 --output stamped.pdf

Local fixtures

Sample PDFs included for demos and smoke tests

Deeper documentation

Need the full project map?

The docs page covers architecture, tool categories, API surface, security and privacy, examples, release checks, and copied source docs.

Open documentation