Reference

wasm2c(1)

convert a WebAssembly binary file to a C source and header

NAME

wasm2c – convert a WebAssembly binary file to a C source and header

SYNOPSIS

wasm2c [options] filename

DESCRIPTION

wasm2c Read a file in the WebAssembly binary format, and convert it to a C source file and header.

The options are as follows:

--help

Print this help message

--version

Print version information

-v, --verbose

Use multiple times for more info

-o, --output=FILENAME

Output file for the generated C source file, by default use stdout

--num-outputs=NUM

Number of output files to write

-n, --module-name=MODNAME

Unique name for the module being generated. This name is prefixed toeach of the generated C symbols. By default, the module name from thenames section is used. If that is not present the name of the inputfile is used as the default.

--disable-exceptions

Disable Experimental exception handling

--disable-mutable-globals

Disable Import/export mutable globals

--disable-saturating-float-to-int

Disable Saturating float-to-int operators

--disable-sign-extension

Disable Sign-extension operators

--disable-simd

Disable SIMD support

--enable-threads

Enable Threading support

--enable-function-references

Enable Typed function references

--disable-multi-value

Disable Multi-value

--disable-tail-call

Disable Tail-call support

--disable-bulk-memory

Disable Bulk-memory operations

--disable-reference-types

Disable Reference types (externref)

--disable-annotations

Disable Custom annotation syntax

--enable-code-metadata

Enable Code metadata

--enable-gc

Enable Garbage collection

--disable-memory64

Disable 64-bit memory

--disable-multi-memory

Disable Multi-memory

--disable-extended-const

Disable Extended constant expressions

--disable-relaxed-simd

Disable Relaxed SIMD

--enable-custom-page-sizes

Enable Custom page sizes

--enable-compact-imports

Enable Compact import section

--enable-wide-arithmetic

Enable Wide arithmetic

--enable-all

Enable all features

EXAMPLES

parse binary file test.wasm and write test.c and test.h

$ wasm2c test.wasm -o test.c

parse test.wasm, write test.c and test.h, but ignore the debug names, if any

$ wasm2c test.wasm --no-debug-names -o test.c

SEE ALSO

wasm-interp(1), wasm-objdump(1), wasm-stats(1), wasm-strip(1), wasm-validate(1), wasm2wat(1), wast2json(1), wat-desugar(1), wat2wasm(1), spectest-interp(1)

BUGS

If you find a bug, please report it at
https://github.com/WebAssembly/wabt/issues.

History

--disable-annotations since Arch Linux 2026-11-01; --disable-bulk-memory since Debian 12 (Bookworm); --disable-exceptions since Arch Linux 2026-11-01; --disable-extended-const since Arch Linux 2026-11-01; --disable-memory64 since Arch Linux 2026-11-01; --disable-multi-memory since Arch Linux 2026-11-01; --disable-multi-value since Debian 12 (Bookworm); --disable-reference-types since Debian 12 (Bookworm); --disable-relaxed-simd since Arch Linux 2026-11-01; --disable-saturating-float-to-int since Debian 12 (Bookworm); --disable-sign-extension since Debian 12 (Bookworm); --disable-simd since Debian 12 (Bookworm); --disable-tail-call since Arch Linux 2026-11-01; --enable-all since Debian 12 (Bookworm); --enable-code-metadata since Debian 12 (Bookworm); --enable-compact-imports since Arch Linux 2026-11-01; --enable-custom-page-sizes since Arch Linux 2026-11-01; --enable-function-references since Debian 12 (Bookworm); --enable-gc since Debian 12 (Bookworm); --enable-wide-arithmetic since Arch Linux 2026-11-01; --module-name since Debian 12 (Bookworm); --num-outputs since Arch Linux 2026-11-01; --version since Debian 12 (Bookworm); -n since Debian 12 (Bookworm).

--enable-annotations until Debian 13 (Trixie); --enable-exceptions until Debian 13 (Trixie); --enable-extended-const until Debian 13 (Trixie); --enable-memory64 until Debian 13 (Trixie); --enable-multi-memory until Debian 13 (Trixie); --enable-saturating-float-to-int until Debian 11 (Bullseye); --enable-sign-extension until Debian 11 (Bullseye); --enable-simd until Debian 11 (Bullseye); --enable-tail-call until Debian 13 (Trixie); --no-debug-names until Debian 13 (Trixie).