Convert your images into a single PDF — fast, private, and entirely in your browser.
Pic2PDF is a lightweight React + Vite web app that lets you:
- Reorder images with drag-and-drop
- Choose scaling behavior (Fit/Contain vs Fill/Cover)
- Adjust image compression quality to shrink PDF size
- Set a custom output filename
- Export a clean, multi-page PDF
All processing happens locally in your browser using a Web Worker and jsPDF — your images never leave your device.
- Drag-and-drop image upload (JPG/PNG)
- Instant previews and easy removal
- Reorder images by dragging
- Quality slider to balance size vs clarity
- Client-side PDF generation via Web Worker
- Modern, responsive UI
- React 19 + TypeScript
- Vite 6
- Web Worker (
workers/pdf.worker.js) - jsPDF (via CDN inside the worker)
Prerequisites: Node.js 18+ (or any current LTS)
- Install dependencies:
npm install- Run the development server:
npm run dev- Open the app:
- Vite will print a local URL (typically
http://localhost:5173)
- Drag and drop JPG/PNG files into the upload area (or click “Browse Files”)
- Reorder images by dragging the cards
- Choose scaling mode:
- Contain: Fit the whole image within the page (may add margins)
- Cover: Fill the page (may crop edges)
- Adjust image quality to reduce file size (lower = smaller PDF)
- Set the PDF filename
- Click “Generate PDF” to download
npm run build
npm run previewThis creates an optimized build in dist/. You can deploy the static files to any static host.
Pic2PDF runs fully in your browser. Images are processed locally using a Web Worker; no files are uploaded to a server.
App.tsx— main UI and statecomponents/— upload, preview, and controlshooks/usePdfGenerator.ts— PDF generation hook and worker orchestrationworkers/pdf.worker.js— jsPDF worker that composes the PDFpublic/workers/pdf.worker.js— public copy for production pathing
MIT — feel free to use and modify.