What is the TAP file format?
.tap is a tape image file created from cassette tapes used by ZX Spectrum home computers. .tap files are logical copies of data stored on those tapes. They can be used to run software in dedicated ZX Spectrum emulators or store backup copies of original programs. Note that the same .tap extension is also used by an incompatible Commodore 64 tape image format - the two share only the extension name.
Tapes as data storage devices
Magnetic tapes were commonly used for distributing software in the past. Magnetic tape readers were cheap, as they were built with components commonly used by audio devices. Simple audio cassettes were used for storing or copying software. Such a method was notoriously unreliable, as the risk of recording data with errors was high.
Each block in a .tap file begins with a 2-byte little-endian length, a flag byte (0x00 = header, 0xFF = data), the payload, and a 1-byte XOR checksum that mirrors the ZX Spectrum ROM loader. Because the format stores only logical data - not pulse timing - games relying on turbo loaders or copy protection are better preserved as .TZX files. Magnetic storage tapes are still used for data backups in modern contexts, but those use formats entirely different from .tap.
Security & safety
RISK: LOWA ZX Spectrum .tap is passive 1980s tape data run inside an emulator sandbox - it cannot harm a modern PC. The real-world risk is downloading games from random abandonware sites that bundle adware in the emulator installer; get emulators only from their official pages (Fuse, ZEsarUX) and games from reputable archives such as World of Spectrum.
Format details
in a nutshell- Commodore 64 tape image - A different .tap format storing C64 datasette pulse data; opened in C64 emulators such as VICE.
- Topfield PVR recording - Digital TV recording (.tap or .rec) from Topfield set-top PVRs; unrelated to retro tape images.
Programs that open TAP files
Technical details
deep spec| Format type | Retro-computer cassette-tape data image (binary) |
| Byte order | Little-endian (16-bit block length fields) |
| Block structure | 2-byte length field, flag byte, payload bytes, 1-byte XOR checksum |
| Flag byte values | 0x00 = header block; 0xFF = data block |
| Checksum method | 1-byte XOR parity per block, replicates ZX Spectrum ROM loader algorithm |
| File signature | None - no fixed magic number; identified by block length/flag/checksum structure |
| MIME type | application/x-spectrum-tap |
| Typical file size | 1 KB - 48 KB |
| Spectrum filename limit | Up to 10 characters per program block header |
| Container model | Flat sequence of tape blocks (no filesystem layer) |
| Successor format | TZX - adds exact pulse timing for turbo loaders and copy-protected software |
| Encoding | Binary (raw byte-level data, no text encoding) |
| Released | 1980s (ZX Spectrum era); TAP format popularised by emulators in the 1990s |
| Latest version | De-facto stable; the TZX format is its richer successor |
| Open standard | Yes · royalty-free |
| Specification | documentation.help |
TAP conversions
Community Q&A
asked by usersNo questions yet - be the first to ask about TAP files.