Why Your Files Never Leave the Browser: Local Processing & COOP/COEP

2026-09-08

The Browser as Local Software

WebAssembly lets browsers run compiled code at near-native speed, and Web Workers add real multithreading. That is enough to run a full LibreOffice suite, a Python runtime (Pyodide) and OCR models entirely on your device.

What Cross-Origin Isolation Is

High-performance shared memory (SharedArrayBuffer) requires the page to be cross-origin isolated: the server sends COOP and COEP headers declaring that every resource on the page is trusted. Without them, heavy engines that rely on shared memory cannot start.

This is also why third-party scripts (such as ads) must carry the crossorigin attribute here — every cross-origin resource has to pass the same security check.

Why Engines Weigh Hundreds of MB

The Office-to-PDF engine contains a nearly complete LibreOffice — about 236 MB raw, roughly 58 MB over the wire thanks to Brotli compression; in-browser Python with its scientific packages and OCR language models add tens more. They download once on first use, then the browser caches them — no repeated downloads.

Verify It Yourself

Open your browser's Network panel and run a conversion: you will see engine downloads, but no request that POSTs your document anywhere. Processing is fully local — with engines cached, parts of the workflow even work offline.