Wasm Module Inspector
Open a local .wasm file or paste its bytes as hexadecimal text. This bounded reader decodes the version-1 header, section boundaries, common type/import/export entries and memory limits. It reports byte offsets and rejects malformed lengths, LEB128 and selected index errors. It does not compile, instantiate or execute the module. A structural result is not a full WebAssembly validation result.
Key features
- Map declared section payloads to exact byte offsets
- List function signatures, named imports, exports and memory limits
- Detect malformed u32 LEB128, truncated payloads, section order and duplicate sections
- Inspect an example or an uploaded file without running a module
- Download the bounded structural report as JSON
How to use
- Open a local .wasm file or load the built-in example bytes.
- For reproducible troubleshooting, edit the hexadecimal bytes and select Inspect hex.
- Read the section byte map, import/export ABI, types, memory limits and warnings.
- Download JSON for review, then use a full Wasm validator for instruction-level validity.
Use cases
- Check which host functions a module imports before integration
- Find the byte offset of an unexpectedly large custom or code section
- Compare exported function signatures and memory limits
- Locate a truncated section or malformed LEB128 in a generated binary
Frequently asked questions
Will inspecting a file run its WebAssembly code?
No. The tool only reads bytes in your browser. It never calls WebAssembly.compile, validate or instantiate, executes a function, or uploads the file.
Does a successful report prove the module is valid?
No. Code instructions, globals, element/data bodies and advanced proposals are not fully decoded. Use a conforming validator for complete semantic validation.
What binary format is supported?
The version-1 magic header and a bounded core subset: type, import, function, table, memory, export, start and code body boundaries. Shared/memory64 limits and advanced type encodings are rejected where encountered.
Can I inspect an arbitrary large module?
Files are limited to 2 MiB, 80 sections, 2,000 vector entries per decoded vector and 512 bytes per name to keep browser work bounded.
Privacy
The selected file stays in browser memory. No module execution, upload, network lookup or server-side parsing occurs; JSON is created only when you click download.
Comments & questions