PDF & Image Tools

I didn't have a server, so I learned to do everything in the browser

By Swathik··9 min read
indiebuild-in-publicprivacy
An open laptop on a warm wooden desk in a dim room, screen showing a developer profiler, soft evening light from the right

I couldn't afford a server. So your files never touch one.

I want to be honest about how this started, because the clean version is a lie.

The clean version goes like this: "I believe deeply in privacy, so I built a tool that does everything on your device and never touches a server." Principled. Looks great on a landing page. People nod.

The real version is that I was broke and a little scared.

I had an idea for a pile of PDF and image tools. The boring, eternal kind. The thing you go hunting for when you need to shrink a photo under 200 KB for some government form that won't tell you why, or stitch together three PDFs your accountant emailed separately for no reason, or rip the background off a product shot. Nobody dreams about these tools. Everybody needs them, by the million, every single day.

The obvious way to build it is the way everyone builds it. Stand up a server. User uploads their file. Your server does the work. You send the result back. Well-trodden, plenty of tutorials, nothing to figure out.

And the moment I sketched that out, two things hit me at once.

The first was the bill. Storing and processing strangers' files at any real volume is not free. I'm a solo developer in India with no funding, no team, and no computer science degree I was handed at birth. I taught myself this. The thought of one good traffic day turning into a hosting invoice I couldn't pay kept me up more nights than I'd like to put in writing.

The second thing was worse, and it's the one nobody warns you about. If I put a server in the middle, then for a little window of time I am holding other people's documents. Their bank statements. Their signed contracts. Their passport scans. Photos they would sprint into traffic to keep off the internet. The second a file lands on a machine I control, I am responsible for it. I am a target. I am one breach away from hurting people who only wanted to compress a JPEG.

I did not want that. Not the cost, not the liability, and honestly not the moral weight of it. I'm one guy. I am not equipped to be the custodian of the internet's private paperwork.

So I asked a slightly desperate question. What if the file just... never comes to me?

Pushing the work to the edge of the world

Here's the thing I only half understood when I started. The browser on your phone or laptop is not a dumb window anymore. It's a genuinely capable computer. It reads files, crunches images, runs math, and on a modern machine it can reach the graphics card and run actual AI.

For years all that horsepower mostly sat there rendering buttons.

The constraint forced me to use it. If I couldn't afford a server, then your device was the server. Your file gets opened, read, compressed, converted, whatever it needs, all inside the tab you already have open. Nothing uploaded. No round trip. The result appears, and it appears fast, because it never had to fly to a data center, wait in line behind a thousand other people's files, and fly home.

I'd love to tell you this was a smooth, visionary pivot. It was not. It was months of finding out the hard way which things browsers are brilliant at and which things make them quietly lie down and die.

Some of it was great. Compressing and converting images in the browser turned out fast and private without much of a fight. The feature I'm quietly proud of is compressing an image to an exact target size. You say "get this under 200 KB" and it actually lands there, because it can run the math over and over locally without me paying a cent per attempt. Most of the upload-to-our-server tools won't even try that. Every retry costs them money, so they take one swing and hope. It costs me nothing, so my tool just keeps swinging until it nails the number. The constraint quietly became the feature.

Some of it was a war. PDFs are a swamp of edge cases. Phones run out of memory in ways that don't throw a polite little error, they just go white and die, and you cannot catch a death. I have lost real weekends to the gap between an iPhone and an iPad both insisting they're the same device. I'll spare you the rest, except for one warning: if you ever catch yourself thinking "it's just rotating a page, how hard can it be," the PDF spec is standing in a dark alley waiting for you with a pipe.

The moment it stopped being about money

The feature that changed how I think about the whole project is the background remover.

Cleanly removing the background from a photo is an AI job. Real machine learning, a real neural network, the kind of thing that traditionally lives on a beefy server with a GPU and a bill to match. Every consumer tool that does this well sends your image up to their machine. Your face, your kid's birthday photo, your client's product shot, off it goes to a stranger's computer.

I didn't want to send anybody's photo anywhere. But running a neural network is exactly the kind of heavy lifting you're "supposed" to keep on a server.

Turns out you don't have to. Modern browsers can run these models directly, reaching the graphics card on a laptop or grinding through it on the phone's processor. So I got the model running inside the tab. Your photo loads into the page, the AI looks at it right there on your own hardware, finds the subject, cuts it out, and hands it back. The picture never leaves the room you're sitting in.

There's a moment I keep coming back to. I had a tester open the tool, drop in a photo, and watch the background dissolve in a couple of seconds. Then I asked her to open the browser's network tab, the little panel that lists every request a page makes, and reload.

Nothing. The page loads its code once and then goes silent. You can drop in photo after photo and that panel just sits there, empty, while your laptop fan spins up and does the real work. Kill your Wi-Fi entirely and it still runs, because there's nobody to phone. The AI is running on your own hardware, for your eyes only, and I have no idea what your photo even was. I couldn't tell you if you held a gun to my head. That's not a privacy policy you have to take on faith. It's just physically what's happening, and you can sit there and watch it not happen.

The first time I really sat with that, something flipped. This wasn't a budget hack I was hoping nobody would notice. It was better. Not cheaper-but-worse. Better, on the one thing that actually matters when the file is private.

The reframe

Once you see it, you can't unsee it. The big tools, the ones with the budgets and the billboards, all share one quiet design decision: your file goes to their servers. For a stretch of time, your private stuff sits on someone else's computer, where it can in theory be copied, logged, kept around longer than you'd ever guess, or hoovered up in a breach that has nothing to do with you and everything to do with your name being in the wrong database. Nobody's necessarily twirling a moustache. It's just the shape of how the thing was built, because servers were the obvious answer and nobody stopped to question it.

I questioned it only because I couldn't afford the obvious answer. Being broke saved me from making the lazy choice.

So the pitch isn't "look how clever the engineering is." The pitch is dead simple and, for once, completely true: your files never leave your device. Not as a promise. As a fact you can check yourself in about ten seconds with the network tab, or by yanking your Wi-Fi and watching the thing keep working.

People sometimes ask if it's a gimmick. It isn't, but I'd rather name the limits out loud than oversell. Cluttered photos can confuse the background AI. A busy gym mirror selfie can come back with a cutout that looks like it lost a fight, because the lightweight model that fits in a browser is not the giant one a server farm gets to run. In-browser text recognition has its ceiling too. Charts and stylized graphics will beat it. Your seven-year-old laptop will do AI more slowly than a data center would, and there's no magic that fixes that. These are honest tradeoffs, and I'd rather you hit them knowing the reason than feel cheated.

But the everyday stuff, the merging and shrinking and converting and cutting that people actually need? It runs right there in front of you, free, no sign-up, no upload, and I never touch a byte of it. I genuinely could not show your file to anyone, because I never had it to begin with.

What the constraint taught me

A lot of the best products are shaped by what their makers couldn't do, not what they could.

If I'd had funding, I'd have spun up servers like everybody else, and I'd be one more tool in a crowded field, distinguishable only by the logo. Being broke shoved me down a harder path that happened to be the right one. The wall I ran into turned out to be a door.

There's a neat little lesson hiding in there about embracing your limits, and I'm going to resist polishing it to a shine, because the truth is messier and more human than a LinkedIn caption. I didn't have a grand vision. I had a problem I couldn't buy my way out of, and I was stubborn enough to keep poking at it until the cheap option turned into the good one.

It's live now. One person's stubbornness, running on your hardware instead of mine. And every time I watch that network tab sit there empty while a photo's background quietly vanishes, I get a small, slightly ridiculous thrill, like I got away with something.

I didn't, really. I just didn't have a server. So I learned to do everything in the browser, and it turned out that was the whole point the entire time.


Built solo by Swathik, a self-taught developer in India. No team, no funding, no server. If you want to test the "your files never leave your device" claim, the honest way is to open the network tab and watch nothing happen, or turn off your Wi-Fi and watch it keep working anyway.

The tools are at pdfandimagetools.com, if you'd like to try them.

Every tool on PDF & Image Tools runs entirely in your browser. Your files never leave your device.

← All posts