ZenPDF is an open-source PDF tools web app with a Next.js frontend, Convex backend, and Python worker.
- Merge PDF, Split PDF, Compress PDF
- PDF to Word, PDF to PowerPoint, PDF to Excel
- Word to PDF, PowerPoint to PDF, Excel to PDF
- Edit PDF, PDF to JPG, JPG to PDF
- Sign PDF, Watermark, Rotate PDF, HTML to PDF
- Unlock PDF, Protect PDF, Organize PDF
- PDF to PDF/A, Repair PDF, Page numbers
- Scan to PDF, OCR PDF, Compare PDF, Redact PDF, Crop PDF
apps/web: Next.js app (UI, API routes, Convex client)apps/worker: background worker for PDF processingdocs: product, architecture, feature internals, and operations
- Copy environment files:
apps/web/.env.example->apps/web/.env.localapps/worker/.env.example->apps/worker/.env
- Ensure
ZENPDF_WORKER_TOKENmatches in both env files. - Start Convex (terminal 1, long-running):
cd apps/web && npx convex dev
- Start web app (terminal 2, long-running):
cd apps/web && npm install && npm run dev
- Start worker (terminal 3, long-running):
cd apps/worker && python -m pip install -r requirements.txt && python main.py
- Open
http://localhost:3000.
- Product scope:
docs/PRD.md - System design:
docs/ARCHITECTURE.md - Per-feature internal logic:
docs/FEATURE_LOGIC.md - Security, deploy, monitoring, self-host ops:
docs/OPERATIONS.md - Contributor workflow:
CONTRIBUTING.md
- ZenPDF is licensed under the GNU Affero General Public License v3.0 (
AGPL-3.0). - See
LICENSEfor full terms.
- Copyright (c) 2026 Rohan Patnaik.
- Forks and redistributions must preserve copyright and license notices.
- Hosted modified versions must provide corresponding source code to users under AGPL.
- See
NOTICEfor attribution details.
