Skip to content

Porting Examples and Demos

Sam Willis edited this page Feb 12, 2025 · 96 revisions

Games and Game Engines

NameDescriptionAuthorSubmittedLinkSourceStatus/Date
GeogramA library of geometric algorithm and interactive 3D graphics. Emscripten target natively supported by the official version. The GUI is done with ImGUI, a version adapted to Emscripten is bundled in GEOGRAM. Embedded LUA interpreter in GEOCODok 2019.05.30
Unity DemosAngry Bots, Tanks (wasm) (older DT2 blogpost)semiok 2019.05.30
Nebula3The Nebula3 enginecooldnt figure out 2019.05.30
BulletThe Bullet physics engine compiled to JavaScript with convenient automatically-generated bindings (through ammo.js)404 2019.05.30
Esenthel EngineLive Demook 2019.05.30
Quake 3QuakeJS, a port of ioquake3page look alive but don't work 2019.05.30
Doom 3D3wasm, an experimental port of idTech 4 to WebAssembly / WebGLGabriel CuvillierJan. 2019Online demonstration using Doom 3 Demo - Project PageGitHub repositorypage look alive but don't work 2019.05.30
Kigs-frameworkOpen Source, free , cross platform, multi purpose fast application development frameworkStephane CapoOnline coding samplesGitHub repository
DoomThe open source Freedoom game assets running on PrBoom, which is based on the open source Doom code
UNIGINEPort of the UNIGINE game engine by ACTISKUok 2019.05.30
Urho3DFree lightweight 2D and 3D framework. Cross-platform support using SDL 2.0 with Emscripten supportok 2020.04.10
BananaBreadPort of Sauerbraten/Cube 2. Project page here.ok 2019.05.30
Torque 2D DemoAn experimental port of the Torque 2D game engine. Blogpostok 2019.05.30
Voxel InvadersBlogpostok 2019.05.30
Dune IIPort of OpenDune, an open source implementation of the classic real-time strategy game Dune II"buy this domain" 2019.05.30
Me & My ShadowA 2D SDL platform/puzzle game (original here)ok 2019.05.30
CeferinoPort of a 2D action game (also available here)ok 2019.05.30
SuperTuxPort of SuperTux by @forandompage look alive but don't work 2019.05.30
Box2DThe Box2D physics engine compiled to JavaScript with convenient automatically-generated bindings (through box2d.js)404 2019.05.30
Online Freecell solverPort of libfreecell-solver (part of Freecell Solver) to WebAssembly and JavaScript, with some jQuery glue and YUI-based graphics
ScummVM ported to HTML5Demos of Monkey Island 1, Sam & Max, Day of the Tentacle, Indiana Jones and other LucasArts classics in your web browser!server not found 2019.05.30
drahtkern tech demoA cross-platform 3D engine techdemo developed by MADE404 2019.05.30
Open Syobon ActionA parody of Super Mario. Original here.ok 2019.05.30
Randomedia GameAn endless game with aliens and sheeps. Source code on Github.ok 2019.05.30
Minko EngineA free and open source 3D engine for HTML5, iOS, Android, Windows, Mac and Linux.other site 2019.05.30
Minko - SponzaThe famous Sponza 3D model rendered with the Minko Engine.other site 2019.05.30
Minko - Venus de MiloA 3D scan of the Venus de Milo rendered with the Minko Engine.other site 2019.05.30
Recast.js- Port of Recast navigation mesh libraryok 2019.05.30
OxygineA free and open source 2D game framework for HTML5, iOS, Android, Windows, Mac and Linux.ok 2019.05.30
Duck Dynasty SlotsA web version of Duck Dynasty Slots which was previously a mobile-only game. Blogpost404 2019.05.30
CaveExpress and CavePackerFree and open source 2D games (SDL2).https://github.com/mgerhardy/caveexpressok 2019.05.30
GDevAppWebapp to create 2D games without programming. Based on open source GDevelop project, ported to JS with Emscripten.ok 2019.05.30
EasyRPG Player HTML5 portPort of the EasyRPG Player RPG Maker 2000/2003 games interpreter.ok 2019.05.30
BrowserHackPort of NetHack.ok 2019.05.30
Simon Tatham's Puzzlesok 2019.05.30
amazeballz poolFree 3D pool game you can play in your browser. Created using Ragtag's C++ interactive software engine, theRedEngine, compiled to JS/HTML5 using Emscripten.Ragtag Developments Ltd02/04/2016Game Information/Homepageok 2019.05.30
raylibA simple and easy-to-use library to learn videogames programming. Check online examples.@raysan56-Aug-2016www.raylib.comhttps://github.com/raysan5/raylibok 2019.05.30
DIVDIV Games Studio, a full cross platform games development IDE + Compiler@MikeDX19-Nov-2016www.div-arena.co.ukhttps://github.com/DIVGAMES/DIV-Games-Studiook 2019.05.30
PongAnother version of the famous oldie!@Jackbenfu08-Nov-2017jackbenfu.itch.io/ponghttps://github.com/Jackbenfu/Pongok 2019.05.30
Open FodderPort of Cannon Fodder@segrax10-March-2019Cannon Fodder Demoshttps://github.com/OpenFodder/openfodderok 2019.05.30
Stockfish.wasmWebAssembly port of the strong chess engine Stockfish29-May-2019Live demoGithubok 2019.05.30
Pyramid Solitaire Ancient EgyptWeb version of Pyramid Solitaire Ancient Egypt which was previously only available as app
RaZModern & multiplatform C++ game engineRazakhel2022 Nov. 23Online demo - Rendering
Online demo - Atmospheric simulation
Online demo - Terrain generation
https://github.com/Razakhel/RaZ

Graphics

NameDescriptionAuthorSubmittedLinkSource
IMGUIOpenGL GUI
Microwindows/Nano-XA library for X11 and limited WinAPI supportGitHubC code
MeshLabJSPure client side version of the open source mesh processing system MeshLab
Autodesk FormIt3D conceptual design application
OpenGL ES 2.0 GearsOpenGL ES 2.0 rendering compiled to WebGL
Rawson.jsAn experimental Camera RAW viewer in Javascript, based on an emscripten port of dcraw.c
dcraw.jsSimple port of dcraw.c into a JavaScript Library
Crunch DXT1 Texture CompressionUsing Crunch to compress DXT1 textures for use in browsers supporting compressed textures. Online demo page using library.
TopologicSimple viewer for higher-dimensional geometric primitives and fractals.
VerovioA library for engraving MEI music notation into SVG

Emulators

NameDescriptionAuthorSubmittedLinkSource
JSMESSJavaScript port of the MESS emulator
Classic Mac OSMac Plus emulator using PCE
MoonjsSimulator for the Apollo Guidance Computer (AGC) used in the Apollo Program's lunar missions
JS-VBA-MPort of VBA-M by ILOVEPIE
VICE.jsVersatile Commodore Emulator for JavaScript
Chiptunes ForeverHTML5/WebAudio versions of various popular chiptune players: AdPlug, Sc68, Tiny'R'Sid, UADE, XMP, ZXTunehttps://github.com/wothke
qemu.jsWork in progress. Includes some implementation of machine-code-to-JS translatorhttps://github.com/atrosinenko/qemujs
em-dosboxAn Emscripten port of DOSBox29-May-2019Github
js-dosThe simpliest API to run DOS games in browser.caiiiycukGithub

Databases

NameDescriptionAuthorSubmittedLinkSource
PGliteEmbeddable Postgres - Run a full Postgres database locally in WASM with reactivity and live sync.ElectricSQLhttps://pglite.devGithub

Application Frameworks

NameDescriptionAuthorSubmittedLinkSource
BlazorClient web UI framework based on .NET and WebAssembly
pepper.jsPorts of miscellaneous PNaCl apps (earth, voronoi, bullet, etc.)
QtPorts of various Qt demos
ClarityClarity Web FrameworkGreg Propf2022-11-21https://github.com/gpropf/clarity

Programming Languages

NameDescriptionAuthorSubmittedLinkSource
C/C++Clang and LLVM
C#/F#/VB.NET execution runtime for WebAssembly
LuaThe Lua VM, ported in lua.vm.js
DaoPort of the Dao language
mrubyPort of mruby, a lightweight implementation of the Ruby language
Python, Ruby, LuaThe popular dynamic languages Python, Ruby and Lua, compiled to JavaScript (Older Python demo )
PerlPort of (micro)perl-5.30.x
pypy.jsJIT Python InterpretorRyan KellygithubHomepage
JavaScriptThe JavaScript engine of WebKitmbbill
NixNix in javascript for teaching programming in the Nix languageqknighthttps://nixcloud.io/tourhttps://lastlog.de/blog/posts/tour_of_nix.html
Otus LispThe Otus Lisp (functional Scheme dialect) VM, ported in WebAssembly

Tutorials

NameDescriptionAuthorSubmittedLinkSource
Developing a Simple Game of Air Hockey Using C and OpenGL ES 2 for Android, iOS, and the WebThis is a set of tutorials that takes a look at a very simple game developed for Android and ports it to the web by using emscripten.

WIP

NameDescriptionAuthorSubmittedLinkSource
Cocos2D-X
Rogue.JS

Utilities

NameDescriptionAuthorSubmittedLinkSource
essentia.jsJavaScript library for extensive Music and Audio AnalysisAlbin Correyahttps://github.com/MTG/essentia.js
openFrameworksopenFrameworks ported via Emscripten
Vim.jsVi IMproved
GnuPGThe GNU Privacy Guard suite
OpenSCADSolid 3D CAD Modeller
bardecodeExactImage's barcode scanner
LaTeX and BibTeXPorts of TeX Live's pdflatex and bibtex tools (using texlive.js)
ctagsPort of ctags
gnuplotPort of gnuplot
LLVM IRCompile and run LLVM IR in JS, using compiled parts of LLVM + emscripten
GraphvizGraph visualization software (port is here)
PNG CrushPNG optimizer in a web page
XML schema validationXML validation in pure JS using compiled libxml
hpdf.jsCreate PDF files in pure JS using compiled libharu
SQLiteSQLite compiled to JavaScript with an easy-to-use API (through sql.js)
Text-to-SpeecheSpeak, a speech synthesizer, compiled to JavaScript.
PopplerPDF rendering in JavaScript, using Poppler and FreeType. Warning: Very large (>12MB) download.
FreeTypeTrueType font rendering in JavaScript, using FreeType
Pocketsphinx.jsSpeech recognition in JavaScript, using PocketSphinx and the Web Audio API
PhonetisaurusPort of grapheme-to-phoneme (g2p) engine phonetisaurus used to create dictionaries for pocketsphinx, to javascript
ogg.jslibogg, libvorbis, and libopus compiled to JavaScript for Aurora.js
MiniSatPort of the MiniSat SAT solver
BoolectorPort of the Boolector SMT solver
videoconverter.jsA port of the FFmpeg video utilities
audioconverter.jsThe FFmpeg port with lame, vorbis and fdk-aac libraries for audio transcoding
ffmpeg.jsAnother port of the FFmpeg intended for WebM encoding
PDCursesPort of PDCurses
astyle.jsPort of Artistic Stylesass.jsPort of libsass
epanet.jsHydraulic analysis of water supply networks
TinyGL.jsImplementation of a subset of OpenGL 1.1 compatible API in JavaScript
PDFium.jsRender PDF using PDFium in JavaScript
aalib.jsPort of aalib
bb.jsPort of bb, the demo of aalib
aaWebCamRender webcam using aalib
typespeed.jsPort of typespeed
glpk.js(partial) Port of GLPK (GNU Linear Programming Kit)
lmfit.jsPort of lmfit, a curve fitting library
y4m.jsWrapper of MJPEG Tools, to support decoding of Y4M files
LaTeX BaseWeb-based LaTeX editor that uses a LaTeX compiler built with Emscriptenlambdabaa06/29/16Link
spatiasql.jsPort of SpatiaLite, a spatial DBMS
tesseract.jsPort of Tesseract, an OCR engineantimatter15http://tesseract.projectnaptha.com/
ccv.jsPartial port of CCV, a computer vision library
WASM-ImageMagickImageMagick ported via Emscripten, image transformation and manipulationKnicKnic2018-09-20https://knicknic.github.io/imagemagick/https://github.com/KnicKnic/WASM-ImageMagick
quantlib-wasmA wrapper of the quantitative finance library QuantlibCaptor AB2019-08-21NPMGitHub
node-sealA port of Microsoft SEAL's homomorphic encryption library to WebAssembly Morfix.ios0l0ist2019-05-26NPMGitHub
wasm-vipslibvips for the browser and Node.js, compiled to WebAssembly with Emscriptenkleisauke2020-09-01NPMGitHub

Other Examples

NameDescriptionAuthorSubmittedLinkSource
zopfli.jsZopfli, slow but smaller zlib/gzip compression
zpipezlib compiled to JS
zee.jsAnother port of zlib to JS (focused on compressing/decompressing of gzip files)
lzma.jsLZMA ported to JS
sql.jsSQLite ported to JS
libtess2.jslibtess2 compiled to JavaScript
Projects using asm.js
WAMDAW style audio plug-ins for the WebJari Kleimola & Oli Larkin20-Nov-2017webaudiomodules.orggithub
libgit2Run git inside the browser Youtube demoPeter Salomonsen
xapian/Runbox7Xapian search index port running in the browser demo videoRunbox
pcl.jspcl.js is a Point Cloud Library (PCL) that runs in the browser, powered by Emscripten and WebAssembly. Point Cloud Library (PCL) is a standalone, large scale, open project for 2D/3D image and point cloud processing.Darkce
close