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

  • GitHub repo sql.js

    A javascript library to run SQLite on the web.

    Project mention: Web SQL Database: In Memoriam (2014) | news.ycombinator.com | 2021-10-11

    It would be the biggest irony ever if the web settles on sql.js [1] plus persistance based on IndexedDB.

    Then to comfortably store data, we would have SQLite running in WebAssembly persisting the data via the awkward IndexedDB API which uses the comfortable SQLite API to store the data in native SQLite.

    [1] https://sql.js.org

  • GitHub repo ffmpeg.wasm

    FFmpeg for browser and node, powered by WebAssembly

    Project mention: Show HN: Easily download videos with timeline trimming and frame cropping | news.ycombinator.com | 2021-10-14
  • Syncfusion

    Build stunning web applications quickly using Syncfusion JavaScript UI controls.. The Syncfusion JavaScript suite offers more than 65 cross-platform, responsive, and lightweight JS/HTML5 UI controls for building modern web applications.

  • GitHub repo 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

  • GitHub repo 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!

  • GitHub repo butterchurn

    Butterchurn is a WebGL implementation of the Milkdrop Visualizer

    Project mention: I'm trying to figure out how to make trippy visuals for live music I make but I don't know where to begin | reddit.com/r/vjing | 2021-10-24

    if you'd like an example of what Milkdrop looks like, go to https://butterchurnviz.com/

  • GitHub repo 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

  • GitHub repo BootstrapBlazor

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

  • Scout APM

    Scout APM: A developer's best friend. Try free for 14-days. Scout APM uses tracing logic that ties bottlenecks to source code so you know the exact line of code causing performance issues and can get back to building a great product faster.

  • GitHub repo webassemblyjs

    Toolchain for WebAssembly

    Project mention: Bevy + Rapier WASM build with React GUI | reddit.com/r/rust_gamedev | 2021-08-07
  • GitHub repo 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.

  • GitHub repo 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.

  • GitHub repo 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
  • GitHub repo 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/

  • GitHub repo wasm4

    Build retro games using WebAssembly for a fantasy console.

    Project mention: WASM-4 is a virtual game console for building retro games directly in WebAssembly | reddit.com/r/javascript | 2021-10-07

    About assembly language, pure WAT (WebAssembly's text format) is an option if you're into that. Check out this example source (play)

  • GitHub repo doom-checkboxes

    🕹️ DOOM rendered via checkboxes in a web browser.

    Project mention: Doom in checkboxes | reddit.com/r/gaming | 2021-10-15
  • GitHub repo textyle

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

    Project mention: Textyle - Online Tilemap Editor (Rust compiled to WASM + WebGL + ReactJS) | reddit.com/r/rust_gamedev | 2020-12-21

    Sure, here's the rust module within the project.

  • GitHub repo 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

  • GitHub repo 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.

  • GitHub repo 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

  • GitHub repo arima

    ARIMA, SARIMA, SARIMAX and AutoARIMA models for time series analysis and forecasting in the browser and Node.js

    Project mention: ARIMA / GARCH JavaScript Implementation? | reddit.com/r/algotrading | 2021-03-20
  • GitHub repo eventsheet-wasm

    An extensible custom CSS engine that uses WASM

    Project mention: I wrote a customizable CSS engine in JavaScript | dev.to | 2021-07-29

    If you’ll look at the demo’s source code (which I highly advice before you continue any further) you’ll see how I define custom properties to my stylesheet with the Event, Selector and Rule classes. The engine does follow the native CSS path, although it’s still in early stages and doesn’t support many features and capabilities, such as:

  • GitHub repo vivid_vector_alphabet

    Beautiful Hand Drawn Letters ⭐ A meticulous merger of form and function. Typography Animation Microinteraction -Star it!

    Project mention: Hand Drawn SVG Alphabet | news.ycombinator.com | 2021-09-13
  • GitHub repo CalcuLaTeX-Web

    Basic web frontend for CalcuLaTeX

    Project mention: Numi. Beautiful calculator app for Mac | news.ycombinator.com | 2021-03-29
  • GitHub repo react-wasm-demo

    A simple demo of using C/C++ WebAssembly with React (create-react-app)

    Project mention: Show HN: Minimal demo to use C/C++ WASM with create-react-app | news.ycombinator.com | 2021-04-14
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 2021-10-24.

Index

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

Project Stars
1 sql.js 9,425
2 ffmpeg.wasm 6,270
3 NectarJS 3,074
4 telegram-react 1,663
5 butterchurn 929
6 opus-recorder 792
7 BootstrapBlazor 778
8 webassemblyjs 614
9 camaro 463
10 wasm-pack-plugin 224
11 Olaf 206
12 localpdfmerger 190
13 wasm4 145
14 doom-checkboxes 108
15 textyle 74
16 aioli 60
17 fiedka 42
18 koder 41
19 arima 21
20 eventsheet-wasm 19
21 vivid_vector_alphabet 17
22 CalcuLaTeX-Web 12
23 react-wasm-demo 9
Find remote jobs at our new job board 99remotejobs.com. There are 38 new remote jobs listed recently.
Are you hiring? Post a new remote job listing for free.