Skip to content

How it works

Most online converters upload your file to a server. This one does not, and the difference is architectural rather than a policy promise. Here is exactly what happens when you convert a file.

The short version

When you drop a file onto a converter page, the file is handed to JavaScript running in your own browser tab. It is decoded into raw pixels, redrawn onto an in-memory canvas, and re-encoded into the target format — all using your device's processor. The result is written to a temporary in-memory URL that your browser turns into a download.

At no point does the file touch a network. There is no upload request to intercept, because there is no server-side component to receive one.

Step by step

  1. You select a file. The browser hands our code a File reference. This is a local object — obtaining it does not transmit anything.
  2. The file is decoded. For most formats the browser can do this itself. For HEIC, which browsers other than Safari cannot read, we load libheif compiled to WebAssembly and decode it locally.
  3. Pixels are drawn to a canvas. This single stage is where resizing happens and where transparency is flattened if the target format has no alpha channel.
  4. The canvas is re-encoded. The browser's built-in encoder produces the final JPG, PNG, or WebP, applying whatever quality setting you chose.
  5. You download it. The result becomes a temporary object URL in memory. Closing the tab discards it.

What WebAssembly changed

Until fairly recently, converting a HEIC file genuinely did require a server, because no browser could decode the format and the libraries that could were native code. WebAssembly removed that constraint: it lets compiled C and C++ libraries run inside a browser tab at close to native speed. The same libheif that a server would have used now runs on your device instead.

That module is around two megabytes, so we load it only when you actually drop a HEIC file. Pages that do not need it never pay for it.

Verify it yourself

You do not have to take our word for any of this, and you should not have to. Load any converter page, then turn off your Wi-Fi or unplug your ethernet cable, and convert a file. It will work perfectly, because everything needed is already on your device.

For a closer look, open your browser's developer tools before converting and watch the Network tab. You will see the page and its scripts load, and then nothing carrying your file.

The honest limitations

Running on your device is a genuine trade, not a free win, and it is worth being straight about the costs:

Common questions

How can I verify that nothing is uploaded?

Three ways, in increasing order of rigour. Open your browser’s developer tools, switch to the Network tab, and convert a file — you will see no request carrying your data. Or load a converter page, disconnect from the internet entirely, and convert a file anyway; it will work. Or read the JavaScript we serve, which is unminified enough to follow.

Do you store or log my files?

We cannot. There is no upload endpoint to receive a file and no storage bucket to put one in. The only thing our server ever sends you is the page itself.

Why do other converters upload files at all?

Historically they had to. Browsers could not decode formats like HEIC, and image processing libraries only existed for servers. That changed with WebAssembly, which lets those same libraries run inside the browser at close to native speed. Many services simply have not rebuilt around it.

Is there a maximum file size?

No limit is imposed by us, but your device sets a practical ceiling. Browsers cap how much memory a single tab may use — commonly a few gigabytes on desktop and considerably less on phones. Very large files may fail on older hardware; converting in smaller batches usually resolves it.

Does this work on a phone?

Yes, on any modern mobile browser. Phones have tighter memory limits than laptops, so if you are converting dozens of high-resolution photos at once, do them in batches of ten or so.

How is the site free with no limits?

Because conversions cost us nothing. Your device supplies the processing power, so serving one conversion or ten million costs the same — the price of sending you a static page. Services that convert on their own servers pay per file, which is why they must meter usage.