DEV Community

trixterx102-byte
trixterx102-byte

Posted on

I Built a PDF Toolkit That Runs 100% in the Browser — No Server, No Uploads

A while back I got tired of using PDF tools that force you to upload your file to a server just to do something simple like merge two PDFs or compress a scanned document. So I built pdfcevir — a small toolkit where everything happens client-side, in the browser.

The problem

Most free PDF tools online work the same way: you upload your file, their server processes it, then you download the result. That's fine for most use cases, but it means:

  • Your file (which might be a contract, an ID scan, a private document) sits on someone else's server, even briefly
  • You're limited by their server's speed and uptime
  • Many tools cap file size or usage unless you pay

The approach

pdfcevir does everything in the browser using pdf-lib and pdf.js. No file ever leaves your device. There's no backend processing the PDF — the JavaScript running in your tab does all the work.

Tech stack is intentionally minimal:

  • Plain HTML/CSS/JS — no framework, no build step
  • pdf-lib for creating/modifying PDFs (merge, split, rotate, watermark, page numbers)
  • pdf.js for rendering and extracting content (PDF to image, PDF to Word text extraction)
  • heic2any for converting iPhone HEIC photos before turning them into PDFs
  • Hosted free on Vercel, works as a PWA (installable, works offline once loaded)

What it does

9 tools so far:

  • Image (JPG/PNG/HEIC) → PDF
  • PDF compression
  • PDF → editable Word (.docx) text extraction
  • Merge PDFs
  • Split PDFs
  • Rotate pages
  • Add page numbers
  • PDF → image
  • Add watermark

What I learned

The trickiest part was PDF compression — since there's no server-side image processing library available, compression works by re-rendering pages as images at a lower quality and rebuilding the PDF. It's effective for scanned/image-heavy PDFs, but it does mean the text is no longer selectable afterward, which was an important tradeoff to communicate clearly in the UI rather than let people discover it after the fact.

Try it / feedback welcome

It's free, no account needed: https://pdfcevir.vercel.app

Source is on GitHub (MIT licensed): https://github.com/trixterx102-byte/pdfcevir

Would love feedback, especially on edge cases where a PDF breaks something, or ideas for what tool to add next.

Top comments (0)