Skip to content

WebAssembly — From Zero to Hero

A standalone, beginner→advanced course on WebAssembly. Write WAT and watch it compile and run in your browser, master JS interop and linear memory, then compile real languages to Wasm and go beyond the browser with WASI.

Intro: What is Wasm?

The stack machine, why & where Wasm runs, your first module. Start →

The WAT Text Format

Modules, funcs, value types, locals & the stack, arithmetic. Write WAT →

Control Flow & Functions

Blocks, branches, loops, if/else, calls & recursion. Branch →

JS Interop & Loading

instantiate, imports & exports, streaming, number marshalling. Interop →

Linear Memory & Data

The shared ArrayBuffer, typed-array views, passing strings, growing. Memory →

Languages to Wasm

Rust (wasm-bindgen), C (Emscripten), AssemblyScript, choosing one. Compile →

Tooling

wabt, Binaryen (wasm-opt), inspecting & optimizing .wasm. Tools →

WASI & Beyond the Browser

WASI, wasmtime/wasmer, the component model, real-world use cases. Go further →

Runs in your browser

Write WAT and click Run — it compiles to Wasm and executes right here, with real output. No install.

Diagrams that explain

The stack machine, caching of the compile→instantiate flow, and memory layout as Mermaid diagrams.

Real toolchains

Compile Rust, C, and AssemblyScript to Wasm — open runnable AssemblyScript projects in StackBlitz.

Bilingual + read mode

English and ไทย, quizzes with saved progress, and a distraction-free read mode.

This course’s facts, code, and version-specific claims were last checked against real toolchains and official docs in September 2026:

ToolVerified version
Rust / Cargo1.96.1
wasm-bindgen-cli0.2.128
wasm-pack (actively maintained under rustwasm)0.13.1
Wasmtime49.0.0
WABT (wat2wasm, wasm2wat)1.0.42
Binaryen (wasm-opt)version 133
Node.js24.13.0

Where a lesson names a specific proposal’s standardization phase (e.g. the Component Model, Threads) or a WASI preview version, it reflects the WebAssembly/proposals tracker and the WASI repository as of the same date — check those directly if you’re reading this much later, since phases do change.