< Scratch File Format (1.4)

Revision as of 12:09, 25 April 2019 by Asqwde (talk | contribs) (added obsolete)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Archive.png 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 is 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.


The basic structure of a project file is as follows:

  • header: A 10-byte header encoding the ASCII string ScratchV02.
  • 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.


The header is simply the 10-byte string ScratchV02 encoded as ASCII.

Note 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 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 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.


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


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.