Chihuahua|
Projects

DOOM Web - Browser Gaming

Play the original 1993 DOOM and its sequels in your browser, on a Chocolate Doom engine compiled to WebAssembly

Andres Aguilar
Andres Aguilar
October 20, 2026
  • webassembly
  • gaming
  • doom
  • emscripten
  • retro
Visit projectavsolem.com/doom
DOOM Web - Browser Gaming - Image 1
DOOM Web - Browser Gaming - Image 2

Project Overview

The original 1993 DOOM, running in the browser with no plugins or installs. Unlike Diablo Web, which embeds a third-party port, this one is built and hosted here: the engine is compiled from source and served by the site itself.

Technology Behind It

  • Chocolate Doom: a source port that reproduces the original DOS game as faithfully as possible
  • doom-wasm: Cloudflare's WebAssembly port of Chocolate Doom (GPL-2.0)
  • Emscripten: compiles the C engine to WebAssembly, with SDL2 for video, input and sound
  • Cloudflare R2: stores the game data files, served through short-lived signed URLs

Features

  • Game selector

    • Shareware Episode 1, free for everyone
    • The Ultimate Doom, DOOM II, TNT: Evilution and The Plutonia Experiment from a legally owned copy
    • Expansions: SIGIL, No Rest for the Living and the 20 Master Levels, each with its own level list
    • Each game starts straight from its own URL
  • Persistent saves

    • Saved games and settings live in the browser's IndexedDB
    • A separate save folder for each game
  • Original sound

    • Sound effects and the OPL (AdLib) soundtrack, emulated in real time
  • Fast reloads

    • Game data is cached in the browser after the first download

Engine Changes

The upstream port only ran the shareware without music. The build here patches it to:

  • Skip the OPL chip detection, which waited on the audio callback in a single-threaded runtime and froze the game
  • Mount an IndexedDB filesystem for saves and settings
  • Let the page know when the player quits from the in-game menu
  • Fix a boolean size mismatch with Emscripten's stdbool.h that spawned ghost players
  • Add a -nerve mode with No Rest for the Living's level order and ending

SIGIL ships in the 2024 re-release as Episode 5, which the original engine doesn't know. A build script moves it to Episode 3, the same trick as the official "compat" release: maps, music, sky, level names, intermission and ending text.

Controls

  • W A S D / arrows - Move
  • Mouse - Turn
  • Left click / Space - Fire
  • Right click / E - Use
  • Shift - Run
  • 1-7 - Weapons
  • Tab - Map
  • Esc - Menu

Play Now

avsolem.com/doom

DOOM is a trademark of id Software. Chocolate Doom and doom-wasm are distributed under the GNU GPL.