Free and open source PDF viewer + editor. Simple and easy to use.
Open source — self-host free or PRO hosted by UNI SIM.
A clean Progressive Web App for viewing, annotating, and signing PDFs — works on Windows, macOS, iOS, and Android in any modern browser, with no upload to a server. Files stay on your device.
- View multi-page PDFs with zoom (50%–300%), pinch-to-zoom on touch, and a thumbnail navigator
- Annotate with free draw, text, rectangles, ticks, and crosses, in any of six colours
- Sign by drawing on a pad; signatures are auto-cropped, saved to your device, and re-usable across PDFs
- Edit placed annotations — drag to move, resize handles on shapes and signatures, double-click text to retype, change colour and size of selected text on the fly
- Export the annotated PDF; all annotations and signatures are baked into the saved file
- Recents are remembered locally so you can reopen a PDF with one tap, even offline
- Installable PWA — add to home screen on phone or install on desktop, works offline after first load
Open the app URL, then:
- iOS Safari: Share → Add to Home Screen
- Android Chrome: menu → Install app
- Desktop Chrome / Edge: install icon in the address bar
- Open a PDF — click Open PDF or drag-and-drop a file anywhere on the page
- Pick a tool from the toolbar (Text, Draw, Tick, Cross, Rectangle, or Sign)
- Click / tap on the page to place the annotation
- Switch to Select to drag, resize, recolour, or delete existing annotations
- Save to download the annotated PDF
Signatures: tap Sign → Draw new signature, sign with mouse or finger, save. Pick it from the menu, then tap on the PDF to place. Drag the corners to resize, drag the body to reposition.
Requires Node 22+ and npm.
git clone https://github.com/JamesmarkeyUK/Universal_PDF.git
cd Universal_PDF
npm install
npm run devThe dev server runs at http://localhost:5173. Build for production with npm run build.
Pushes to main auto-deploy to GitHub Pages via the Actions workflow.
- Vite 6 + React 18 + TypeScript — app shell
- pdfjs-dist — PDF rendering (Mozilla)
- pdf-lib — PDF export with annotations baked in
- react-konva — canvas overlay for shapes, text, freehand, and signatures
- Zustand — state management
- IndexedDB — recent files (binary bytes)
- localStorage — saved signatures
- Tailwind CSS v4 — styling
- vite-plugin-pwa — service worker + manifest
Issues and pull requests welcome. The project is intentionally small and dependency-light; please open an issue before adding a large feature.
MIT.