"Upload your files" used to be a mandatory first step. It no longer is, and the reasons are worth understanding — both because they make this site possible on a single shared-hosting account, and because they change the privacy expectations around photo editing.
Latency becomes zero
A round trip is 40–300 ms plus a queue wait. A canvas operation on a modern device is single-digit milliseconds. Dragging a quality slider and seeing a live preview is only possible when the work is local — that interaction is the product.
Cost becomes zero
Every conversion an upload-based tool performs costs CPU time and bandwidth on someone's server. Here, it costs the user electricity. A site like this can serve a million conversions for the price of the HTML and a handful of ads.
Privacy becomes structural
This is the important one. "We delete your uploads after an hour" is a policy. "We never receive them" is a property of the architecture. There is no database to subpoena, no bucket to breach, no retention window to argue about.
For the things people actually edit — passport photos, medical scans, invoices, children's pictures, unreleased design work — that difference is the whole argument.
Reliability becomes a property of the client
No server queue means no queue timeouts, no cold starts, no "please try again in a moment", and no outage window during which the tool is simply gone. If your browser can decode the image, the tool works.
The honest limitations
Local processing is not always the answer:
- Very large files. A 400 MB TIFF is awkward in a browser tab.
- HEIC and TIFF. No mainstream browser decodes them natively, so those need
a WASM decoder — heavier than we are willing to ship by default.
- Weak devices. Encoding AVIF on a low-end phone takes seconds.
For those cases an upload tool genuinely is better. Everything else — which is the overwhelming majority of everyday image edits — is faster, cheaper and more private in the browser.
How this site is built
A statically exported Next.js site, a bounded task queue that runs two conversions at a time and yields between them, progressive halving for large downscales, and a single-pass lookup table for the colour adjustments. No image server exists anywhere in the stack.