Skip to content
back to the quest log
rare⌘ developer toolingshipped

Scratch File Extractor

Open a Scratch project without Scratch

A dependency-free Python CLI that unpacks eight generations of Scratch project and sprite formats into inspectable code and assets.

role
Tool author
org
Independent open source
when
2026

What it is

Scratch archives contain scripts, costumes, sounds, sprites, and project metadata, but the file layout changes across generations and forks.

The extractor accepts project and sprite files in eight formats, detects their container, and writes an organized directory with project JSON, per-sprite scripts, costumes, and sounds.

It uses only the Python standard library, supports batches and explicit output directories, and is small enough to audit in one sitting.

where the effort went

  • Compatibility92
  • Simplicity96
  • Safety82
  • Preservation90

the numbers

Formats
8
Dependencies
0
Runtime
Python 3
Inputs
Batch

built with

  • Python 3
  • zipfile
  • JSON
  • CLI

delivery record

What I made

I needed a repeatable way to inspect and preserve Scratch projects as ordinary files, especially for teaching material and asset-heavy games.

  • 01

    Format detection for eight project and sprite extensions

  • 02

    Archive extraction with safe, organized output paths

  • 03

    Per-sprite scripts, costumes, sounds, and metadata folders

  • 04

    Batch input and configurable output directories

  • 05

    Dependency-free Python 3 command-line interface

Hard problems

The constraints mattered as much as the finished interface.

01field note

One interface across changing archive layouts

problem
Legacy Scratch files and newer ZIP-based formats store scripts and media differently.
response
The CLI normalizes each recognized container into one predictable folder model while preserving the original project metadata.
02field note

Safe extraction of untrusted archives

problem
Archive member paths can escape the requested output directory if they are trusted blindly.
response
Output paths are resolved into the project folder and assets are written into controlled sprite directories.

after shipping

What stayed with me

  • A preservation tool is more useful when its output is boring, stable, and readable by tools that know nothing about the original editor.

  • A small dependency-free utility can be easier to trust around untrusted archives.