A collection of useful, language-agnostic WebAssembly development tools.
π Contributions are welcome! Please read the contribution guidelines. π
-
WebAssembly Code Explorer | online tool
A simple binary explorer with neat binary code highlighting. -
Weave | online tool
Another simple binary explorer. -
wasm-opt | part of
Binaryen- Color output of s-expression format:
wasm-opt --print test.wasm - Plot the callgraph using
Graphviz:
wasm-opt --print-call-graph test.wasm | dot -Tpng -o callgraph.png - Dump DWARF debug info sections:
wasm-opt --dwarfdump test.wasm - Print function metrics:
wasm-opt --func-metrics test.wasm
- Color output of s-expression format:
-
wasm-decompile | part of
WABT, article
wasm-decompiledecompiles a wasm binary into readable code. It generates output that tries to look like a "very average programming language" while still staying close to the wasm it represents. -
wasmdec | repo, online tool
Converts WebAssembly binaries to C. Similar towasm2c. -
wasp | repo
Generate callgraphs, CFG and DFG graphs for wasm functions. -
wasm-objdump | part of
WABT
Print low-level details about a.wasmbinary and each of its sections. -
wasm-nm | repo
List the imported, exported, and private function symbols defined within a.wasmbinary. -
Modsurfer | home, repo
Diagnostics and auditing tool for searching, browsing, validating, and investigating WebAssembly modules and components.
-
Twiggy | repo
Code size profiler, analyzes a binary's call graph. -
Manticore | repo, article
Symbolic execution of WebAssembly binaries. -
Owi | docs, repo
Framework for WebAssembly analysis and manipulation, with a focus on practical symbolic execution. -
Octopus | repo
Security analysis framework for WebAssembly modules and Smart Contracts. -
Wassail | repo
A toolkit to perform both lightweight and heavyweight static analysis of WebAssembly modules. -
wasm-opcodecnt | part of
WABT
Count wasm opcode usage statistics.
-
wasm-opt | part of
Binaryen- Transform binary for asynchronous execution (read more in this article):
wasm-opt test.wasm --asyncify -O3 -o asyncified.wasm - Instrument binary for dynamic execution tracing:
wasm-opt test.wasm --instrument-memory --instrument-locals --log-execution -o instrumetred.wasm
- Transform binary for asynchronous execution (read more in this article):
-
wizer | repo
Don't wait for your Wasm module to initialize itself, pre-initialize it! Wizer instantiates your WebAssembly module, executes its initialization function, and then snapshots the initialized state out into a new WebAssembly module. -
wasm2c | part of
WABT, article 1, article 2
Takes a WebAssembly module and produces an equivalent (and runnable) C source and header. -
wasm-snip | repo
Replaces a WebAssembly function's body with anunreachable. -
wasmonkey | repo
Magically turns exported WASM functions into imported functions. -
wasm-meter | npm, repo
Injects metering into webassembly binaries. This counts computation time for a given program in units ofgas(and allows limiting it). -
CROW | repo
The Wasm superdiversifier. It takes C source code or LLVM bitcode as input and generates several functionally equivalent, but diverse Wasm binaries. -
watr | repo, npm, demo
Light and fast WAT compiler for compiling, parsing, printing, formatting, optimizing, and polyfilling WebAssembly text.
-
jco | docs, repo
JavaScript-native toolchain for working with WebAssembly Components, including transpiling components to ES modules and creating components from JavaScript. -
ComponentizeJS | repo
Tool for turning JavaScript modules into WebAssembly components. -
wit-bindgen | repo
Guest language bindings generator for WIT and the WebAssembly Component Model. -
wac | repo, docs
WebAssembly Compositions tool for composing components together from the command line or from.waccomposition files. -
cargo-component | repo, crate
Cargo subcommand for building Rust WebAssembly components from WIT worlds. -
wkg, wasm-pkg-tools | repo, crate
Tools for fetching and publishing WebAssembly components and WIT packages to OCI or Warg registries. -
WASI-Virt | repo
Virtualization component generator for WASI Preview 2 APIs, useful for encapsulating or restricting component access to host capabilities.
-
wasm3-strace | wapm, repo
Structured, seamless tracing of arbitrary WebAssembly/WASI execution. -
Wasabi | home, repo
"WebAssembly analysis using binary instrumentation", a dynamic analysis framework. -
wasmsign2 | repo
A tool to add and verify digital signatures to/from WASM binaries. -
swam | repo
A WASM interpreter with advanced tracing capabilities.
-
wasm-language-tools | home, repo
Language server and formatter for WebAssembly Text Format, with completion, diagnostics, navigation, inlay hints, and call hierarchy. -
Hexana | docs, repo
WebAssembly and binary analysis toolkit for JetBrains IDEs and VS Code, including structured.wasminspection, WAT and WIT support, and run/debug integrations. -
vscode-wit | repo
Visual Studio Code extension for WIT, with syntax highlighting, validation, formatting, bindings generation, and component inspection.
-
Chrome DevTools | article
-
LLDB | article
-
wasminspect | repo
An interactive and self-contained debugger for WebAssembly/WASI.
-
Tool Conventions | docs
Documents describing conventions useful for coordinating interoperability between wasm-related tools. -
Binaryen | repo
WebAssembly compiler and toolchain infrastructure with tools for parsing, emitting, optimizing, interpreting, reducing, merging, and compiling WebAssembly. -
WABT | repo
The WebAssembly Binary Toolkit, a suite of command-line tools for converting, inspecting, validating, and manipulating WebAssembly binaries and text. -
Javy | repo
JavaScript-to-WebAssembly toolchain based on QuickJS, producing compact WASI modules. -
wasm2json, json2wasm | npm, repo
A small toolkit for converting wasm binaries into json and back. Incredibly helpful for experimenting and creating your own transformations. -
walrus | repo
Rust library for performing WebAssembly transformations in a robust and ergonomic fashion. -
waffle | repo, crate
Rust SSA IR framework for WebAssembly analysis and Wasm-to-Wasm transforms. -
wasp | repo
C++ library designed to make it easy to work with WebAssembly modules. -
Binaryen.js | repo
A port of Binaryen to the Web, allowing you to generate WebAssembly using JavaScript. -
wasm-tools | repo
Rust tooling for low-level manipulation of WebAssembly modules.
wasm-smithtest case generator is of particular interest.
wasm-shrinkshrinks a Wasm file while preserving an interesting property (such as triggering a bug). -
wasm-debug | repo, crate
A runtime-independent Rust library that provides functionality to read, transform, and write DWARF section. -
witx-codegen | repo
A code generator to access WebAssembly standard APIs from different programming languages. Can also generate documentation. -
Articles
-
Extism | home, repo
Cross-language framework for building WebAssembly-based plugin systems with host SDKs and guest PDKs. -
Spin | home, repo
Framework and CLI for building, running, and distributing serverless WebAssembly applications. -
wasmCloud, wash | docs, repo
Cloud-native platform and CLI for developing, building, publishing, and running WebAssembly components. -
SpinKube | home, repos
Kubernetes-native stack for deploying and operating Spin-based WebAssembly workloads. -
runwasi | docs, repo
Containerd shim infrastructure for running WebAssembly workloads through containerd and Kubernetes.


