What works, where, and when.
Every conversion runs in your browser via WebAssembly. That means modern browsers do the work — and older browsers can't. Here's exactly which versions, formats, and file sizes are supported.
Minimum browser versions
The limiting requirements across the toolset are module-type Web Workers, OffscreenCanvas, and WebAssembly. The minimum versions below cover all three.
| Browser | Minimum version | Released |
|---|---|---|
| Chrome | 92+ | July 2021 |
| Firefox | 114+ | June 2023 |
| Safari (macOS) | 16.4+ | March 2023 |
| Safari (iOS) | 16.4+ | March 2023 |
| Edge | 92+ | July 2021 |
| Android Chrome | 92+ | July 2021 |
Firefox is the limiting factor today — it shipped OffscreenCanvas support in version 105 (October 2022) and full module-worker support in 114 (June 2023). Everything older won't load the conversion pipeline at all.
Browsers and devices that will not work
- Internet Explorer (any version): no WebAssembly, no modules, no ES2018+ syntax.
- Safari 16.3 and earlier: no OffscreenCanvas. Includes iOS 16.3 and older.
- Firefox 113 and earlier: module workers were disabled by default. Updates are free — please update.
- Android Chrome < 92, Samsung Internet < 16: missing OffscreenCanvas, no
crypto.randomUUID(). - Kindle / e-reader browsers, smart TVs, older Chromebooks running Chrome < 92: generally lack one or more required APIs. The home page will load; tool pages won't function.
- UC Browser, Opera Mini, KaiOS browsers: fragmented WebAssembly support. Some tools may load and most will not.
Mobile considerations
The tools work on mobile, with caveats:
- iOS Safari 16.4+ and Android Chrome 92+: full support. Drop-zone tap opens the system file picker; the conversion pool spawns the same Web Workers as on desktop.
- Memory ceiling: mobile browsers cap a tab's memory at roughly 250–500MB depending on device and OS. Single conversions of files larger than ~100MB or batches that total more than that may crash the tab. Split into smaller batches.
- HTML5 drag-and-drop: not supported via touch. The drop zone falls back to tap-to-browse on mobile, which opens the system file picker.
- Battery and thermal throttling: long AVIF encodes or large PDF rasterizations heat the device and drain battery faster than usual. Expect throttling on long jobs.
Per-format limits
| Format | Decode | Encode | Notes |
|---|---|---|---|
| PNG | Yes | Yes | Lossless. OxiPNG optimisation pass available. |
| JPG / JPEG | Yes | Yes | MozJPEG quality 1–100. Fast on every device. |
| WebP | Yes | Yes | Lossy or lossless. Animated WebP encode supported. |
| AVIF | Yes | Slow | 3–10s per image desktop, longer on mobile. Single-threaded by default. |
| HEIC / HEIF | No | No | HEVC is patent-encumbered — convert on an Apple device (see /heic-converter). |
| TIFF | Yes | No | Multi-page TIFFs flatten to first page. |
| BMP | Yes | No | Browser-native decode. There's no good reason to write BMP. |
| GIF | First frame | No | Animation is not preserved. Convert animated GIFs to WebP elsewhere. |
| SVG | Yes | No | Rasterizes at the SVG's declared or viewBox dimensions. |
| Yes | Yes | Create, merge, split, rasterize. Cannot edit text content. |
File size and batch guidance
- Under 10MB per file: instant on every supported device.
- 10–100MB per file: works everywhere; a few seconds per conversion on desktop, longer on mobile.
- 100–500MB per file: desktop only in practice. Expect noticeable wait times and memory pressure.
- Over 500MB per file: may hit browser memory ceilings. Split the work or use a desktop tool.
- Batches of 100+ images: work, but the conversion pool processes them in parallel slots of
min(hardwareConcurrency - 1, 4). On a 4-core laptop that's 3 conversions at a time. - PDFs over 200 pages: PDF.js loads the whole document into memory before rasterizing. Memory grows roughly linearly with page count and DPI.
What about server-side conversion?
For Phase 1, every conversion is client-side. We may add optional server-side fallbacks for the cases where the browser genuinely can't do the job — multi-hundred-page PDFs, OCR, video, formats with patent constraints — but those would be clearly labelled and only run when you explicitly opt in. The default will always be local.
Privacy: verify it yourself
The promise that files never leave your device is technically true and trivially verifiable. To check:
- Open the tool page you want to test.
- Open browser DevTools (⌘⌥I on macOS, F12 elsewhere).
- Switch to the Network tab and click Clear.
- Drop a file and run a conversion.
- Watch the requests: you'll see HTML, JS chunks, WASM codec bundles, and Vercel Analytics pings — never a request body with your file's contents.
For belt-and-braces verification, you can also disable JavaScript-side fetches via a browser extension or simply run the conversion offline (after the first page load, every tool works without a network).