Skip to content

Guides

The best open-source browser emulators on GitHub, and what each one is actually for

EmulatorJS, js-dos, v86, Ruffle and noclip.website are lumped together as browser emulators, but they do four different jobs. Here is what each is, what it costs you, and one that declares no licence at all.

5 min read
Topic
Browser emulation
Difficulty
intermediate
Spoilers
None

“Browser emulator” gets used for at least four different things, and the difference matters more than the ranking does. One is a library you embed. One is a DOS player. One emulates a whole PC. One does not emulate anything at all. Here is the honest version of each, with licences, because two of them have caveats worth knowing before you build on them.

We have not included any project that exists to hand out game files. Every entry below is the emulator or the viewer, and you supply your own software.

EmulatorJS — a frontend for RetroArch, compiled to WebAssembly

EmulatorJS is the one most people mean. It is RetroArch’s emulation cores — the same ones used on desktop and on retro handhelds — compiled so they run in a browser tab, with a RetroArch-shaped interface on top.

  • Licence: GPL-3.0-or-later, copyright Ethan O’Brien
  • What it is: explicitly a library or plugin, not a finished website

That last point is the thing people get wrong. EmulatorJS ships a small loader; the actual emulation cores arrive separately as .data bundles, one per system. If a core refuses to start, it is almost always a missing or misplaced .data file rather than a bug.

Two practical details:

  • Headers. The threaded cores use SharedArrayBuffer, which browsers only expose to cross-origin-isolated pages. Get the headers wrong and it falls back to single-threaded or fails outright. If your host will not let you set custom headers, use the non-threaded core.
  • Version channels. There are Stable, Latest and Nightly builds, and production deployments are expected to serve a minified copy. Pinning to a specific release is the sane default.

Because it is GPL-3.0, self-hosting it and shipping it inside a larger product has obligations. Serving it as part of a website is fine; pretending you wrote it is not.

js-dos — DOS and Windows 9x, with the strangest features on this list

js-dos runs DOS and Windows 9x software in a browser or in Node. It is a frontend over DOSBox and DOSBox-X, and it is by some distance the most feature-dense project here.

  • Accelerated 3Dfx rendering through a WebGL-backed renderer, which is not something you expect from a browser DOS emulator
  • IPX networking over WebRTC, including hosting an IPX server, so multiplayer DOS games work
  • Windows 9x support via DOSBox-X, with prebuilt 95/98 images and DirectX and 3Dfx driver support
  • Sockdrive for very large disk images, streamed rather than fully downloaded
  • OPFS-based persistence for local saves, with hooks for custom storage

Current release is 8.4.1. The maintainer also publishes the underlying emulator packages separately if you want to build your own player.

The caveat: as of this writing the repository declares no licence. GitHub reports no licence for the project, and there is no LICENSE file in the root of the active branch. That does not automatically make it unusable — but it does mean you have no granted rights to redistribute it, which is a real problem if you were planning to bundle it into something you ship. Ask the maintainer before you build a product on it.

v86 — an entire x86 PC in a tab

v86 emulates an x86-compatible CPU, with a JIT that translates x86 to WebAssembly. It is not a console emulator; it runs operating systems. People use it for Linux, for Windows 95 and 98, and for old DOS games that want a real machine rather than a DOS box.

  • Licence: BSD 2-Clause, copyright the v86 contributors

The BSD-2 licence is the most permissive thing on this list, which makes v86 the least legally complicated choice if you want to embed an emulator in something commercial. The trade-off is that it gives you a machine and nothing else — no game library, no save-state UI, no controller mapping. You are building all of that.

Ruffle — Flash, which is a legitimate retro platform now

Ruffle is a Flash Player emulator written in Rust, and it compiles to WebAssembly, so it plays .swf files in a browser with no plugin. With Flash long dead, this is now genuinely a preservation project rather than a compatibility shim.

  • Licence: dual-licensed Apache-2.0 or MIT, at your option — copyright Ruffle LLC and contributors
  • Notable: 18,000+ stars and very active development

If you have old browser games from the 2000s sitting on a hard drive, this is the way to run them. Dual Apache-2.0/MIT is about as friendly as licensing gets.

noclip.website — not an emulator, and better for it

noclip.website gets listed alongside emulators constantly. It is not one. It is a digital museum of video game levels: a WebGPU renderer that draws extracted level geometry so you can fly through it freely, with no collision, no enemies, no game logic.

  • Licence: MIT, copyright Jasper St. Pierre

What makes it relevant here is that it does not run game code at all, which means it needs no emulator and no ROM. The project ships the renderer and format parsers; the level data is served from the project itself. You visit it and explore. Nothing to install.

Two things worth knowing:

  • It needs WebGPU, which is a much newer browser feature than WebGL. On a browser without it you get an error rather than a fallback.
  • Its LICENSE file carries an unusual note. The author states that some format implementations were reverse-engineered and not in a clean-room manner, and that he will tell you which source files are clean if you ask. If you were planning to reuse code from it, that note is the first thing to read.

Which one you actually want

You want to Use
Embed a console emulator in a page EmulatorJS
Run DOS or Windows 9x software, including 3D games js-dos
Emulate a whole PC, or need a permissive licence v86
Play old Flash games Ruffle
Explore game levels without emulating anything noclip.website

The pattern across all five is the same, and it is the reason this category exists at all: the emulation is a solved problem, and what varies is the wrapper around it. Pick the wrapper that matches the job, check the licence before you ship, and remember that the emulator was never the hard part.