ZX SPECTRUM BRITISH COMPUTERS EMULATOR
raze
R.A.Z.E. is an open-source ZX Spectrum emulator implemented in Rust with a WebAssembly/web frontend. It targets the ZX Spectrum 48K and 128K (plus +3 features) and runs in a browser or can be built locally as a WASM web artifact.

WHY IT MATTERS
Why R.A.Z.E. exists
R.A.Z.E. (Rusty Attempt to a Z80 Emulator) was created as a learning project in Rust that compiles to WebAssembly. The project focuses on portability (web deployment), practical compatibility with common Spectrum formats (TAP, TZX, Z80, RZX) and on providing a usable in-browser Spectrum experience with basic debugging and memory inspection tools.
BEST FOR
Best for
Quick browser-based ZX Spectrum playback and testing of TAP/TZX snapshots and RZX recordings; developers who want a Rust+WASM example of a Spectrum emulator; users who want to run Spectrum content without installing native emulator binaries.
The people behind raze
History & status
The project is maintained in the public GitHub repository and includes a live GitHub Pages build. The README states R.A.Z.E. was built mainly to learn Rust and to compile to WebAssembly. The repository contains source, build instructions for the wasm32 target and notes about emulation coverage (48K/128K/+3 ROMs included in the web build, support for TAP/TZX/RZX/Z80 and DSK for +3, partial undocumented CPU flags and approximate timing). The source is published under the MIT License. Activity and commit history are visible in the repository; releases are provided on the project's GitHub Releases page. The project is not presented as a drop-in, cycle-accurate professional emulator but as a practical, browser-first implementation with some limitations reported in the README.
What raze supports
- Sinclair ZX Spectrum 48K
- Sinclair ZX Spectrum 128K
- Sinclair +3 (disk support; +3 ROM included in web build)
- TAP tape images
- TZX tape images (partial coverage)
- Z80 snapshot files (48K and 128K snapshots supported and saving supported in Z80 format where applicable/compatible with web build behavior that may include custom ROMs inside snapshots). Note: snapshots saved with custom ROMs may not be portable to other emulators.) RZX recordings (playback supported) DSK floppy images (for +3)
Download and availability
OFFICIAL DOWNLOADS
Get raze
Official source, builds and release artifacts are provided from the project's GitHub repository and its Releases page. A live web-hosted build is available via the project's GitHub Pages site.
Get raze ↗DOCUMENTATION
Official documentation
Read the official configuration, compatibility, and troubleshooting material before changing advanced options.
Read official documentation ↗raze setup guide
Setup note: This guide explains practical setup paths: use the hosted web build for immediate use, or build locally to produce a web artifact (WASM) to run on a local web server. The repository contains build steps and notes about supported file types and limitations.
- Use the hosted web build (fastest): Open the project's GitHub Pages site in a modern browser. Use the page UI to load TAP, TZX, Z80, RZX and ZIP files that contain a single valid file. Choose machine model (48K, 128K, +3) from controls and use provided keyboard/joystick mappings. The web UI exposes Poke/Peek memory controls and basic options (WebGL/Canvas fallback, dithering, border tweaks).
- Download prebuilt releases: Check the repository Releases on GitHub for any published release artifacts. If a release includes packaged web builds, download, unzip and serve the directory with a local HTTP server (do not open index.html directly with file:// for WASM). Example: python -m http.server from the unpacked folder, then point a browser to http://localhost:8000/.
- Build locally (produce a WASM web build): Prerequisites: a recent Rust toolchain and wasm32-unknown-unknown target, plus wasm-pack. Using rustup: rustup target add wasm32-unknown-unknown. Install wasm-pack if needed: cargo install wasm-pack. Clone the repository, then either run wasm-pack build –no-typescript –target web –release from the project root, or use the repository xtask helper cargo xtask pack if provided. After a successful build, host the generated web/pack output with a local HTTP server and open in a modern browser.
- Loading media and options: Load TAP/TZX files or Z80/RZX snapshots via the UI or by using URL parameters described in the README (snapshot=, tape=, disk=). You can also load ZIP files containing a single supported file. The emulator includes 48K/128K/+3 ROMs in the web build; custom ROMs can be loaded via UI (but snapshots saved with custom ROMs may not be usable in other emulators).
- Controller and input notes: Keyboard symbol shift maps to right-control and Alt keys by default. Cursor keys can emulate joysticks; Kempston, Sinclair and Protek joystick modes are supported. Experimental gamepad support is available (mapped as Kempston). If building locally, test controllers in your browser; behavior may vary by browser and OS.
- Limitations and practical tips: The README documents that CPU timing and memory contention are approximations (adequate for many programs but not cycle-accurate), some undocumented CPU flags are only partially emulated, and TZX support is not 100%. If you rely on precise timing-sensitive demos or on features not fully implemented, test specific files and consider other, more cycle-accurate emulators. For DSK disk usage, ensure you select the +3 model. Use the repository issue tracker to report specific incompatibilities.
Software reminder: The project does not include commercial game files. The README notes that official ZX Spectrum ROMs are included in the web build and are copyrighted by Amstrad; see the repository ROMs.txt for details. If you need BIOS/ROM images not included, obtain them from appropriate legal sources.
Sources and further reading
Detailed guides and tutorials
Explore step-by-step guides for raze as they are published.
Retro Replay Retro Gaming History, Reviews & Emulation
