How this works
Your file is opened by the browser you are already using. It is never sent anywhere.
Below is what actually runs, in the order it runs, and how to check it yourself in under a minute.
The file is read, not uploaded
Dropping a file gives the page a File object. It is read into memory in this tab with the File API. There is no request carrying it, because there is nowhere for it to go: the site is static files on a CDN, with no server code to receive anything.
- File and Blob for the bytes, FileReader and arrayBuffer to read them
- Drag and drop, the file picker and paste all hand over the same object
- The build refuses to ship if a page gains a fetch, an upload, a form action or an API route
Decoding happens in the tab
A camera or a design app writes formats the browser cannot open on its own, so the decoder ships with the page and runs beside it.
- HEIC and HEIF: a JavaScript build of libheif, served from this origin
- PDF: PDF.js, which uses WebAssembly for some of the image codecs inside a PDF
- SVG tracing: ImageTracer; QR reading: jsQR; PDF writing: pdf-lib
- Every library is downloaded at build time and served from this domain, so no third-party CDN sees your visit
The work runs on a canvas, in a worker
Resizing, compressing and converting are canvas operations. They run inside a Web Worker so a large photo does not freeze the page you are looking at.
- OffscreenCanvas in a worker draws and re-encodes each image
- convertToBlob produces the JPG, PNG or WebP, with quality you set
- PNG compression uses a median-cut palette written for this site, not a library
- Nothing about the file — name, size, contents, or anything derived from them — is measured or reported
The result is made here too
What you download is a Blob assembled in this tab and handed to the browser as an object URL. It has never existed anywhere else.
- One file at a time, or a ZIP built in the tab
- Close the tab and the result is gone; nothing is stored to come back to
Check it yourself
Do not take this page's word for it. Two ways to see it, both under a minute.
- Open DevTools, go to the Network tab, then convert a file. Nothing carrying your file leaves.
- Load the page, turn off your network, then use the tool. It still works.
- Read the source: everything running here is plain files you can view.
On-device and upload-based tools, side by side
Both kinds of tool exist and both are legitimate. The difference is where your file goes, and that difference decides what has to be trusted.
| On your device | Uploaded to a server | |
|---|---|---|
| Where the file goes | Stays in the tab | Travels to a server |
| Retention | Nothing to retain | Usually deleted after a set window |
| Works offline | Yes, once the page has loaded | No |
| File size limit | Your device's memory | Whatever the service allows |
| What you have to trust | What the page does, which you can watch | What the service says it does |
Every tool, same rules
All of them work this way. Nothing here has a paid tier, an account, or a file that leaves.