Skip to content

JhaSourav07/QuickPDF

Repository files navigation

QuickPDF

PDF tools that respect your privacy — merge and split documents entirely in the browser.

React Vite TailwindCSS pdf-lib License: MIT PRs Welcome Netlify Status

🚀 Try the Live Demo Here


Every major PDF tool — Smallpdf, ILovePDF, Adobe Acrobat Online — routes your files through a remote server. You upload a confidential contract, a financial statement, a medical record — and it passes through infrastructure you don't control.

QuickPDF is different. It processes everything 100% client-side using pdf-lib in the browser. Your files never leave your device. Not for a millisecond. No backend. No uploads. No data liability.


Features

  • Merge PDFs — Combine unlimited PDFs with drag-and-drop reordering
  • Split PDFs — Extract any page range with start/end page precision
  • Zero uploads — All processing happens in-memory in your browser via WebAssembly
  • No watermarks — Clean, unbranded output on every export
  • Instant — No network round-trips; operations complete in milliseconds
  • Fully responsive — Works on desktop, tablet, and mobile

Tech Stack

Layer Technology
UI Framework React 19
Build Tool Vite 8
PDF Engine pdf-lib 1.17 (client-side / WASM)
Styling Tailwind CSS 4
Animations Framer Motion 12
Routing React Router 7
Icons Lucide React

Screenshots

Screenshot 2026-03-26 023302 Screenshot 2026-03-26 023335 Screenshot 2026-03-26 023512 Screenshot 2026-03-26 023607

Getting Started

Prerequisites: Node.js v18+

# Clone the repo
git clone https://github.com/jhasourav07/quickpdf.git
cd quickpdf

# Install dependencies
npm install

# Start dev server
npm run dev

Open http://localhost:5173 in your browser.

# Production build
npm run build

# Preview production build locally
npm run preview

The dist/ output is fully static — deploy to Vercel, Netlify, or Cloudflare Pages with zero configuration.


Project Structure

src/
├── components/
│   ├── layout/
│   │   ├── Navbar.jsx              # Sticky top navigation
│   │   └── PageContainer.jsx       # Page layout wrapper
│   ├── pdf/
│   │   └── Dropzone.jsx            # Drag-and-drop file input
│   └── ui/
│       ├── AnimatedBackground.jsx  # Mouse-reactive background
│       └── Button.jsx              # Reusable button component
├── pages/
│   ├── Home/                       # Landing page
│   ├── Merge/                      # Multi-file merge tool
│   └── Split/                      # Page-range split tool
├── services/
│   └── pdf.service.js              # Core PDF logic (merge, split, page count)
└── utils/
    └── formatters.js               # File size helpers

How It Works

QuickPDF uses pdf-lib — a pure JavaScript library that runs entirely in the browser with no server dependency.

Merging

  1. Files are read as ArrayBuffer via the browser's native File API
  2. Each PDF is loaded into a PDFDocument instance in memory
  3. Pages are copied into a new document in the user-defined drag order
  4. The merged document is serialized and triggered as a browser download — never transmitted anywhere

Splitting

  1. User uploads a PDF; page count is extracted immediately in-memory
  2. User specifies start and end pages
  3. Only the selected page range is copied into a new PDFDocument
  4. Output is downloaded directly — the original file is never modified

Roadmap

  • Sign PDF — Local, private e-signature drawing tool
  • Add Page Numbers — Auto-stamp sequential numbers on footers
  • Extract Text (OCR) — Pull readable text directly to clipboard
  • Protect/Unlock PDF — Add or remove passwords locally

Contributing

  1. Fork the repository
  2. Create a branch: git checkout -b feat/your-feature
  3. Commit your changes: git commit -m 'feat: add your feature'
  4. Push: git push origin feat/your-feature
  5. Open a Pull Request

Please follow Conventional Commits for commit message format.


Security

QuickPDF is architected so that a breach of the application itself cannot expose user files — because files are never transmitted. The attack surface is limited entirely to the user's own browser session.

If you discover a vulnerability, please open a GitHub Security Advisory rather than a public issue.


License

MIT © Sourav Jha

About

A privacy-first, zero-backend web application for merging and splitting PDFs directly in the browser.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors