What happens to your file
Your browser opens the file, a small program running in your browser changes it, and you download the result. At no point is the file sent to a server: this site is a set of static files, and it has no server that could receive an upload.
Check it yourself
- Open your browser’s developer tools and watch the Network panel (include worker requests) while you use a tool. You will see no requests that carry your files.
- Load a tool page, switch off your internet connection, and use the tool. It still works, because everything it needs has already been downloaded.
What we count
For monitoring, this site uses Umami, an analytics service that is built to comply with the GDPR. It sets no cookies, and no personal data about you is stored. The counting runs in your browser and sends only the events listed below, never your images. Nothing is kept on your device except your choice to switch it on or off. Umami’s tracking script is loaded from Umami Cloud only while counting is on; if you switch it off (or your browser sends Global Privacy Control), the script is not requested at all. The site hands it only the events listed below.
This site sends anonymous, cookie-free usage events to Umami Cloud so we can see which tools are used. Umami Cloud also receives your IP address and browser name as part of the network request, as any web server would. It does not use them to build a profile. Counting is on unless you switch it off. If your browser sends Do Not Track or Global Privacy Control, nothing is sent.
Events
Event names look like png-to-jpg:run: a tool, then one of open, upload, run, done, error, download, download-all, copy, unsupported.
Properties
| Property | Values |
|---|---|
| files | Count bucket: 1, 2-5, 6-20, 21-100, 100+ |
| input | Detected input format (one of: jpeg, png, webp, avif, gif, bmp, tiff, heic, svg, pdf, video) |
| output | Chosen output format (original, jpeg, png, webp, avif) |
| preset | Name of a built-in preset |
| quality | Quality setting, rounded to 5 |
| ms | Duration bucket: <1s, 1-5s, 5-30s, 30s+ |
| reason | Fixed error code: decode-failed, unsupported-format, too-large, out-of-memory, wrong-password, encoder-failed, needs-download, timeout, cancelled |
| browser | Capability flags only: native-heic, native-webp-enc, webcodecs-h264 |
Never sent: file names, file contents, exact sizes or dimensions, metadata values, anything you type, colours you pick, or anything else derived from your files.
Hosting
The site is served by GitHub Pages, which keeps access logs that include visitor IP addresses. These logs record that a page was requested, never your files.
Stored on your device
Your pinned tools, theme, menu state and statistics choice are kept in your browser’s local storage. Nothing else is stored, and there are no cookies.
Source code
Read exactly what runs on this page: the source code.