Every tool on belal.work shares one rule: your file never leaves your device. No upload endpoint, no server-side processing, no account to create. The PDF signer, the image converter, the word counter — all of it runs client-side, in JavaScript, in the tab you already have open.

That's a harder constraint than it sounds. It means no easy server-side PDF library, no cloud OCR, no background job queue to lean on when the browser's single thread gets busy. Every feature has to fit inside what a browser can actually do — and do fast enough that it doesn't feel like a compromise.

Why bother

Two reasons, honestly:

  • Privacy is not a checkbox. If I built a "your files are private" tool that quietly uploaded them to a server, that claim would be marketing, not fact. Doing it client-side makes the privacy claim structurally true, not just promised.
  • It's the tool I'd actually want to use. I don't want to sign up for an account to convert an image. Most days, neither do you.

What it costs

Some things are genuinely harder this way — large file handling, anything that needs a real filesystem, anything CPU-heavy enough that a background worker would help. I've shipped around those limits more than once by simplifying scope rather than reaching for a server. A tool that does one thing well, entirely in your browser, beats a tool that does five things through an API I now have to maintain, monitor, and pay for.

That trade-off is the whole shape of belal.work. Eleven tools, one constraint, no exceptions.