This article or section documents something not included in the current version of Scratch (3.0). It is only useful from a historical perspective. |
- This article is about a technical description of the file format. For projects in general, see Project.
Project files are used by Scratch to save all the information (stage, sprites, scripts, sound, images) in a Scratch project to a single file.
They have the extension .sb
.
Structure
The basic structure of a project file is as follows:
header
: A 10-byte header encoding the ASCII stringScratchV02
.infoSize
: 32-bit (unsigned?) integer — length of the infoObjects table in bytes.infoObjects
: A dictionary serialised to an Object Table. Contains information like the author, notes, and thumbnail/preview image.contents
: (Remaining bytes) the actual project media, including scripts and sounds.
header
The header is simply the 10-byte string ScratchV02
encoded as ASCII.
Note: | Versions 1.2 and earlier use the string ScratchV01 instead. |
Files saved by mods may have different headers; thus it is useful to know which modification created the project. For example, BYOB stores BloxExp01
.
infoSize
infoSize encodes the length of the given file's infoObjects (see below). The infoSize is four bytes long, and is a 32-bit big-Endian integer.
Note: | In high-level languages like C (and variants), a 32-bit big-Endian integer is constructed with bitwise operations in the following manner:
int big = a << 24 | b << 16 | c << 8 | d;Here, a, b, c, and d are the given bytes. |
infoObjects
This is a set of vital pieces of information about a file. It is used for:
- Validating projects
- Creating quick thumbnails and descriptions
It uses a simple Dictionary format: it consists of alternating pieces of ASCII keys and values. The keys currently in use are:
- thumbnail: small image of project when saved
- author: author of the project (usually username)
- comment: the Project Notes
- history: save/upload history
- scratch-version: the version of Scratch which saved the file
contents
This is a second Object Table, with the Stage as the root object. All media, sprites, scripts, etc. are encoded as References from the main stage object.
Files | |
Structure |
Object Table • Inline Values • Objects • Fixed-format Objects • User-class Objects |
Contents |