TypeScript icon, indicating that this package has built-in type declarations

    1.0.29 • Public • Published


    wabt.js is a port of WABT to the Web, allowing you to manipulate WebAssembly modules using a JavaScript API.

    Build status npm version npm nightly version


    $> npm install wabt
    require("wabt")().then(wabt => {
      var wasm = ...; // a buffer holding the contents of a wasm file
      var myModule = wabt.readWasm(wasm, { readDebugNames: true });
      var wast = myModule.toText({ foldExprs: false, inlineExport: false });

    The buildbot also publishes nightly versions once a day if there have been changes. The latest nightly can be installed through

    $> npm install --save-exact wabt@nightly

    or you can use one of the previous versions instead if necessary. Note the --save-exact when using a nightly.

    Usage with a CDN

    • From GitHub via jsDelivr:
    • From npm via jsDelivr:
    • From npm via UNPKG:

    Replace VERSION with a specific version or omit it (not recommended in production) to use main/latest.


    • parseWat(filename: string, buffer: string | Uint8Array, options?: WasmFeatures): WasmModule
      Parses a WebAssembly text format source to a module.

    • readWasm(buffer: Uint8Array, options: ReadWasmOptions & WasmFeatures): WasmModule
      Reads a WebAssembly binary to a module.

    • WasmModule
      A class representing a WebAssembly module.

      • validate(): void
        Validates the module. Throws if not valid.
      • resolveNames(): void
        Resolves names to indexes.
      • generateNames(): void
        Generates textual names for function types, globals, labels etc.
      • applyNames(): void
        Applies textual names. Throws on error.
      • toText(options: ToTextOptions): string
        Converts the module to wat text format.
      • toBinary(options: ToBinaryOptions): ToBinaryResult
        Converts the module to a wasm binary.
      • destroy(): void
        Disposes the module and frees its resources.
    • ReadWasmOptions
      Options modifying the behavior of readWasm.

      • readDebugNames: boolean
        Reads textual names from the name section.
    • ToTextOptions
      Options modifying the behavior of WasmModule#toText.

      • foldExprs: boolean
      • inlineExport: boolean
    • ToBinaryOptions
      Options modifying the behavior of WasmModule#toBinary.

      • log: boolean
      • canonicalize_lebs: boolean
      • relocatable: boolean
      • write_debug_names: boolean
    • ToBinaryResult
      Result object of WasmModule#toBinary.

      • buffer: Uint8Array
        The wasm binary buffer.
      • log: string
        Generated log output.
    • WasmFeatures
      Post-MVP WebAssembly features to legalize.

      • exceptions: boolean
        Exception handling (proposal).
      • mutable_globals: boolean
        Import/Export mutable globals (proposal).
      • sat_float_to_int: boolean
        Non-trapping Float-to-int Conversions (proposal).
      • sign_extension: boolean
        Sign-extension operators (proposal).
      • simd: boolean
        128-bit packed SIMD (proposal).
      • threads: boolean
        Threading (proposal).
      • multi_value: boolean
        Multi-value (proposal).
      • tail_call: boolean
        Tail Call (proposal).
      • bulk_memory: boolean
        Bulk Memory Operations and Conditional Segment Initialization (proposal).
      • reference_types: boolean
        Reference Types (proposal).
      • annotations: boolean
        Custom Annotation Syntax for the Wasm Text Format (proposal).
      • gc: boolean
        Garbage collection (proposal).


    Node.js ports of the following command line tools are included in the package as well:

    • wasm2c converts a WebAssembly binary file to a C source and header.
    • wasm2wat translates from WebAssembly binary format to text format.
    • wat2wasm translates from WebAssembly text format to binary format.
    • wasm-decompile decompiles a wasm binary into readable C-like syntax.
    • wasm-interp decodes and runs a WebAssembly binary file using a stack-based interpreter.
    • wasm-objdump prints information about a wasm binary. Similiar to objdump.
    • wasm-opcodecnt counts opcode usage for instructions.
    • wasm-strip removes sections of a WebAssembly binary file.
    • wasm-validate validates a file in WebAssembly binary format.

    The tools can also be run ad hoc (without explicitly installing the package), for example with:

    $> npx -p wabt wasm2wat myModule.wasm -o myModule.wat


    npm i wabt

    DownloadsWeekly Downloads






    Unpacked Size

    8.35 MB

    Total Files


    Last publish


    • dcode
    • assemblyscript