A WASM module begins with a magic number and version, then a sequence of typed sections.

WASM header
00 61 73 6d 01 00 00 00
^ magic     ^ version
  • `00 61 73 6d` spells `\0asm`, identifying a WebAssembly binary.
  • The current MVP version field is `01 00 00 00`.
  • Known sections include type, import, function, table, memory, global, export, start, element, code, data, and custom sections.
  • Section sizes, indexes, counts, locals, immediates, and many integer values use LEB128 encodings.
  • Code bodies contain opcode streams plus immediates and structured control markers.