Browser support

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.

BrowserMinimum versionReleased
Chrome92+July 2021
Firefox114+June 2023
Safari (macOS)16.4+March 2023
Safari (iOS)16.4+March 2023
Edge92+July 2021
Android Chrome92+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

FormatDecodeEncodeNotes
PNGYesYesLossless. OxiPNG optimisation pass available.
JPG / JPEGYesYesMozJPEG quality 1–100. Fast on every device.
WebPYesYesLossy or lossless. Animated WebP encode supported.
AVIFYesSlow3–10s per image desktop, longer on mobile. Single-threaded by default.
HEIC / HEIFNoNoHEVC is patent-encumbered — convert on an Apple device (see /heic-converter).
TIFFYesNoMulti-page TIFFs flatten to first page.
BMPYesNoBrowser-native decode. There's no good reason to write BMP.
GIFFirst frameNoAnimation is not preserved. Convert animated GIFs to WebP elsewhere.
SVGYesNoRasterizes at the SVG's declared or viewBox dimensions.
PDFYesYesCreate, 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:

  1. Open the tool page you want to test.
  2. Open browser DevTools (⌘⌥I on macOS, F12 elsewhere).
  3. Switch to the Network tab and click Clear.
  4. Drop a file and run a conversion.
  5. 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).