You say you like old games, but you can’t be bothered—or aren’t currently in a position to—hook up an old system or open your favorite emulation app? The Internet’s got you covered, with emulators for most consoles and early computers playable right in your browser.
Many—though not all—of these include commercial ROMs, making them technically illegal, but we’ll let you be the judge of whether using them is okay.
Sorted by system, with "others" saved for the end:
Virtual Apple ][ - Requires ActiveGS plugin - The Virtual Apple ][ online disk archive doesn’t just provide downloads and basic information for hundreds of Apple ][ and IIgs games; it also lets you play them via a fairly robust browser emulator extension.
Virtual Atari - Java - If you have Java enabled in your browser, this one will provide a decent experience in any of 550 Atari 2600 VCS games.
2600online.com - Java - It ain’t the prettiest site around, but it does the job and has a fairly big selection of titles. You’re probably better off with Virtual Atari.
The online BBC Micro Emulator - Java - There’s an impressive collection of games on offer here, but I couldn’t get it to work. My iMac freaked out on the BBC Micro command line every time.
FC64 - Flash - The default size is a tad small for my comfort, but there’s not much else to fault with FC64. Granted, the selection is small (eight games, two of which are effectively the same), and you can’t customize the controls, but it runs well.
Game Boy/Game Boy Color/ Game Boy Advance
Virtual Gameboy - Java - From the team that brought you Virtual Apple ][ and Virtual Atari, Virtual Game Boy shines for the fact that it offers 630+ Game Boy and Game Boy Color titles at good frame rates and with sound…if your setup plays nice with it.
Game Gear and Master System
Virtual Sega Master System - Java - It’s unfortunate that this one requires Java, which is disabled by default on many browsers and computers for security reasons, because it supports a whopping 350+ Master System and Game Gear games. Sound jitters in my testing, and sometimes the controls get stuck.
SSega - Java - I could only find one working browser-based emulator for Sega’s famed 16-bit console, and I couldn’t get the controls to work. SSega has a large offering of ROMs, most of which are commercial, and the emulation seems pretty sound—aside from my control issues and a few layering bugs.
NES Play - Java - NES fans are spoiled for choice when it comes to browser-based emulators. As with all the other Java emulators, NES Play runs smoothly but is unplayable on my machine. Your mileage may vary, but I don’t really see any reason to choose it over…
NESbox - Flash - With 1810 games, NESbox includes not just commercial ROMs from different regions but also hacks and fan translations. You can even play two players with a friend over the Internet, and load up your own ROMs if you have something they don’t or if you specifically want to play your own dumps.
8-Bit Hits - Google Native Client - 8-Bit Hits will be a great choice once it adds sound support, offering a drag-and-drop importer, ROM organization, and offline play.
VirtualNES - Java - Probably the best known of the browser-based NES emulators, VirtualNES hosts lots of commercial games along with homebrew, pirate clones, and translated and unreleased titles. Look out for its Chrome Native Client port in the coming months, as site maintainer Emulation Collective moves away from Java.
NESbar - Java - As if there weren’t enough options, you can also dig into more than 500 NES titles on NESbar. I guess the good thing about all these choices is that if one falls you can just slide across to the next.
NESCafe - Java - And there’s yet another one. NES Cafe at least runs on its own emulator, rather than vNES. You’ll have to experiment to see which of these your favorite games run best on.
NaClBox - Chrome Native Client - My favorite emulator on this list includes multiplayer Descent support, along with a bunch of other commercial DOS games. Performance in my testing was near flawless. There are three paid plans for those of you wanting to play your own DOS games, with tiered storage levels.
RGB Classic Games - Java - With an impressive 528 games, it’ll keep you busy for a while, but I was saddened to see that some games—such as my beloved Lemmings—didn’t seem to support sound. You should support the project however you can, though, because its mission statement is focused on preservation and accountability. Nothing hosted there is illegal—anything not officially released under a public domain or freeware license is a shareware or demo version.
JPC - Java - The Pure Java x86 PC Emulator has an applet version with four games—Doom, The Secret of Monkey Island, Commander Keen, and Mario Bros. Maybe there’s a problem with Java in my browser at the moment, but I couldn’t get the games past their respective title screens.
SC-3000 Survivors - Java - Controls weren’t working for me, but it was interesting to watch the games run in demo mode. Includes 16 titles, some better known than others. (The SC-3000 was SEGA’s 8-bit computer—with hardware largely identical to the SG-1000 console.)
Super Nintendo (SNES)
snes4nacl - Google Native Client - The performance seems pretty rock solid—frame rate never dropped below 59-60 for me on NTSC ROMs (and 49-50 on PAL), even on demanding games like Star Fox. I didn’t test enough to see what the accuracy is like, but that’s unlikely to be important to most people. You need to supply your own ROMs, and you can’t customize the controls unless you modify the code.
SNESbar - Java - Yet another one running Java. I actually like Java as a programming language, but as a web app platform I wish it would go away. There’s a good selection of ROMs here, however.
VirtualSuperNES - Java - The Emulation Collective, which runs this site, is hoping to roll out a Native Client (NaCl) version. For now, though, you’ll have to settle for the Java version, which is okay. One highlight is a special unreleased games section separate from the main collection.
Snessy - Java - I’m not sure if Snessy’s working, since I could never get beyond the Java loading graphic. Included it for posterity.
SNESBox - Flash - If you can’t run Chrome, or aren’t able to enable NaCl, SNESBox should be your Super Nintendo browser emulator of choice. It boasts 1,861 games, although most of these are alternate versions or hacks of the same title—Super Mario World, for instance, has somewhere in the vicinity of 100+ ROMs attached to it. you can also access walkthroughs, load your own ROMs, and enjoy private multiplayer sessions over the Internet.
Unreal Speccy Portable - Google Native Client (NaCl) - You get a huge collection of games to choose from, with full 16-bit sound emulation, multiple joysticks, full-screen mode, and some other neat features. I’ve never played with a real Spectrum, but this seemed like a great virtual one.
Pica Pic - Flash - This is cool. Flash versions of old Nintendo Game & Watch and other handheld electronic games like Bartman, Fishing Boy, and Coffee House.
EmuParadise - Java - Popular retro gaming website EmuParadise offers its entire collection of Atari 2600, NES, Game Boy, Game Boy Color, Game Gear, and Master System ROMs for play within your browser through the leading Java emulators.
Play Infocom Adventures Online - Java - If you’re yearning for some classic text adventures in your browser, this may be your best option. It works well, judging from the few minutes I spent with Zork, but then why wouldn’t it? It’s not like un-styled text on a black background is hard to render.
Dune 2 Online - HTML5 - Based on the OpenDune project, this puts influential early RTS Dune II in your browser. It’s come along since word first got out about it, with accounts for saving your progress automatically across browsers/machines.
Transport Tycoon Deluxe Online - HTML5 - From the developer who brought you Dune 2 Online, TTDOnline comes in both single-player and multiplayer flavors. It sizes itself to your browser window, and runs beautifully (except for a few crash bugs). I still love that music. This is a web port of OpenTTD, so it implements a bunch of that project's improvements to the original game.
Quake Flash - Flash - It’s Quake, in your browser, running via Flash. That’s all you need to know.
Addendum: There's now also a ScummVM browser port that includes demos of seven classic LucasArts point-and-click adventure games, and an HTML5 version of Freeciv—the long-running open-source Civilization-inspired project.
18 July, 2013. Added EstyJS to the Atari ST section.
3 October, 2013. Game Oldies - Flash - Game Oldies provides thousands of games for NES, SNES, Game Boy (including Color and Advance), Arcade, Neo Geo, Turbografx, PC-Engine, and Sega 8-bit and 16-bit systems, all emulated in Flash. Performance seems pretty good, and the controls work better for some systems than others, but this looks to be a good one-stop shop for retro emulation.
1 June, 2014. Big thanks to Ed Spittles for pointing out JSBeeb, jor1k, PDP-11 Emulator, Easy 6502, C1Pjs, Virtual x86, Intel8080, PCjs, JS/Linux, JsDOSBox, JSBochs, Jemul8, JSlm32, Arm-js, and C1Pjs.
16 June, 2014. Added Virt.js to the Game Boy section, courtesy of a tip from its developer.
Also note that the fine folks at the Internet Archive set up a Console Living Room with JSMESS-powered emulation of the Atari 2600 and 7800, the ColecoVision, Magnavox Odyssey, Astrocade, (Sega) SG-1000, Emerson Arcadia 2001, Watara SuperVisino, APF-MP1000, Entec Adventurevision, Channel F, Sega Master System, Amstrad GX-4000, Sega Genesis, Epoch Game Pocket Computer, Mega Duck WG-108, Sega Game Gear, Epoch Super Cassette Vision, Bandai Super Vision 8000, VTech Socrates, and Super A'Can. Sound doesn't yet work, but it's a wonderful initiative.