JSMESS

MESS (Multi Emulator Super System, part of the MAME project) is one of the oldest emulators for home computers, game consoles, and scientific calculators. Its hallmark is breadth: instead of targeting a single CPU or architecture, it supports around 250 different systems. JSMESS is a JavaScript port of MESS, developed by Jason Scott for the Internet Archive. JSMESS is available on archive.org along with an extensive catalog of games and software for a wide range of vintage platforms. Interestingly, for PC emulation it uses DOSBox as a compatibility layer. Even if that has any performance impact, it’s minimal: you can fire up Prince of Persia right now and it’ll run no worse than it did on your dad’s old 286 at the office.
PCjs

PCjs is a family of emulators for vintage CPUs, including the Intel 8080, x86, PDP-11, and a MOS 6502 variant. The pcjs.org homepage features a curated set of prebuilt configurations and disk images, including VMs with MS-DOS, PC-DOS, OS/2, and even Windows. We couldn’t get Windows 95 to boot, but Windows 3.11 did start—slowly. After launching a machine, check the list of available disk images; you’ll find collections of rare software and operating systems (for example, MINIX and SCO Xenix). Alternatively, you can upload your own disk or floppy image in IMG format.
PCE.js

This PCjs cousin stands out by emulating not only x86, but also the Mac Plus and Atari ST. The highlight is arguably the Mac OS System 7 demo—not just because the author took the time to include an image of the classic Macintosh. It feels as fast as, if not faster than, the original hardware, and the HD 2 disk includes several folders of apps and games. The same site also hosts an IBM PC/XT emulator bundled with demos of Monkey Island, Civilization, and Wolfenstein 3D.
Javatari

When it comes to browser-based Atari emulators, Javatari is probably the best of the bunch. It’s used on Virtual Atari, which hosts a collection of 550 games. And if you’re in the mood to try some Atari 2600 assembly programming—or just want to see how games were made back in the day—check out 8bitworkshop.com: it lets you edit source code and see the results on a single page.
Virtual x86

The buzz around browser-based emulators started picking up in 2011, when Fabrice Bellard launched JSLinux—a Linux PC emulator that runs right on his homepage. Since then, others have taken the idea further: Virtual x86 offers a selection of seven UNIX and Linux distributions, plus Windows 1.01, Windows 95 and 98, KolibriOS, and Oberon. Unlike PCjs, this emulator doesn’t try to cold-boot Windows; it just loads a RAM image. Even for Windows 98 that’s only 12 MB, so it starts fast. Unfortunately, all the OS images are heavily stripped down and have no internet connectivity.
ZX Spectrum Emulators

For those who grew up in the USSR, computer nostalgia often centers on the ZX Spectrum. So far, the best browser-based Spectrum emulator we’ve come across is the previously mentioned JSMESS. Beyond that, there are JSSpeccy, Qaop, jBacteria, and a few others, but each has its quirks—file loading, audio, controls—it’s rare for all of those to work flawlessly. And of course, you can always ditch the browser and grab the good old Fuse.
Miscellaneous
If even Windows 98 runs in the browser, there’s basically nothing stopping you from cramming in anything that predates it—and people are doing exactly that. Our short roundup didn’t include the NES emulator with a couple dozen bundled games, the Radio-86RK emulator, and many others. You can find a solid catalog on Frédéric Cambus’s site and experiment on your own. Among other things, it links to emulators for truly ancient machines like the Z1, UNIVAC, and even Babbage’s Difference Engine.