Skip to content

Convert SCR to JPEG

Convert standard ZX Spectrum SCR screen dumps to shareable JPEG images.

Make JPEG files online

We can't read SCR files yet, so this conversion isn't available. If you can export your work to one of these formats - or others - we'll turn it into JPEG:

Want to convert SCR to JPEG?

Let us know. We pick the conversions to add next by how many people ask for them.

How to convert scr to jpeg file

A ZX Spectrum screen dump may need conversion when a website, document editor, or modern graphics application accepts JPEG but not the raw .scr format. JPEG also provides a compact, widely viewable copy for sharing, while the original SCR should be retained for exact preservation.

What the SCR format is

In the Graphics context, SCR normally means a raw ZX Spectrum screen file. A standard SCR file is 6,912 bytes: 6,144 bytes of bitmap data followed by 768 bytes of colour attributes. It represents a 256×192-pixel screen divided into 32×24 character cells; each 8×8 cell has one ink colour, one paper colour, a brightness flag, and an optional flashing flag.

ZX Spectrum emulators, retro-game development tools, demoscene software, and Spectrum paint programs use this format. Because a standard SCR has no image header, many general-purpose editors cannot identify it automatically. The conversion below applies to the standard 6,912-byte ZX Spectrum screen format, not every file that happens to use the .scr extension.

What the JPEG format is

JPEG is a widely supported raster format that stores RGB pixels with lossy compression. It opens in web browsers, office software, image editors, and mobile applications, and normally produces a much smaller file than an uncompressed bitmap.

JPEG is suitable for sharing a converted Spectrum screen or inserting it into a document. It is not ideal as the archival master: its compression can create ringing and colour smearing around the SCR's sharp pixel and attribute boundaries. Keep the original SCR and use PNG when lossless preservation or further pixel-level editing matters.

Convert SCR with Python and Pillow

This method gives a predictable result for standard ZX Spectrum SCR files and does not depend on a program guessing what the extension means.

  1. Install Python 3 and Pillow with python -m pip install Pillow.
  2. Save the following code as scr_to_jpeg.py:
from pathlib import Path
import sys
from PIL import Image

normal = [(0, 0, 0), (0, 0, 192), (192, 0, 0), (192, 0, 192),
          (0, 192, 0), (0, 192, 192), (192, 192, 0), (192, 192, 192)]
bright = [(0, 0, 0), (0, 0, 255), (255, 0, 0), (255, 0, 255),
          (0, 255, 0), (0, 255, 255), (255, 255, 0), (255, 255, 255)]

src = Path(sys.argv[1])
data = src.read_bytes()
if len(data) != 6912:
    raise SystemExit("Expected a standard 6912-byte ZX Spectrum SCR file")

image = Image.new("RGB", (256, 192))
pixels = image.load()
for y in range(192):
    offset = ((y & 0xC0) << 5) | ((y & 7) << 8) | ((y & 0x38) << 2)
    for x in range(256):
        bitmap = data[offset + (x >> 3)]
        attr = data[6144 + (y >> 3) * 32 + (x >> 3)]
        ink = attr & 7
        paper = (attr >> 3) & 7
        palette = bright if attr & 64 else normal
        if attr & 128:
            ink, paper = paper, ink
        colour = palette[ink if bitmap & (0x80 >> (x & 7)) else paper]
        pixels[x, y] = colour

output = src.with_suffix(".jpg")
image.save(output, "JPEG", quality=95, subsampling=0)
print(output)
  1. Run the script with python scr_to_jpeg.py screen.scr. It creates screen.jpg at the native 256×192 resolution.

The palette values are an RGB approximation of the original Spectrum hardware colours; different emulators and converters may use slightly different values. The SCR format stores a flashing attribute, not two permanently visible images, so the script renders the alternate ink-and-paper state for flashing cells. Remove the swap block if the preferred output should show the initial state instead.

Convert with desktop software

Current versions of XnView MP and IrfanView with the required format support may open ZX Spectrum SCR files. Open the file, confirm that the preview is a 256×192 Spectrum screen, then use File → Save as or File → Export and select JPEG. Format support can vary by version and plugin, so the Python method is more reliable when the file is not recognised.

Use an online converter carefully

Online conversion is less dependable for this headerless, specialised format than desktop software. Use a reputable service only when its current format list explicitly identifies ZX Spectrum SCR; a service that merely accepts “SCR” may interpret the extension incorrectly. Select JPEG and a quality setting around 90–95, then verify the dimensions and colours of the downloaded file. Do not upload private or copyrighted screen dumps unless the service's retention and deletion terms are acceptable.

Quality and compatibility limits

Conversion cannot restore detail beyond the source's 256×192 pixels, eight-colour cell palette, and attribute-cell restrictions. Keep the image at native size, or enlarge it by an integer factor using nearest-neighbour scaling when a larger pixel-art preview is required. Bilinear or bicubic interpolation softens the hard edges.

JPEG quality 95 with 4:4:4 chroma sampling reduces colour bleeding but remains lossy. Save a PNG for a lossless modern image copy and preserve the original SCR for later reconstruction or emulator use.

Information about file extensions and file types is provided by File-Extensions.org

Additional formats for
scr file conversion

Reverse conversion

Convert to jpeg from
other formats

Share on social media:

Already downloaded

This file has already been downloaded. For your privacy it was deleted from our server right after the download, so it cannot be downloaded again. To get it once more, convert the file again.