A fast, fully client-side PDF editor that runs in the browser. Upload PDFs, reorder/rotate/delete pages, merge multiple files, add styled text and QR codes, then export a new PDF — all without a server. Your files never leave your device.
- Upload & merge multiple PDFs (drag-and-drop or file picker)
- Page management — reorder (drag), rotate, and delete pages
- Text annotations — click to place; edit content inline (double-click)
- Font family, size, color, bold / italic / underline
- Alignment, line height, opacity, and highlight color
- Auto-sizing boxes (no wrapping — Shift+Enter for a new line)
- QR codes — place, edit the encoded URL/text, recolor, and resize
- Zoom, undo / redo, and one-click Export PDF
- React 19 + TypeScript + Vite
- PDF.js — render PDF pages to canvas
- Konva / react-konva — interactive annotation layer
- pdf-lib — write the exported PDF
- zustand — state, @dnd-kit — drag-and-drop, qrcode — QR generation
This project uses pnpm.
pnpm install
pnpm dev # start the dev server
pnpm build # type-check + production build
pnpm preview # preview the production buildThen open the URL Vite prints (usually http://localhost:5173).