Skip to content
The same sunset dithered to the ZX Spectrum palette with Floyd–SteinbergThe sample image before dithering: a synthwave sunset, a striped sun over mountains and a neon grid
Floyd–Steinberg · ZX Spectrum · 480 × 320 px

Consoles & computers

ZX Spectrum Palette

The Sinclair ZX Spectrum has one of the simplest palettes of any home computer: 8 colors, each in a normal and a bright version, for 15 in total, since bright black is still black. Its real signature is how it used them: two colors per 8 × 8 block, the famous attribute clash. Here are all 15 colors with hex codes, how the attributes work, and a free way to dither images to them.

Colors
15
Year
1982
Hardware
Sinclair ZX Spectrum ULA
Match
By color

The 15 ZX Spectrum colors

The Spectrum outputs its colors as voltage levels, which emulators render at slightly different strengths. Here normal colors sit at about 85% (#D7) and bright ones at full strength (#FF).

SwatchNameHexRGB
Black#0000000, 0, 0
Blue#0000D70, 0, 215
Red#D70000215, 0, 0
Magenta#D700D7215, 0, 215
Green#00D7000, 215, 0
Cyan#00D7D70, 215, 215
Yellow#D7D700215, 215, 0
White#D7D7D7215, 215, 215
Bright blue#0000FF0, 0, 255
Bright red#FF0000255, 0, 0
Bright magenta#FF00FF255, 0, 255
Bright green#00FF000, 255, 0
Bright cyan#00FFFF0, 255, 255
Bright yellow#FFFF00255, 255, 0
Bright white#FFFFFF255, 255, 255

Eight colors, two brightnesses

Sinclair Research released the ZX Spectrum in 1982, and it became one of the best-selling home computers in Britain. To keep it cheap, the display is a 256 × 192 bitmap with one bit per pixel, and color is stored separately: one attribute byte for each 8 × 8 cell, 32 × 24 of them.

Each color is a mix of red, green and blue, each either on or off, which gives black, blue, red, magenta, green, cyan, yellow and white. The bright bit raises the channels that are on to full strength. Black has nothing to raise, so there are 15 distinct colors instead of 16.

Attribute clash

Each attribute byte sets an ink color and a paper color from the 8, one bright bit for both, and a flash bit that swaps ink and paper at a steady rate. So any 8 × 8 block holds only two colors, and both are normal or both bright.

When a character of one color crossed a background of another, the whole block changed color: the attribute clash that gave Spectrum games their look. Many games avoided it with a single-color play area. PixelSynth doesn’t apply the two-colors-per-block rule; for a clash-free Spectrum look, stay in 1-bit mode and pick two Spectrum colors for the dots and the background.

How to make ZX Spectrum-style images

  1. Open the editor with the ZX Spectrum palette selected. It matches by color.
  2. Set Output size to 256 pixels, the Spectrum’s resolution.
  3. Use Bayer 2×2 or Bayer 4×4 for the checkerboard fills of Spectrum art, or Floyd–Steinberg for photos.
  4. Export at ×2 or ×4 so the pixels stay square and sharp.

The ZX Spectrum palette with different dithering algorithms

The same sunset at 480 × 320 pixels, shown at actual size.

Try the ZX Spectrum palette on your image

Open the editor with ZX Spectrum already selected, drop in a photo or an animated GIF, pick a dithering algorithm and export a PNG or an animated GIF. Free, no account, no watermark, and your image never leaves your device.

Open ZX Spectrum in the editor

ZX Spectrum palette FAQ

Why do ZX Spectrum hex codes differ between sources?

Emulators pick different levels for the normal colors, from about #B2 to #D7 (Fuse uses #C0); all approximate the same voltages. This palette uses #D7, with the bright colors at #FF.

Why does the ZX Spectrum have 15 colors and not 16?

The bright bit brightens the channels that are on. Black has none on, so bright black is the same black.