A premium, open-source PDF toolkit built entirely in the browser. Merge, split, compress, convert, and manage your documents safely locally without ever sending them to a server.
Live Site • Features • Tech Stack • Setup Guide • Architecture
PDFly brings together 12 powerful PDF tools into one seamless, browser-based ecosystem.
| Feature | Description |
|---|---|
| Merge PDFs | Combine multiple PDFs into one with an intuitive drag-and-drop reordering interface. |
| Split PDFs | Split by custom page ranges or extract individual pages effortlessly. |
| Rotate Pages | Rotate pages by 90°, 180°, or 270° - apply globally or selectively. |
| Manage Pages | Visually delete unwanted pages or rearrange them on an interactive canvas. |
| Feature | Description |
|---|---|
| PDF to Image | Export pages as high-quality JPG or PNG files, bundled into an instant ZIP download. |
| Image to PDF | Stitch together multiple images (JPG, PNG, WebP) into a clean, unified document. |
| Feature | Description |
|---|---|
| Compress Files | Intelligently reduce PDF file sizes while maintaining sharp readability. |
| Watermarking | Stamp custom text across all pages with precise control over rotation, position, and opacity. |
| Page Numbers | Automatically inject formatted page numbers with customizable styling. |
| Feature | Description |
|---|---|
| Zero Data Exposure | Absolute privacy. All processing runs completely un tethered on the client side; nothing ever reaches a server. |
| Protect | Add robust password protection to your confidential PDFs to restrict unauthorized access. |
| Unlock | Instantly remove password encryption from PDFs you rightfully own. |
| Feature | Description |
|---|---|
| Sleek Aesthetic | A pristine dark-mode UI with smooth glassmorphism, animated elements, and responsive states. |
| Drag & Drop | Effortless interactions powered by @dnd-kit for completely frictionless file handling. |
|
Next.js & React |
TypeScript 5 |
Tailwind v4 |
pdf-lib |
pdfly/
├── src/
│ ├── app/ # Next.js App Router (Layouts, Pages, SEO config)
│ │ ├── tools/ # Tools landing directory
│ │ └── tool/... # Dynamic routing for 12 independent tools
│ │
│ ├── components/ # Reusable UI Architecture
│ │ ├── Navbar.tsx
│ │ ├── pdf/... # PDF Preview and generic visualization primitives
│ │ └── tools/... # Encapsulated state panels for each action (e.g. MergeControls.tsx)
│ │
│ └── lib/ # Core business logic processing
│ ├── tools.ts # Centralized dictionary map of endpoints to icons/descriptions
│ └── pdf/... # The mathematical heavy lifting: atomic scripts hitting 'pdf-lib'
│
├── public/ # Static media payloads and OS icons
├── tailwind.config.js # Tailwind specification extensions
└── package.json # Dependencies map
- Node.js v18 or later
- npm, yarn, or pnpm
git clone https://github.com/imurtuja/PDFly.git
cd PDFlynpm installSince all logic is client-driven, there are zero .env variables or API configurations to establish.
npm run devOpen http://localhost:3000 to start processing your PDFs instantly!
PDFly uses Next.js server logic gracefully out-of-the-box and can deploy to Vercel instantly. The stable version is currently live and performing locally at pdfly.murtuja.in
Contributions are highly encouraged!
- Fork the repository
- Create a feature branch:
git checkout -b feature/cool-new-tool - Commit your changes:
git commit -m "feat: added OCR text extraction" - Push to the branch:
git push origin feature/cool-new-tool - Open a Pull Request
Murtuja - Full-Stack Developer
Distributed under the MIT License.
If PDFly helped you avoid uploading a private document to a sketchy site, consider starring the repo!
Made with 🤍 by Murtuja
