Quake III Arena

April 26, 2026 ยท View on GitHub

A Quake III Arena port designed for running in pure JavaScript pre-ECMAScript 2015 (no WebAssembly). Simply open the link below, click the red icon, and select all the PK3 files and q3config.cfg (optional); all files will be loaded and booted automatically. If you have the commercial version and you want to play it, you need to have the Point Release 1.32 version, this means than you need to have and select at least the following files: pak0.pk3, pak1.pk3 and pak4.pk3. The multiplayer mode is not available in this project, for multiplayer check the original project link at the bottom of this document.

alt screenshot

How to use it:

Examples of loading local and online files can be found here and here.

embedQuake3({
  container: "game",
  files: event.target.files,
  cbStarted: function cbStarted() {
    pleaseWait.style.display = "none"
  },
})
ParameterTypeRequiredDescription
containerstringyesTarget element ID.
filesArray of Blobs or FileListyesPK3s and q3config.cfg.
cbStartedfunctionnoCalled on game start.

Special keys:

ActionmacOS ShortcutWindows ShortcutSafari Shortcut
Download q3config.cfgCommand + PCtrl + PCtrl + P
Fullscreen modeCommand + FCtrl + FCtrl + F

Main differences with the original project:

  • Removed CDN dependency.
  • Removed cache flow in the LocalStorage.
  • Fixed build so it can handle PK3 files dynamically.
  • Fixed build so it can handle big files (the commercial version).

Based on the work of:

https://github.com/inolen/quakejs