Private PDF tools that run entirely on your computer.
23 tools · No uploads · No account · No telemetry · Works offline
View downloads · Get the iPhone app · Visit offpdf.com · Star OffPDF on GitHub · Contribute
Your files never leave your computer. OffPDF processes documents locally and always writes the result to a new file, leaving the original untouched.
OffPDF is a free, MIT-licensed desktop toolbox for everyday PDF work. It uses local engines such as qpdf, Poppler, Tesseract, and LibreOffice, with no cloud service in the middle.
- Private by design. No uploads, accounts, analytics, telemetry, or remote API.
- Useful offline. Install it once and keep working without a connection.
- One focused toolbox. Organize, convert, compress, OCR, protect, and repair PDFs.
- Open and inspectable. The app and its privacy model are available here under MIT.
| Organize | Convert | Optimize & secure |
|---|---|---|
| Merge PDFs | Office / HTML to PDF | Compress PDF |
| Split PDF | PDF to Office | Protect PDF |
| Organize pages | PDF to images | Unlock PDF |
| Page numbers | OCR (make searchable) | Repair PDF |
| Watermark | PDF/A (archive) | Edit metadata |
| Crop pages | PDF to text | |
| Stamp / Sign | ||
| Edit PDF | ||
| Poster / tile print | ||
| N-up / Booklet | ||
| Compare PDFs | ||
| Remove blank pages |
The Edit PDF workspace adds text, images, shapes, links, and freehand drawing as new content. It can also create PDF notes, highlights, underlines, strikeouts, and ink annotations while preserving existing annotations.
Edit existing text. Change a line of existing text in the document's own font when OffPDF can verify the change: every other glyph is checked to stay within 0.01 pt, lines that can't be changed safely say why, and the original file is never overwritten. See docs/EDIT_TEXT.md.
For interactive PDFs, OffPDF can fill existing AcroForm text fields (including multiline fields), checkboxes, radio buttons, combo boxes, and list boxes. Form fields stay interactive by default.
The two flattening options have different scopes:
- Flatten form fields turns supported form widgets into page content while leaving other annotations interactive.
- Flatten annotations turns all remaining annotations into non-interactive page content. When a PDF contains form fields, OffPDF requires form fields to be flattened as part of this operation.
Current limits: XFA forms are not supported, and only the first PDF's AcroForm can be filled when several files are combined. Editing existing page content depends on the PDF's structure; unsupported operations leave it unchanged.
The earlier investigation behind that boundary is recorded in the source-content editing decision.
Edit text can change a supported line in the document's own font. It does not reflow paragraphs, add fonts, or change text inside reused blocks, rotated or vertical text, scanned pages, or signed and encrypted PDFs. Existing images are not replaced. See Edit text limitations.
| Platform | Package | Status |
|---|---|---|
| Windows x64 | Download from the latest release | Available on GitHub Releases; currently unsigned while Authenticode signing is completed |
| macOS 11+ · Apple Silicon | Download from the latest release | Signed and notarized |
| Intel Mac / Linux | Build from source | No published package yet |
The Windows installer is large because it includes the local engines needed to keep its core workflows offline. The macOS build bundles qpdf, Poppler, and Tesseract; LibreOffice is optional and only needed for Office and PDF/A tools. Until Authenticode signing is complete, the Windows package is distributed only through GitHub Releases and is not linked from offpdf.com.
All published binaries are available on the Releases page.
See the code signing policy for how official release artifacts are built, approved, and verified.
OffPDF is also available for iPhone on the App Store. Scan, organize, sign, and edit PDFs on your phone; documents are processed on the device. The app is free to download, with optional Pro tools available as a one-time purchase. Learn more about the mobile app.
Android is in development and is not available to download yet. This repository contains the open-source desktop app; the mobile app is a separate, proprietary codebase.
A packaged build registers OffPDF as an Open With handler for the same types
the in-app picker already accepts (PDF, images including HEIC/HEIF, and Office).
It is not the silent default PDF app (bundle.fileAssociations uses
rank: Alternate). Choose OffPDF from Finder, Explorer, or your Linux file
manager.
Opened files go into the existing workspace. No merge, compress, convert, or redact job starts until you pick a tool. If OffPDF is already running, the existing window is focused and the files are added there.
Association metadata lives in src-tauri/tauri.conf.json. Full Finder/Explorer
clicks need a packaged build (npm run tauri:build) or a local tauri:dev
session plus a manual OS association.
- Documents are processed by local binaries on your machine.
- Preview, search, and editing may pass locally generated page data, thumbnails, or extracted text to the bundled interface. This data stays inside the app.
- There is no account system, cloud sync, analytics, telemetry, or remote API.
- The production app uses Tauri's local custom protocol and a restrictive CSP.
- Auto-update is not enabled.
See PRIVACY.md for the plain-language privacy statement.
- Node.js 18+
- Rust via
rustup - Tauri v2 platform prerequisites
qpdffor core PDF operations- Optional: Poppler, Tesseract, and LibreOffice for the tools listed below
# macOS
brew install qpdf poppler tesseract
brew install --cask libreoffice
# Debian / Ubuntu
sudo apt install qpdf poppler-utils tesseract-ocr libreofficeInstall dependencies and run the desktop app:
npm install
npm run tauri:devRun the checks used by CI:
npm run build
npm testCreate a desktop bundle:
npm run tauri:build| Engine | Used for |
|---|---|
qpdf |
Merge, split, organize, encrypt, decrypt, repair, lossless optimization, and writing Edit text changes |
Poppler (pdftoppm, pdftotext) |
Previews, image export, comparison, text export, lossy compression, and verifying Edit text changes |
| Tesseract | OCR and searchable PDFs |
| LibreOffice | Office conversion and PDF/A export |
Project structure
.
|-- src/ # React + TypeScript frontend
| |-- components/ # shared UI, PDF controls, layout, job status
| |-- features/ # tool-specific screens
| |-- lib/ # tool registry, validation, Tauri commands
| |-- routes/ # home, settings, about
| |-- state/ # Zustand stores
| `-- styles/
|-- src-tauri/ # Rust backend and Tauri configuration
| |-- src/
| | |-- commands/ # command handlers
| | |-- pdf_engine/ # engine resolution and PDF operations
| | `-- utils/ # disk, temp, and process helpers
| `-- tauri.conf.json
`-- public/pdfjs/ # bundled pdf.js assets
Bug reports, feature ideas, documentation improvements, translations, and code contributions are welcome. Read CONTRIBUTING.md before opening a larger change, and check the open issues for current work.
Please report security-sensitive issues privately as described in SECURITY.md.
OffPDF is under active development. See the roadmap for current priorities and known platform limitations.
The desktop app in this repository is MIT-licensed. The separate mobile app is not covered by this repository's license.
