The problem
Most free PDF tools want you to upload the file first.
Compressing or merging a PDF is a two-minute job, and the usual way to do it is to upload the file to someone’s server and download it back.
That’s fine for a menu. It’s less fine for a lease, a bank statement or a scan of your passport, which are exactly the files people need to shrink to get under an upload limit. [What made me build it: the file I was trying to send, and where.]
The browser can already read, rewrite and render PDFs on its own, so I wanted to see how far I could get with no server at all: open the page, drop the file in, and nothing leaves the laptop.
Compress, before a file is added. The lock badge sits at the top of every tool page.Who it’s for
People with a sensitive PDF and a size limit.
First user
Me
[The documents I actually run through it.]
Wider
Anyone sending documents through an upload form
Visa and job applications, rental paperwork, insurance claims. Forms that cap attachments at a few MB and documents you’d rather not hand to a random website.
InferredAlso
People on bad connections
After the first visit it runs offline, so a slow or missing connection doesn’t matter.
InferredNot for
Editing PDFs
No text editing, signing or forms. It moves pages around and makes files smaller.
Use cases
What you can do with it today.
Get under an upload limitCompress
Drop one PDF in (up to 100 MB), pick low, medium or high compression, and download the smaller copy. It shows the before and after size.
Put a pack of documents togetherMerge
Add two or more PDFs, drag them into order (or use the arrows), and download one file. Each file shows a thumbnail of its first page so you can tell them apart.
Strip the hidden detailsCompress
Every compressed file loses its title, author, creator and producer fields, which often carry a name or the software used.
Use it on a planeOffline
Visit once while online, and the pages and both PDF libraries are cached. A banner at the top says whether you’re online, and that the tools still work if you’re not.
The product
Two tools, five more on the list.
Each tool is one page with one job: drop a file, pick an option, download the result.
A compressed file on medium. The sample is a fictional four-page file of photos; how much a real document shrinks depends a lot on what’s in it.Merge with three fictional documents. Drag the handle or use the arrows to reorder.The merged result: three files, six pages, one download. On a phone, the tool cards stack into one column.Compress on a phone. Tapping the drop zone opens the file picker. Coming soon
Split, rotate, PDF to images, images to PDF, and watermarks are on the home page, greyed out.
Installable
It has a web app manifest, so it can be added to a phone’s home screen like an app.
How it works
The browser does the work, and a service worker keeps it offline.
There is no backend. The site is static files, and the PDF work is done by two open-source libraries running in the tab.
1 · Load
Static pages
HTML, CSS and a little JavaScript. No accounts, no analytics.
2 · Cache
Service worker
Saves the pages, pdf-lib, PDF.js and the fonts on first visit.
3 · Read
PDF.js
Draws page thumbnails and renders pages for heavy compression.
4 · Write
pdf-lib
Copies pages for merging, rebuilds files and strips metadata.
5 · Save
Your downloads
The result is handed to the browser as a download. Nothing is sent anywhere.
HTML, CSS, vanilla JavaScriptpdf-lib 1.17PDF.js 3.11Service workerWeb app manifest
Compression runs in two passes. First it re-saves the file with pdf-lib, which tidies the structure and drops the metadata. On medium and high it also renders every page to an image and rebuilds the PDF from those images as JPEGs, then keeps whichever of the two versions is smaller.
Product decisions
The main decisions.
No server, so there’s nothing to upload to
WhyThe privacy promise only holds if it can’t be broken by accident. With no backend there’s no upload endpoint, no logs and no storage to secure.
Trade-offEverything is limited by the device. A big file on an old phone is slow, so I capped files at 100 MB.
Make it work offline
WhyIf the tools still run with the Wi-Fi off, that’s the easiest way to show the file isn’t going anywhere. The service worker caches the libraries too, not just the pages.
Trade-offThe first visit has to be online, and a page you’ve never opened can’t load offline. The app catches that and says so instead of showing a broken page.
Rebuild pages as images for heavier compression
WhyMost of the weight in a big PDF is scans and photos, and the browser can’t easily recompress those inside the file. Redrawing each page as a JPEG is the method that reliably shrinks them.
Trade-offOn medium and high, text in the result is no longer selectable or searchable, and links stop working. [Whether to warn about this on screen, or skip it for text-only files.]
Keep whichever version is smaller
WhyRe-encoding can make a text-only PDF bigger. Trying both and keeping the smaller one means compress never hands back a larger file than the simple re-save.
Trade-offMedium and high take longer, because they do the work twice.
Plain JavaScript, no framework
WhyThree pages and two tools didn’t need a build step. The whole app is about 1,300 lines and every file can be cached as is.
Trade-offEach new tool page repeats some markup. That will start to hurt around the seventh tool.
Where it stands
Two tools working, five still to build.
It’s a working prototype. [Whether it’s deployed anywhere, and where.]
Built
- Compress, with three levels and metadata stripping
- Merge, with drag to reorder and page thumbnails
- Works offline after the first visit
- Installable as a web app
- Layout that works on a phone
Next
- Split and rotate pages
- PDF to images and images to PDF
- Watermarks
- A warning when compression will flatten text
100 MB
largest file it accepts
~1,300
lines of code, no framework
- 30 Mar 2026Compress, Merge, offline support and the home page
- [Date][Next tool shipped]
What I learned
What I took from it.
- A promise like “your files never leave your device” is easier to keep when there’s nowhere for them to go. Leaving out the server did more for privacy than anything I could have added.
- Offline support turned out to be the best proof of the privacy claim, and it cost about a hundred lines.
- [What I’d do differently.]
About the screenshots: they show the real app running on fictional sample PDFs made for this page.
Next in the lab
QuickPad
A $19 touchscreen next to my Mac. It started as a shortcut pad that follows whatever app I’m in, working within one afternoon. Over the next two weeks it became how I talk to my AI agents and keep track of my Claude Code chats.