Run code in any language - fast, secure and portable.

WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications.

WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. A portable compilation target for programming languages that enables near-native performance on the web, server, and embedded systems.


An open web standard.

Developer reference documentation for Wasm can be found on MDN's WebAssembly pages. The open standards for WebAssembly are developed in a W3C Community Group (that includes representatives from all major browsers) as well as a W3C Working Group.

Efficient and fast

The Wasm stack machine is designed to be encoded in a size- and load-time-efficient binary format. WebAssembly aims to execute at native speed by taking advantage of common hardware capabilities available on a wide range of platforms.

Safe

WebAssembly describes a memory-safe, sandboxed execution environment that may even be implemented inside existing JavaScript virtual machines. When embedded in the web, WebAssembly will enforce the same-origin and permissions security policies of the browser.

Open and debuggable

WebAssembly is designed to be pretty-printed in a textual format for debugging, testing, experimenting, optimizing, learning, teaching, and writing programs by hand. The textual format will be used when viewing the source of Wasm modules on the web.

Part of the open web platform

WebAssembly is designed to maintain the versionless, feature-tested, and backwards-compatible nature of the web. WebAssembly modules will be able to call into and out of the JavaScript context and access browser functionality through the same Web APIs accessible from JavaScript. WebAssembly also supports non-web embeddings.


Code in your language.

Choose your language, pick a toolchain, and ship production-grade Wasm in minutes.

30+ languages
Ada
AssemblyScript
C / C++
C#
COBCobol
D
Dart
F#
Go
GGrain
Haskell
Java
Kotlin
Lua
moonMoonbit
Pascal
PHP
Python
R
Ruby
Rust
Scala
Scheme
Swift
Zig

Compile to WebAssembly.

WebAssembly is a low-level, portable, size- and load-time-efficient binary format suitable for compilation to the web. It runs your code at near-native speed in a sandboxed environment and isolates code, data, and host resources.

;; A simple add function
(module
  (func $add (param $a i32) (param $b i32) (result i32)
local.get $a
local.get $b
i32.add)
  (export "add" (func $add)))

Run anywhere.

Execute Wasm modules in browsers, on the server, at the edge, or embedded in any application.

20+ runtimes
3 browser engines
Chrome
Firefox
Safari
Node.js
Deno
Cloudflare
wasmWasmtime
WRWasmer
WEWasmEdge
Fastly
Bun