Boneyard Tools

WebAssembly Module Inspector

Drop in a WebAssembly .wasm file to see what is inside it. This tool validates the module header, reads the binary version, and walks every section to show its name, size, and byte offset. It also parses the import and export tables so you can see which functions, memories, and globals the module brings in and hands out. Everything is read in your browser and nothing is uploaded.

How to inspect a WebAssembly module

  1. Drag a .wasm file onto the box, or click to browse for one.
  2. Read the module version and the table of sections with sizes and offsets.
  3. Scan the import and export lists to see the module's boundary.

Examples

A module that exports one function

add.wasm (a Type section and an Export section listing main)
Version 1, sections: Type, Export. Exports: main (func). Export count 1.

Frequently asked questions

Is my .wasm file uploaded anywhere?

No. The file is read and parsed entirely in your browser using JavaScript. Nothing is sent to a server, so even unreleased or proprietary modules stay on your device.

How does it read a WebAssembly file?

It checks the 8-byte header (the bytes 00 61 73 6d, which spell \0asm, followed by a little-endian version number) and then walks the section sequence. Each section is a one-byte id, an unsigned LEB128 length, and that many payload bytes. The tool decodes the Type, Function, Import, Export, Memory, and Global sections to surface counts and the import and export lists.

What is a section in a WASM module?

A WebAssembly binary is a list of sections, each with a numeric id. Common ones are Type (1), Import (2), Function (3), Memory (5), Global (6), Export (7), Code (10), and Data (11). Id 0 is a Custom section used for names and debug info. The tool lists every section it finds, in file order.

Why does the file open in the browser instead of running the module?

Inspecting bytes is not the same as executing them. This tool never compiles or runs the WebAssembly, it only reads the structure. That keeps it safe for untrusted files and means it works offline with no network access.

Why might some counts be missing?

A module only carries the sections it needs. If there is no Import section, there is nothing to count, so the import count is left blank. The same goes for exports, functions, memories, and globals. The section table always reflects exactly what the file contains.

Does it work on .wasm files built from Rust, C, or AssemblyScript?

Yes. The binary format is the same regardless of the source language, so a module compiled from Rust, C, C++, Go, or AssemblyScript is read the same way. Names in the export table come straight from the module's own export descriptors.

Related tools