Tiny Online Tools logoTiny Online ToolssearchSearch tools…grid_viewAll Tools
Homechevron_rightReverse Engineering Toolschevron_rightWASM DecompilerWASM Decompiler

WASM Decompiler

Turn a WebAssembly binary into readable WAT text, with a per-function call graph, control-flow shape, and a best-effort toolchain guess.

upload_file

Click to browse or drag & drop files here

Drop a .wasm file to decompile it

Accepted: .wasm

Similar Tools

WASM Binary Explorer

WASM Binary Explorer

Browse a WebAssembly module's sections, functions, imports, exports, memories, tables and globals with exact byte offsets and sizes.

WASM Import/Export Visualizer

WASM Import/Export Visualizer

See what a WebAssembly module needs from its host and what it offers back, grouped by module namespace, side by side.

WASM Demangler

WASM Demangler

Demangle Rust and C++ symbol names found in a WebAssembly binary, one at a time or in bulk across a whole file.

WASM Size Analyzer

WASM Size Analyzer

Find out which functions and data segments dominate a WebAssembly module's size, with an exact sorted breakdown and a visual treemap.

Merge PDF

Merge PDF

Merge multiple PDF files into one document quickly and securely in your browser.

HTML Minifier

HTML Minifier

Minify HTML by removing comments, whitespace, and redundant attributes.

Video Mirror Tool

Video Mirror Tool

Video Mirror Tool helps you flip a recording horizontally or vertically directly in your browser. Use it for fast, private media cleanup, publishing, lessons, demos, and everyday video or audio editing.

apps

More Tools

Browse our full collection of free online tools.

A .wasm binary is not meant to be read directly — but it can be turned into WAT, WebAssembly's readable text format, and analyzed structurally beyond just the instruction stream. The WASM Decompiler does both, entirely in your browser.

Be clear about what this is and isn't. This tool does not recover the original Rust, C or C++ source code — that information is gone once the compiler produces WASM. What it does recover, accurately:

  • Full WAT disassembly, produced by wabt (the WebAssembly Binary Toolkit), with debug names applied where the module carries a "name" section.
  • A call graph, built by walking each function's raw bytecode for call and call_indirect instructions — not guessed from the WAT text. A call_indirect shows which function-type signature it targets, never a guessed concrete function, because the real target is only resolved at runtime — that's a structural fact about the code, not a limitation of this tool.
  • Control-flow shape per function: maximum block/loop/if nesting depth, and counts of each, giving a rough sense of how structurally complex a function is without needing a full control-flow graph.
  • A best-effort toolchain guess — "likely Rust", "likely Emscripten (C/C++)", or "likely AssemblyScript" — based on real, checkable evidence: Rust's mangled symbol prefixes, Emscripten's characteristic runtime imports (emscripten_*, __cxa_*, __wasm_call_ctors), or AssemblyScript's ~lib/ standard-library path strings found in the module's data segments. The tool always shows the specific evidence it found and phrases the result as "likely" — never a certainty, and never a guess with nothing behind it.

A function whose bytecode uses an instruction outside the tool's modeled opcode set (SIMD, atomics, bulk-memory operations) is marked "partial disassembly" rather than silently shown as complete — honesty about the analysis's limits matters more than a tidy result.

Useful for auditing a third-party .wasm module's structure, understanding how its functions call each other, or getting a first read on an unfamiliar binary before deeper analysis.