Muhammad Arslan
Hire me
Back to projects

PDF Toolkit

A browser-based suite for merging, splitting, organising, converting, and compressing PDFs, where the files never leave your device.

Role: Solo full-stack developmentTimeline: 2025Type: Web app / product

Next.js 16

React 19

Tailwind CSS 4

pdf-lib

PDF.js

Ghostscript (WASM)

dnd-kit

JSZip

PDF Toolkit organizer with three synthetic project-document pages

Overview

PDF Toolkit is a client-side answer to tools like iLovePDF. It handles the everyday PDF jobs people reach for, including combining files, pulling out pages, reordering and rotating, converting to and from images, and compressing, and it does all of it inside the browser. Nothing gets uploaded. The marketing site and tool catalogue sit in front of a set of live workspaces, each one a self-contained tool.

The Problem

The popular online PDF tools all work the same way. You upload your document to a server, it gets processed, and you download the result. For a quick image conversion that's fine. For a signed contract, an ID scan, a medical form, or a financial statement, it means handing a sensitive file to a third party and trusting their retention policy. There was a clear gap for a tool that does the same jobs but keeps every file on the user's own machine.

My Role & Approach

I built the whole product: the marketing site, the tool catalogue, and every working tool. The core decision was architectural. Do all the actual PDF work in the browser. That choice drove everything else, because client-side processing meant no servers to run, no per-file cost, and a privacy guarantee I could state plainly: your files are never sent anywhere.

Tech Stack

FrameworkNext.js 16 (App Router) with React 19
PDF editingpdf-lib for structural operations (merge, split, page manipulation)
PDF renderingPDF.js (pdfjs-dist) for previews and thumbnails
CompressionGhostscript compiled to WebAssembly, which runs entirely in the browser
Interactiondnd-kit for drag-and-drop page and file ordering; JSZip for bulk image downloads
StylingTailwind CSS 4 with a shadcn-inspired component set
AnalyticsPostHog

Key Features

Merge PDFcombine multiple files, reorder them by dragging, and export one document.
Split PDFextract specific page ranges (for example 1-2,5) into a new file.
Organise PDFreorder, rotate, and delete pages before exporting.
Image to PDFturn JPG and PNG files into a PDF with drag-to-order control.
PDF to Imagerender pages to images with thumbnail previews and a ZIP download.
PDF Viewera built-in reader with zoom and page navigation, powered by PDF.js.
Compress PDFshrink file size using Ghostscript in the browser.
Built for discoverya proper marketing site with a sitemap, robots file, and an llm.txt for AI crawlers.

Gallery

PDF Toolkit page organizer with a synthetic project brief, system map and release checklist
PDF Toolkit organizer showing a 90-degree export setting for a sample PDF page

Challenges & Solutions

The hard part of "no server" is that the browser has to do everything a server normally would. I split the work across two engines. pdf-lib handles structural edits where the document's internals get rewritten, and PDF.js handles rendering whenever a page needs to be shown or turned into an image.

Compression was the standout problem. Real PDF compression usually depends on Ghostscript, a heavyweight native tool that lives on a server. To keep the privacy promise intact, I used a WebAssembly build of Ghostscript so that same engine runs locally in the browser. The compression is real, and still nothing gets uploaded. Reordering pages and files needed to feel physical rather than fiddly, so I used dnd-kit for smooth drag-and-drop, and I bundled multi-image exports into a single ZIP with JSZip instead of firing off a dozen downloads.

Outcome

The result is a complete, iLovePDF-style toolkit that runs with no backend, no file storage, and no hosting cost beyond static delivery, while offering something the incumbents can't: a credible guarantee that documents never leave the device. It's a genuinely useful tool, and it shows how much heavy lifting modern browsers can take on.

Have a similar product problem?

Share the current product, the outcome you need, and the constraints already in the way. I will use that to define a sensible first milestone.

Web application development services
Start your project brief
All projectsNext projectVCM