For most engineers WebAssembly still feels academic. It is not — there are five concrete patterns shipping in production right now.
WebAssembly was supposed to revolutionize the web. It did, just not in the way the early demos promised. Nobody is shipping a Photoshop port to the browser. What people are shipping is more interesting and a lot more practical.
Image and video processing
Squoosh, Figma, and most modern image editors run encoding and decoding pipelines as Wasm modules. The libraries (libjpeg, libpng, libwebp, FFmpeg) are written in C, compile to Wasm with Emscripten, and run in Web Workers. Processing happens client-side, the network round trip disappears, and the user experience is instant.
Cryptography and zero-knowledge proofs
Browser-side cryptography for password managers, end-to-end encrypted messaging, and zero-knowledge proof generation runs on Wasm. Libsodium, age, and ZK libraries like circom-runtime are all available as Wasm bundles. The crypto-grade C implementations port directly; the JavaScript versions never matched their performance.
Parsers and language tooling
tree-sitter compiled to Wasm powers syntax highlighting in GitHub, VS Code Web, and Sourcegraph. Prettier, ESBuild, SWC, and Rome ship Wasm builds for browser-based playgrounds. The grammar engine that runs at 60 fps in your editor is a 200 KB Wasm module.
Scientific compute and CAD
Onshape, Figma's vector engine, and most browser-based CAD tools rely on a C++ geometry kernel compiled to Wasm. The CPU-bound math runs at near-native speed; the UI runs in JavaScript and React. The split is clean and durable.
Polyglot interoperability
Need to run Python in the browser? Pyodide compiles CPython to Wasm. Need Ruby? ruby.wasm exists. Need a SQL database? sql.js (SQLite) and pglite (Postgres) both run as Wasm modules. The "no server" architecture is increasingly viable for whole categories of applications.
What Wasm is still bad at
Direct DOM access (you go through JavaScript), startup time (a 5 MB Wasm module is a 5 MB download), and debugging tooling (improving fast, still rough). For straightforward CRUD, JavaScript remains the right choice.