The Problem
Every time you upload a PDF to an online tool, you're trusting someone else with your data. Contracts, tax forms, personal docs — they all go to some server you don't control.
I wanted a better way. So I built PDFCraft — a 100% browser-based PDF toolkit.
Nothing is uploaded. No sign-ups. No limits.
What It Does
- Merge, split, compress, rotate, and crop PDFs
- Convert JPG ↔ PDF
- Add watermarks, page numbers, and passwords
- Extract images and text (OCR powered by Tesseract.js)
All of it runs locally in your browser. Close the tab, and your data is gone.
The Tech Stack
Here's what I used to make it work:
| Tool | Purpose |
|---|---|
| React 19 + TypeScript | UI and type safety |
| Vite 8 | Build tool with HMR |
| Tailwind CSS v4 | Styling |
| pdf-lib | Create, edit, and extract PDF content |
| pdfjs-dist | Render and parse PDFs |
| Tesseract.js | OCR — text extraction from scanned PDFs |
All PDF processing happens on the client side. No backend servers, no API keys, no data collection.
Key Challenges
1. Performance
Processing large PDFs in the browser can be slow. The solution? WebAssembly under the hood. pdf-lib and Tesseract.js leverage WASM for heavy lifting, making everything fast enough for real-world use.
2. File Size
Keeping the bundle small while supporting 10+ tools required careful code splitting. Each tool loads its dependencies only when you use it — so the initial load stays fast.
3. User Experience
Local processing shouldn't feel slow. I added progress indicators and processed files in chunks where possible. Users get instant feedback without wondering if the page froze.
Why I Open-Sourced It
The code is available on GitHub. I believe privacy tools should be transparent — you can inspect exactly what runs in your browser.
Try It
No sign-up, no payment, no server uploads. Just PDF tools that respect your privacy.
Follow me @pirate_haizei for more open-source projects, React tips, and browser-first tools.
Top comments (1)
Great work! What features would you like to see next? And would you prefer a one-time paid upgrade for advanced tools, or keep everything free with limits?