JavaScript WASM

Open-source JavaScript projects categorized as WASM | Edit details

WebAssembly (abbreviated WASM) is a binary instruction format for a stack-​based virtual machine. WebAssembly is an open standard that defines a portable binary-code format for executable programs, and a corresponding textual assembly language, as well as interfaces for facilitating interactions between such programs and their host environment.

Top 23 JavaScript WASM Projects

  • sql.js

    A javascript library to run SQLite on the web.

    Project mention: TinyBase: A JavaScript library for structured state | news.ycombinator.com | 2022-01-17

    SQLite on WASM[0]is absolutely what you are looking for. There is also “Absurd SQL”[1] which extends it to use indexedDB as a VFS for storage allowing proper atomic transactions and not loading the whole thing into memory.

    0: https://sql.js.org/

    1: https://github.com/jlongster/absurd-sql

  • ffmpeg.wasm

    FFmpeg for browser and node, powered by WebAssembly

    Project mention: Do you know how to accomplish getting transcription from a .mp4 video using JavaScript? | reddit.com/r/learnjavascript | 2022-01-16

    Generally for something like this you would need a server but it might be possible to do this all in the frontend using something like https://github.com/ffmpegwasm/ffmpeg.wasm

  • SonarQube

    Static code analysis for 29 languages.. Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free.

  • NectarJS

    🔱 Javascript's God Mode. No VM. No Bytecode. No GC. Just native binaries.

    Project mention: Ask HN: Why is there no Django/Rails equivalent in JavaScript world? | news.ycombinator.com | 2021-10-14

    Rails/Ruby performance has improved:

    https://medium.com/retention-science/ruby-is-still-a-diamond...

    Alhough, compiling Javascript to binary makes code even faster https://nectar.js.org , although I wish that project would get more love with bugfixes https://github.com/NectarJS/nectarjs/issues

  • telegram-react

    Experimental Telegram web client with tdlib, webassembly and react js under the hood

    Project mention: How to Create a Telegram Bot with Node.js and Sanity | dev.to | 2021-06-22

    Secondly, Telegram is open source and can be rebuilt from the ground up using the source code (check out the React version). So if you have fun with our project, there's no limit to how far you can extend it in the ecosystem!

  • butterchurn

    Butterchurn is a WebGL implementation of the Milkdrop Visualizer

    Project mention: Website/program that shows visuals in sync with music? | reddit.com/r/Techno | 2022-01-17
  • BootstrapBlazor

    A set of enterprise-class UI components based on Bootstrap and Blazor

  • opus-recorder

    A library for encoding and decoding web audio as OggOpus.

    Project mention: Flask breaks webpage | reddit.com/r/flask | 2021-08-04

    // size of one wav in ms var PACKAGESIZE = 175; // offset proportion for delay from recders ( if .5 recoder2 starts at the midlle of recorder1) var OFFSETRATIO = 0.99; var BRIDGERATIO = 0.05; // audio streamer implementation using https://github.com/chris-rudmin/opus-recorder to record audio data and convert to real 16bit pcm mono wav file // sending wav to flask server using post via ajax blob post function screenLogger(text, data) { log.innerHTML += "\n" + text + " " + (data || ''); // console.log(text); } var recorder = new Recorder({ monitorGain: 0, recordingGain: 1, numberOfChannels: 1, wavBitDepth: 16, encoderPath: "../static/dist/waveWorker.min.js" }); // function startRecording(){recorder.start();console.log("started recording");} document.getElementById("startRecording").addEventListener("click", function(){recorder.start();console.log("start");}); //#region recorder1 recorder.onstart = function(){ screenLogger('Recorder is started'); setTimeout(function(){recorder.stop();},PACKAGESIZE); }; recorder.onstop = function(){ screenLogger('Recorder is stopped'); recorder.start(); }; recorder.onstreamerror = function(e){ screenLogger('Error encountered: ' + e.message ); }; recorder.ondataavailable = function( typedArray ){ console.log(recorder.encodedSamplePosition); console.log("data available"); var dataBlob = new Blob( [typedArray], { type: 'audio/wav' } ); var form = new FormData(); form.append('file', dataBlob, "fileName"); form.append('title', "fileName2"); $.ajax({ type: 'POST', url: 'http://127.0.0.1:5000/send', crossDomain: true, data: form, cache: false, processData: false, contentType: false }).done(function(data,status) { console.log(data,status); screenLogger("result:",data); }); var fileName = new Date().toISOString() + ".wav"; var url = URL.createObjectURL( dataBlob ); var audio = document.createElement('audio'); audio.controls = true; audio.src = url; var link = document.createElement('a'); link.href = url; link.download = fileName; link.innerHTML = link.download; var li = document.createElement('li'); li.appendChild(link); li.appendChild(audio); recordingslist.appendChild(li); }; //#endregion //#region recoder2 var recorder2 = new Recorder({ monitorGain: 0, recordingGain: 1, numberOfChannels: 1, wavBitDepth: 16, encoderPath: "../static/dist/waveWorker.min.js" }); recorder2.onstart = function(){ screenLogger('Recorder 2 is started'); setTimeout(function(){recorder2.stop();},PACKAGESIZE*BRIDGERATIO); }; recorder2.onstop = function(){ screenLogger('Recorder 2 is stopped'); recorder2.start(); }; recorder2.onstreamerror = function(e){ screenLogger('Error encountered: ' + e.message ); }; recorder2.ondataavailable = function( typedArray ){ console.log("data available 2 "); var dataBlob = new Blob( [typedArray], { type: 'audio/wav' } ); var form = new FormData(); form.append('file', dataBlob, "fileName"); form.append('title', "fileName2"); $.ajax({ type: 'POST', url: 'http://127.0.0.1:5000/send', crossDomain: true, data: form, cache: false, processData: false, contentType: false }).done(function(data,status) { console.log(data,status); screenLogger("result:",data); }); var fileName = new Date().toISOString() + ".wav"; var url = URL.createObjectURL( dataBlob ); var audio = document.createElement('audio'); audio.controls = true; audio.src = url; var link = document.createElement('a'); link.href = url; link.download = fileName; link.innerHTML = link.download; var li = document.createElement('li'); li.appendChild(link); li.appendChild(audio); recordingslist.appendChild(li); }; //#endregion

  • Scout APM

    Less time debugging, more time building. Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and external services monitoring, Scout is a developer's best friend when it comes to application development.

  • webassemblyjs

    Toolchain for WebAssembly

    Project mention: webassemblyjs VS adawebpack - a user suggested alternative | libhunt.com/r/webassemblyjs | 2021-12-28
  • camaro

    camaro is an utility to transform XML to JSON, using Node.js binding to native XML parser pugixml, one of the fastest XML parser around.

    Project mention: Piscina – The Node.js Worker Pool | news.ycombinator.com | 2021-03-22

    AFAIK this is a wrapper of worker_threads API. https://github.com/tuananh/camaro utilises this for multi-threading processing of XML input.

  • DotNetJS

    Consume C# from JavaScript with comfort: single-file UMD library, auto-generated 2-way bindings and type definitions.

    Project mention: DotNetJS: Use C# in any JavaScript environment: browsers, Node.js, VS Code web extensions, etc. | reddit.com/r/csharp | 2021-12-14
  • wasm4

    Build retro games using WebAssembly for a fantasy console.

    Project mention: WASM-4 Fantasy Console 2.0 tagged, with new languages Nim, Odin, & Zig | reddit.com/r/contextfree | 2021-11-27
  • SecretNetwork

    𝕊 The Secret Network

    Project mention: Been doing a lot of IBC transfers through the dip, no congestion, no crazy fees, all works in great order. Just as the Internet of Blockchains should! | reddit.com/r/cosmosnetwork | 2022-01-22

    also check out SCRT network https://scrt.network/ - Privacy, NFTs, and pools

  • argon2-browser

    Argon2 library compiled for browser runtime

    Project mention: How did LastPass master passwords get compromised? | news.ycombinator.com | 2021-12-30

    > is there really fast enough implementations available to the browser

    Browsers have pretty good support for surfacing native code SHA family hash functions which you can use to speed up PBKDF2. It's called the Web Crypto API and it's available even in Internet Explorer 11. [1]

    If you're willing to drop support for IE11 and older phones like the iPhone 4S, then you get access to WebAssembly. With WASM you can get a bunch of custom algorithms to be quite fast. The Argon2 browser WASM library claims to be only about 10x slower than optimized native code. [2]

    It's not perfect, but it isn't as bad as it used to be with just pure JavaScript.

    --

    [1] https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_...

    [2] https://github.com/antelle/argon2-browser

  • wasm-pack-plugin

    webpack plugin for Rust

    Project mention: Just another GameBoy emulator in Rust with WebAssembly frontend | reddit.com/r/EmuDev | 2021-10-14

    The emulator (GB) core is written in Rust and then exported/compiled to WASM via https://github.com/wasm-tool/wasm-pack-plugin. This basically generates a WASM file with the Typescript definitions as well (*.wasm + *.ts files). The entry file is here https://github.com/vojty/feather-gb/blob/main/gb-web/src/lib.rs.

  • Olaf

    Olaf: Overly Lightweight Acoustic Fingerprinting is a portable acoustic fingerprinting system. (by JorenSix)

    Project mention: Q: Play certain audiofile, react to it by executing script | reddit.com/r/linuxquestions | 2021-02-13
  • localpdfmerger

    Merge PDFs, optimize PDFs, and extract Information like Images from PDF Files locally inside your Browser

    Project mention: How do I merge PDF documents? | reddit.com/r/techsupport | 2021-04-29

    Take look https://localpdf.tech/

  • doom-checkboxes

    🕹️ DOOM rendered via checkboxes in a web browser.

    Project mention: Why not use Node.js for chess engines, it must be much faster than c++ right? | reddit.com/r/shittyprogramming | 2021-12-09

    WebAssembly and checkboxes

  • asyncify

    Standalone Asyncify helper for Binaryen

    Project mention: Store SQLite in Cloudflare Durable Objects | dev.to | 2022-01-26

    The asyncification is achieved by unwinding and rewinding the local stack. With wasm-opt, this is done on a WASM level as post-build transformation. This makes it a language-agnostic approach. Once a WASM module is asyncified it needs to be used through the JavaScript wrapper Asyncify. A good introduction to asyncify can be found here: Using asynchronous web APIs from WebAssembly.

  • textyle

    Web tilemap editor for 2D games built using React JS, WebGL and Rust (WASM).

  • aioli

    Framework for building fast genomics web tools with WebAssembly and WebWorkers

    Project mention: Show HN: Jq Play in the Browser via Web Assembly | news.ycombinator.com | 2021-09-23

    I, and many others, use jq play[0] a lot to craft queries.

    However, jqplay.org sends everything to a back end behind the scene, so it can be slow for big input json, and not great for privacy.

    Someone recently integrated jq compiled to web assembly in aioli.js[1], so I decided to make a jq play clone that runs in the browser.

    It does not support sharing a query, but it's minimal, and does what I need for now.

    [0]: https://jqplay.org/

    [1]: https://github.com/biowasm/aioli

  • koder

    QR/bar code scanner for the Browser

    Project mention: QR/bar code scanner for the Browser | reddit.com/r/reactjs | 2021-04-09

    [1] https://github.com/maslick/koder [2] https://qr.maslick.tech

  • fiedka

    a visual toolkit for exploring and editing firmware images, running on web platforms

    Project mention: Secure Boot: How to extract nVidia UEFI boot option ROM from "vBIOS" to generate hash for custom PK, KEK, db? (black screen upon boot without "Microsoft Corporation UEFI CA 2011" in db, which I do not want) | reddit.com/r/linuxquestions | 2021-09-04

    Since the log is purely binary, one has to extract the data first according to this manual.

  • seeder

    Find, show, share and admire Minecraft seeds (Java edition only)

    Project mention: Is there a website that checks seeds for high mountains? | reddit.com/r/Minecraft | 2022-01-07

    This is probably what you are looking for

NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2022-01-26.

JavaScript WASM related posts

Index

What are some of the best open-source WASM projects in JavaScript? This list will help you:

Project Stars
1 sql.js 9,741
2 ffmpeg.wasm 6,793
3 NectarJS 3,145
4 telegram-react 1,738
5 butterchurn 985
6 BootstrapBlazor 882
7 opus-recorder 810
8 webassemblyjs 637
9 camaro 464
10 DotNetJS 431
11 wasm4 373
12 SecretNetwork 315
13 argon2-browser 242
14 wasm-pack-plugin 241
15 Olaf 217
16 localpdfmerger 198
17 doom-checkboxes 128
18 asyncify 82
19 textyle 77
20 aioli 68
21 koder 61
22 fiedka 51
23 seeder 24
Find remote jobs at our new job board 99remotejobs.com. There are 29 new remote jobs listed recently.
Are you hiring? Post a new remote job listing for free.
OPS - Build and Run Open Source Unikernels
Quickly and easily build and deploy open source unikernels in tens of seconds. Deploy in any language to any cloud.
github.com/nanovms