Skip to content
universalImage Converter

Blog

How Browser-Based Image Conversion Works, Step by Step

A browser already contains image decoders and encoders, so a web page can convert pictures locally: it asks the browser to decode your file, draw it, and write it out in another format. Your files never need to leave the device.

By the Universal Image Converter Team

One file's journey, in five steps

  1. Selection. When you pick or drop a file, the browser hands the page a reference to it. The page reads the bytes from your disk into memory; no network request is involved.
  2. Decoding. The browser's own decoder turns the file into a bitmap, a plain grid of pixels. This is where unsupported formats fail. If your browser cannot decode a format (HEIC in most browsers, for example), the page never gets pixels to work with.
  3. Drawing. The page draws the bitmap onto a canvas, an in-memory drawing surface, at the target size. The photo's orientation tag was already applied when it was decoded. If the output format cannot hold transparency, the page first paints the chosen background color, then draws the picture over it.
  4. Encoding. The page asks the canvas for its contents as a file of a given type, passing a quality value for lossy types. The browser's encoder produces JPEG, PNG or WebP bytes.
  5. Delivery. The bytes become a downloadable object in memory. For a batch, the page assembles a ZIP in memory, too.

Every step runs in the tab using code the browser already ships. The page's own script only orchestrates, which is why a conversion needs no account and no waiting for a remote machine: your computer or phone does the whole job, and its speed decides how quick it is.

Why nothing has to be uploaded

A server-side converter needs your file because the decoding and encoding code lives on its machines. In a browser the same capabilities are built in, so there is nothing to send. The page and its scripts are downloaded when you open the site; after that, the work happens locally, and once the page is loaded it keeps working with the connection switched off.

You can check this yourself instead of trusting a claim. Open your browser's developer tools (usually F12, or through the browser menu), switch to the Network tab, convert a picture, and look at the requests. Other requests, such as fonts or advertising, may appear, but none should carry a body the size of your image. Even simpler: load the page, turn off Wi-Fi or enable airplane mode, and convert again. If it still works, it cannot be uploading.

The 16.8 megapixel ceiling and how it is handled

Browsers limit the area of a canvas. Safari on iPhone and iPad has long limited a canvas to 16,777,216 pixels in total, which is exactly 4096 x 4096 (newer iOS versions are reported to allow more, but older devices and versions keep this limit). The converter scales down any image above about 16.8 megapixels so the same page works on every browser, including Safari on iPhone and iPad. Other browsers permit larger canvases, but one safe limit means predictable behavior everywhere.

Here is the arithmetic for common cameras.

The limit exists partly because of memory: a canvas stores about four bytes per pixel, so a full-size one is 16,777,216 x 4 = 67,108,864 bytes, around 67 MB, for one picture. The converter's output cap for WebP, 16,383 pixels per side, rarely matters, since an extreme panorama of 16,383 x 1,024 pixels (16,776,192 in total) only just fits under the area limit.

Special cases in the pipeline

Not every input follows the photo route. An SVG is not a grid of pixels at all, so the browser has to draw it first: the converter renders it at the size chosen in its maximum-size setting, or at the dimensions written into the file, or, failing both, at 1024 pixels along the longer edge. A HEIC photo needs a HEIC decoder, which the page does not carry; it works only where the browser or operating system supplies one, meaning, in practice, Apple's Safari on its phones, tablets and computers; see how to convert HEIC to JPG. And because nothing is sent anywhere, changing a setting simply re-runs the same local steps on every file in the list, with no waiting for a server.

Why encoders differ between browsers

Because each browser supplies its own encoder, identical settings can produce different bytes in different browsers. The quality value passed to the canvas is a number between 0 and 1, meaningful for the lossy types (JPEG, WebP) and irrelevant to PNG. Browsers may also differ in whether they can encode WebP at all. The web standard says only that PNG is required and that others are optional, and an unsupported request is answered with a PNG instead. That is why some browsers, Safari among them, cannot write WebP at all; the converter then leaves WebP out of its format list, which converting images to WebP explains.

The practical lesson: if file sizes matter, trust the two sizes listed for each result, not the number on the slider.

What re-creating from pixels means

Because the output is built from decoded pixels rather than edited in place, anything that is not a pixel is not carried across. Camera and location tags disappear, as described in EXIF metadata and privacy. Colors are converted to the browser's sRGB, which is why you see no profile in the result, covered in the color profile guide. And transparent regions have to be filled when the output cannot store them.

When local conversion struggles

Everything happens inside the tab's memory, so memory is the limit. Each decoded picture takes about four bytes per pixel: a 12-megapixel photo is 48,000,000 bytes (48 MB) while it is being processed, a 24-megapixel one 96,000,000. Phones have less to spare than desktops. The table lists the usual symptoms.

SymptomLikely causeWhat to do
This file is reported as unreadableThe browser has no decoder for that formatOpen the page in a browser that can decode it, such as Safari for HEIC
Output is smaller in pixels than the sourceThe source is above about 16.8 megapixels, or a maximum size is setCheck the maximum size setting; accept the downscale or reduce beforehand
The tab slows or reloads during a large batchMemory pressure from many large imagesConvert in smaller groups; see converting many images at once
WebP is missing from the format listThe browser cannot encode WebP (Safari, for example)Try Chrome, Firefox or Edge, or choose JPEG

Want to see it work with no connection? Load the converter, switch the network off, and convert a picture.

Open the image converter