Developer Tool · WebAssembly · Binary Inspector · 2026 · Solo build
Wasm Scope
A forensic instrument for WebAssembly binaries: section manifest, WAT-style type signatures, import/export tables — decoded locally in 50 ms.
The problem
WebAssembly is increasingly used in browser extensions, edge functions, Rust/C toolchains, and WASM-native databases — but there is no lightweight forensic tool that lets you inspect a binary without running it. wasm-scope fills the gap: drop any .wasm file and instantly see every section (Type, Import, Function, Table, Memory, Global, Export, Code, Data, Custom), all function type signatures rendered as WAT-style strings (i32, i32) → i64, every import with its host module and kind, every export with its symbol name and index, and a full summary of the module. The entire decoder is a pure TypeScript state machine operating on the raw Uint8Array — no wabt, no wat-parser, no WASM execution, no network call.
Architecture
Key decisions
Zero-execution constraint
The decoder never calls WebAssembly.instantiate or WebAssembly.compile. It operates only on the raw byte array through a hand-written state machine, making it safe to inspect untrusted or malformed binaries without any sandbox risk.
Hand-written LEB128 and section parser instead of wabt
wabt and wat-parser add hundreds of KB of WASM binary themselves and require execution contexts. A 200-line pure TypeScript LEB128 + section iterator covers 100% of MVP-spec WASM (version 1) sections, stays entirely in the JS/TS layer, and is amenable to full TDD at the unit level.
WAT-style type signature rendering
Function signatures are rendered as (i32, i32) → i64 rather than raw byte arrays. This matches the WebAssembly Text Format and is immediately readable by any engineer familiar with WASM tooling, avoiding raw hex display that requires mental decoding.
Command/Inspect surface with sidebar + panel architecture
The UI is structured as a single-object inspector: one file, one report, multiple facets (sections, types, imports, exports, custom, summary). The sidebar gives file metadata at a glance; the tab rail gives depth on demand. This avoids the Decide/Learn hero pattern which would be wrong for a forensic instrument.