How ImgShifter works

Most image tools online are server-side wrappers: you upload, they process, you download. ImgShifter flips that — the browser does the work for every common format, so your image never has to leave your device. Here's exactly how, with an honest list of what does and doesn't run locally.

The browser does the work

Canvas API

PNG, JPG, and WEBP conversions, plus crop and resize, run through the browser's built-in Canvas API. Decoding and re-encoding happen in your tab - no upload, no roundtrip.

WebAssembly modules

HEIC files decode via the heic-to module. AVIF encoding uses the @jsquash/avif encoder. Both are small WebAssembly binaries downloaded once and cached for offline use.

browser-image-compression

The compression slider is powered by the browser-image-compression library, running entirely in your browser with live preview and file-size statistics.

Conversion service (only when needed)

TIFF, RAW (CR2/NEF/ARW/DNG), and SVG vectorization need native libraries that don't exist in the browser. Those route to an encrypted endpoint, convert, and return the result. Originals are not retained beyond the conversion.

Privacy you can verify

Don't trust us — verify it

Other “privacy-first” image tools still upload your file to a server. ImgShifter's browser tools don't. Here's a 30-second test you can run yourself, with nothing to install.

You are online

Turn off your network and watch this badge change — the tools keep working.

  1. 1

    Turn off your network

    Disable wifi or enable Airplane Mode. (You can also throttle to Offline in DevTools - Network tab.)

  2. 2

    Stay on this page

    No need to refresh. Open any browser-side tool - PNG to JPG, Compress, Crop, Resize.

  3. 3

    Convert an image

    Drop a file. The conversion finishes with zero outbound network requests. The result downloads from your own browser.

Prefer the technical view? Open DevTools → Network tab, run a conversion, and watch the request count stay at zero.

100% in your browser

These tools never make an outbound request with your image:

  • PNG ↔ JPG, WEBP, AVIF
  • JPG ↔ PNG, WEBP, AVIF
  • WEBP ↔ PNG, JPG, AVIF
  • AVIF ↔ PNG, JPG, WEBP
  • HEIC → JPG, PNG (decoded locally via WebAssembly)
  • Compress JPG, PNG, WEBP
  • Crop, change aspect ratio, crop for Instagram
  • Resize (single or batch with ZIP export)

Uses the conversion service

These formats need native libraries the browser doesn't ship with:

  • TIFF → JPG, PNG
  • RAW (CR2, NEF, ARW, DNG) → JPG
  • SVG → JPG, PNG (rasterization)
  • PNG, JPG → SVG (vectorization)

Files are sent over an encrypted HTTPS connection, converted, and the result is returned. Originals are not retained beyond the conversion.

Tech stack

  • Next.js 15 — static-first rendering, fast first paint, PWA-ready
  • React 19 + TypeScript — the application layer
  • Canvas API — PNG, JPG, WEBP, crop, resize
  • WebAssembly — HEIC decode (heic-to), AVIF encode (@jsquash/avif)
  • browser-image-compression — quality slider, file-size estimation
  • JSZip — bundling batch resize results
  • Service Worker — offline fallback and PWA install

Want to see it for yourself?

Open PNG to JPG, Compress, or Crop. Disconnect from the internet, then run the conversion. The result downloads from your own browser - no network round-trip.