😎 A curated list of awesome, language-agnostic WebAssembly tools
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.
wasm-opt | part of Binaryen
wasm-opt --print test.wasm
Graphviz
:wasm-opt --print-call-graph test.wasm | dot -Tpng -o callgraph.png
wasm-opt --dwarfdump test.wasm
wasm-opt --func-metrics test.wasm
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.
wasmdec | repo, online tool
Converts WebAssembly binaries to C. Similar to wasm2c
.
wasp | repo
Generate callgraphs, CFG and DFG graphs for wasm functions.
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.
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
wasm-opt test.wasm --asyncify -O3 -o asyncified.wasm
wasm-opt test.wasm --instrument-memory --instrument-locals --log-execution -o instrumetred.wasm
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 an unreachable
.
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 of gas
(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.
wasm3-strace | wapm, repo
Structured, seamless tracing of arbitrary WebAssembly/WASI execution.
Wasabi | home, repo
"WebAssembly analysis using binary instrumentation", a dynamic analysis framework.
wasmsign | repo
A tool to add and verify digital signatures to/from WASM binaries.
swam | repo
A WASM interpreter with advanced tracing capabilities.
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.
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.
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-smith
test case generator is of particular interest.
wasm-shrink
shrinks 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
WebAssembly Opcode Table | docs
Webassembly.sh | online tool