A collection of useful, language-agnostic WebAssembly development tools.
Please read the contribution guidelines if you want to contribute.
-
WebAssembly Code Explorer | online tool
A simple binary explorer with neat binary code highlighting. -
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-decompile
decompiles 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. -
wasm-objdump | part of
WABT
Print low-level details about a.wasm
binary and each of its sections. -
wasm-nm | repo
List the imported, exported, and private function symbols defined within a.wasm
binary.
-
Twiggy | repo
Code size profiler, analyzes a binary's call graph. -
Manticore | repo, article
Symbolic execution of WebAssembly binaries. -
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. -
wasm-snip | repo
Replaces a WebAssembly function's body with anunreachable
. -
wasm-meter | npm, repo
Injects metering into webassembly binaries. This counts computation time for a given program in units ofgas
(and allows limiting it). -
wasm2json, json2wasm | npm, repo
A small toolkit for converting wasm binaries into json and back. Very helpful for experimenting and creating your own transformations.
-
wasm3-strace | wapm, repo
Structured, seamless tracing of arbitrary WebAssembly/WASI execution. -
Wasabi | home, repo
"WebAssembly analysis using binary instrumentation", a dynamic analysis framework.
-
WebAssembly Opcode Table | online tool
-
Webassembly.sh | online tool