DEV Community

Swayam Agrawal
Swayam Agrawal

Posted on

How I Built 24+ Free PDF Tools Using Next.js and pdf-lib

I spent the last few months building AuraPDF — a completely free online PDF tool suite with 24+ tools. No signup, no watermarks, no hidden fees.

🔗 Live: aurapdf.com

Why I Built This

Every time I needed to merge or compress a PDF, I'd land on sites that either:

  • Required signup for basic features
  • Added watermarks to free users
  • Had sketchy privacy practices (uploading files to unknown servers)

So I built my own. All processing happens client-side using JavaScript — your files never leave your browser for most tools.

Tech Stack

  • Frontend: Next.js 15 (App Router) + TypeScript
  • PDF Processing: pdf-lib (server-side), pdfjs-dist (client-side rendering)
  • Styling: Custom CSS design system with dark mode
  • Auth: Clerk (optional, not required to use tools)
  • Deployment: Vercel
  • Backend: Node.js API routes for heavy operations (compress, convert)

Tools Available

📁 Organize

  • Merge PDF — combine multiple files
  • Split PDF — separate into parts
  • Rotate, Delete, Extract, Reorder pages
  • Add page numbers

🔄 Convert

  • JPG/PNG/HEIC → PDF
  • PDF → Word/Excel/JPG/PNG
  • URL → PDF (headless Chrome)

🔒 Security

  • Password protect (AES-256)
  • Unlock PDF
  • Add watermark

⚡ Optimize

  • Compress PDF (up to 90% reduction)
  • Crop PDF
  • PDF Health Checker

Biggest Technical Challenges

1. Client-Side PDF Rendering on Mobile

PDF.js + canvas on mobile browsers was a nightmare. Mobile Safari has strict canvas memory limits. I had to:

  • Implement a render queue (one thumbnail at a time)
  • Cap canvas dimensions to prevent crashes
  • Add auto-retry with breathing pauses between renders

2. Drag & Drop on Touch Devices

Used dnd-kit with custom TouchSensor — needed 1.5s long-press delay so users could scroll without accidentally triggering drag.

3. SEO for 120+ Pages

Built a programmatic SEO system generating tool pages, compression target pages, how-to guides, and multilingual content — all from TypeScript data files.

What I Learned

  1. Client-side PDF processing is surprisingly powerful — pdf-lib can do most things without a server
  2. Mobile is a completely different beast — test on real devices, not just Chrome DevTools
  3. SEO takes months — even with perfect technical SEO, new domains need time to build trust

Try It Out

👉 https://aurapdf.com

Would love feedback from the dev community. What features would you want in a PDF tool? Drop a comment! 🙌

Top comments (0)