.img converter
drop one or many images, click Convert, compare, download. nothing is uploaded to third parties.
service stats
Ctrl/Cmd+V to paste
privacy
what we don't do
Your files are not stored on a server.
The backend pipes the request body directly into the encode subprocess via io.Pipe and copies the encoded bytes back to the response. No temp files, no disk writes, no upload step. The bytes live in memory only for the duration of one request.
No cookies.
Neither the page nor the backend sets a Set-Cookie header. The only client-side state is the i18n locale string under localStorage['locale']; no PII, no tracking.
Self-hosted analytics only.
Page views go to a self-hosted Umami instance on the same host — no Google Analytics, no Facebook Pixel, no third-party trackers. No cookies, no personal data, no cross-site fingerprinting.
Your IP is not logged.
The backend's JSON access log carries only request_id, endpoint, method, status_code, duration_ms, input_bytes, output_bytes — but not the request IP.
faq
Why does the preview look different from the downloaded file?
The preview is a quick first version. The downloaded file is the final, higher-quality version.
Are my files safe?
Yes. Files never leave the browser button. Nothing is uploaded to third parties. Nothing is stored on a server.
Do you set cookies or track me?
No cookies, no third-party trackers. We only count page views on our own server, with no personal data.
What's the file size limit?
Up to 10 MiB per file. Up to 50 files at once.
What formats are supported?
Input: PNG, JPG, WebP always. GIF, BMP, AVIF, HEIC, HEIF, and JXL are available when enabled in the build. Output: WebP, PNG, and JPG always. AVIF and JXL are available when enabled in the build.
What do the resize controls do?
Resize is set by two pairs of fields. Pair 1 is the client-side cap applied before upload: the cap dimension checkbox enables it; axis picks which side the cap applies to (longest caps the longer side, width / height cap one axis, auto picks width on landscape and height on portrait); max carries the cap in pixels (default 1600, range 64–20000). When the checkbox is off, the original pixel dimensions are sent unchanged. Pair 2 is the server-side resize via the X-Resize-Mode and X-Resize-Max-Long-Edge request headers, wired to the CLI --resize fit=… long-edge=… flag. mode is none | contain | cover | stretch; long edge is in pixels, range 16–8192. mode = none is the default and means no server-side resize. The two pairs are independent and apply in order: client-side cap first, then server-side resize.
Will the file look worse?
WebP at quality 82 looks the same to your eye but is much smaller. PNG keeps the file identical to the original.
What does "strip EXIF" do?
Removes hidden data like GPS coordinates, camera model, and date.
Do I need to create an account?
No. Just drop your images and click Convert.
Can I run this locally?
Yes — see github.com/elriseio/fast-image-converter.
free and open-source
the engine is free, and you can run compression on your own machine — no signup, no rate limits, no telemetry, no third-party calls.
github.com/elriseio/fast-image-converter