Skip to content
LocalMedia Tools

How in-browser media processing actually works

For years, editing a video or converting an image online meant uploading your file to someone else's server, waiting, and downloading the result. Modern browsers no longer require that trade-off. Thanks to a stack of maturing web platform APIs, a webpage can now decode, transform, and re-encode media directly on your machine - the same computer that is reading this page. This guide explains, in plain language, the technologies that make it possible and how you can verify for yourself that your files stay local.

What does "in-browser media processing" actually mean?

When a website processes media in the browser, the work runs inside the same sandboxed engine that renders the page, using APIs your browser already ships. Your file is read from disk into memory on your own device, transformed there, and written back out as a download - with no server round trip for the file itself. The page still loads its own code and assets over the network, but your video, audio, image, or PDF never leaves your computer.

How does WebAssembly run video codecs at near-native speed?

WebAssembly (WASM) is a compact binary instruction format that browsers execute at close to native speed. Mature libraries written in C or C++ - such as FFmpeg for video or an image encoder - are compiled to WASM and shipped as a module the page downloads once. This is what people mean by client-side WASM video: the same decoding and encoding math a desktop app performs, executed inside the browser sandbox on your own CPU. Because WASM is memory-safe and sandboxed, it can crunch a large file without gaining access to the rest of your system.

What are WebCodecs, and why can they be faster than WASM alone?

WebCodecs is a newer browser API that exposes the device's built-in, often hardware-accelerated audio and video codecs directly to JavaScript. Instead of shipping a codec as WASM, the page hands raw frames to the encoder or decoder the operating system already provides, which can be dramatically faster and lighter on battery. Support still varies by browser and format, so well-built tools use WebCodecs when it is available and fall back to a WASM build otherwise. Either way, the actual media stays on your device.

How do the Canvas API and PDF rendering handle images?

The Canvas API gives JavaScript a drawable pixel surface. To resize, crop, rotate, watermark, or convert an image, a tool draws it onto an off-screen canvas, manipulates the pixels, and reads the result back out as a new JPG, PNG, or WebP. That same surface is how PDF pages are rasterized to images and how a single video frame is captured as a still. All of it is direct pixel math on your machine, with nothing uploaded.

How does the Web Audio API process sound locally?

The Web Audio API is a graph of connected audio nodes - sources, filters, gain, and analysers - that lets a page decode, trim, resample, and re-encode sound in memory. Trimming a clip or extracting the audio track from a video runs entirely through this graph on your device. Combined with a WASM encoder, it can write out MP3, WAV, or other formats without your recording ever touching a server.

What do MediaRecorder and Web Workers add?

MediaRecorder captures a live stream - your screen, camera, or microphone - and encodes it into a downloadable file as it records, which is exactly how an in-browser screen recorder works. Web Workers run the heavy lifting on a background thread so that encoding or transcoding does not freeze the page, keeping the tab responsive while a long export finishes. Together, these APIs let the browser behave like a small, local media workstation.

How can I prove my files never leave my device?

Open your browser's developer tools, switch to the Network tab, and process a file - you will see the page's own code and assets load, but no request that uploads your media. The one deliberate exception is the Audio Transcriber, which downloads a speech-recognition model once on first use and caches it, so later transcriptions can run offline; that download is the AI model itself, never your audio. This is a falsifiable claim you can check for yourself, which is precisely why privacy-first tools are built this way.

Related tools

FAQ

Does in-browser processing mean my files are never uploaded?
Yes - your media files are read and transformed in memory on your own device and offered back as a download, so they are never sent to a server. The page itself still loads its code and assets over the network, which is normal for any website; the distinction is that your file is not part of that traffic. You can confirm this in the Network tab of your browser's developer tools.
Is client-side WASM video as good as a desktop app?
For most conversions, compression, and trimming it uses the same underlying libraries (such as FFmpeg) that desktop apps rely on, so the output quality is comparable. The main differences are speed and memory: a browser tab has less headroom than a native app, so very large or very long files process more slowly. Tools that also support WebCodecs can tap hardware acceleration to close much of that gap.
Why does the Audio Transcriber need to download something?
Speech recognition requires an AI model, and that model is downloaded once to your browser on first use and then cached. From then on, transcription runs locally and can even work offline. The download is the model's weights - your audio recordings are still never uploaded.
Do these tools work offline?
Once the page and any required module are loaded, most processing runs without an internet connection because the computation happens on your device. The Audio Transcriber works offline after its model has been fetched and cached. A fresh visit or a cleared cache will need the network again to load the page assets.
Is my browser powerful enough for large media files?
Modern browsers can handle surprisingly large files, but they run within memory limits, so extremely large videos may process slowly or need to be split. Using a desktop browser with more RAM, closing other heavy tabs, and preferring tools that use WebCodecs all help. If a file is too big for a single pass, trimming it first is a practical workaround.