Est. 2007 Beginner

Scratch

A free, block-based visual programming language and online community from MIT designed to teach coding, creativity, and computational thinking to children and beginners

Created by Mitchel Resnick and the Lifelong Kindergarten group (MIT Media Lab)

Paradigm Visual, block-based, event-driven; concurrent
Typing Dynamic, weak
First Appeared 2007
Latest Version Scratch 3.0 (initial release January 2019; updated continuously)

Scratch is a free, block-based visual programming language and online community created by the Lifelong Kindergarten group at the MIT Media Lab. Instead of typing text, learners assemble programs by dragging and snapping together color-coded graphical blocks that fit only in syntactically valid ways — eliminating the typos, missing semicolons, and cryptic compiler errors that frustrate beginners. Aimed primarily at children aged roughly 8 to 16 but used by people of all ages, Scratch has become the world’s most widely used introduction to programming, with a sprawling online community where millions of users create, share, and remix interactive stories, games, and animations.

History & Origins

Scratch grew out of the MIT Media Lab’s long tradition of building programming tools for children, a lineage that runs back to Seymour Papert’s Logo in the 1960s and continued through StarLogo and the Etoys environment built on Squeak. In 2003, Mitchel Resnick, who leads the Lifelong Kindergarten group, and Yasmin Kafai, then at UCLA, received a U.S. National Science Foundation grant to create a new programming environment that would let young people express themselves creatively with code. The project was developed in close partnership with after-school Computer Clubhouses, where the team watched how children actually wanted to use computers — making animations, games, and interactive art — and designed Scratch around those motivations.

The name evokes the scratching technique used by hip-hop DJs, who remix and combine sounds; in the same spirit, Scratch was built to make it easy to mix and remix media and code. After several years of development and prototyping, Scratch 1.0 was released publicly on May 15, 2007, alongside the scratch.mit.edu website, which from the start tied the language to a social, sharing-focused community rather than treating it as a standalone tool.

Design Philosophy

Resnick has summarized Scratch’s goals with the phrase “low floor, high ceiling, and wide walls”: it should be easy for novices to get started (low floor), allow increasingly sophisticated projects over time (high ceiling), and support many different kinds of projects and interests (wide walls). Underlying this is a broader educational philosophy Resnick calls the “4 P’s of Creative Learning”: Projects, Passion, Peers, and Play. Scratch is meant not merely to teach syntax but to let learners pursue projects they care about, collaborate with others, and learn through tinkering.

Two design decisions flow directly from this philosophy:

  • Blocks instead of text. Commands are represented as interlocking puzzle-piece blocks. Their shapes encode the grammar of the language, so a block can only be dropped where it makes sense. This removes whole classes of syntax errors and lets beginners focus on logic and ideas rather than punctuation.
  • Immediate, visible results. Programs control sprites on a stage. Clicking blocks runs them instantly, and changes are visible right away, encouraging the rapid experimentation and iteration central to creative learning.

Key Features

FeatureWhat it provides
Block-based editorDrag-and-drop, color-categorized blocks that snap together only in valid combinations
Sprites and stageProgrammable graphical characters acting on a 2-D stage with costumes, sounds, and backdrops
Event-driven modelScripts triggered by events such as the green-flag start, key presses, clicks, or broadcast messages
ConcurrencyMultiple scripts and sprites run at once, introducing parallelism in an approachable way
Custom blocksUser-defined blocks (procedures) for abstraction and reuse, added in Scratch 2.0
RemixingAny shared project can be opened, studied, and remixed, with attribution tracked automatically
ExtensionsScratch 3.0 connects to hardware (micro:bit, LEGO) and services (translation, text-to-speech)

A typical Scratch program is a set of scripts attached to sprites. Each script begins with a “hat” block describing when it runs — for example, when green flag clicked — followed by a stack of action blocks. Because many scripts can run simultaneously and communicate through broadcast messages, learners encounter genuine concepts of event handling and concurrency, usually without realizing how advanced those ideas are.

Evolution

Scratch has gone through three major generations, each rebuilt on a different technology:

  • Scratch 1.x (2007–2013) was written in Squeak, a Smalltalk-80 dialect, and ran as a desktop application. Scratch 1.4 (2009) was the last and most popular version of this line.
  • Scratch 2.0 (2013) moved the editor into the web browser, rebuilt on ActionScript / Adobe Flash. It introduced an online project editor, custom blocks, a backpack for carrying assets between projects, and cloud variables.
  • Scratch 3.0 (2019) is a complete rewrite in HTML5 and JavaScript, built on Google’s Blockly framework. It removed the dependency on Flash — which reached end of life on December 31, 2020 — runs on tablets and modern browsers, and added an extension system for hardware and external services. Scratch 3.0 remains the current generation and is updated continuously rather than through large numbered releases.

Governance evolved alongside the software. The Scratch Foundation (originally the Code to Learn Foundation) was established in 2013, and in 2019 the MIT Media Lab formally transferred ownership of Scratch and ScratchJr to this nonprofit, which now stewards the project and keeps it free for everyone.

Current Relevance

Scratch is, by a wide margin, the most popular tool for teaching programming to children. Its online community has grown to reportedly more than 100 million registered users, and by April 2024 they had collectively shared more than one billion projects. It is embedded in school curricula worldwide, used in coding clubs, and frequently the first language encountered in university introductory courses — Harvard’s CS50, for instance, uses Scratch in its opening week before transitioning students to C and Python.

The ideas Scratch popularized have spread far beyond the project itself. Google’s Blockly library — which Scratch 3.0 is built on — powers countless other block-based editors, and the visual-blocks approach has become the default way to introduce coding, from Code.org’s Hour of Code to microcontroller tools like the BBC micro:bit’s MakeCode. Direct descendants and relatives include ScratchJr (for ages 5–7), Berkeley’s Snap! (which extends the model with first-class functions and lists), and the mobile-focused Catrobat.

Why It Matters

Scratch reframed what a “first programming language” could be. By replacing text with blocks, pairing the language with a creative, social community, and grounding the whole design in a clear theory of creative learning, it lowered the barrier to coding for an entire generation. Millions of people wrote their first program in Scratch, and its block-based paradigm has become the near-universal on-ramp to computer science education. Whether or not its users go on to text-based languages, Scratch demonstrated that programming could be playful, expressive, and genuinely for everyone — reshaping how the world introduces people to code.

Timeline

2003
Mitchel Resnick (MIT Media Lab) and Yasmin Kafai (then at UCLA) receive a U.S. National Science Foundation grant to develop a programming environment that lets children express themselves through code; an early prototype is demonstrated around this time
2007
Scratch 1.0 is released publicly on May 15 by the Lifelong Kindergarten group at the MIT Media Lab, together with the scratch.mit.edu website and online sharing community; the 1.x versions are built on Squeak (a Smalltalk-80 implementation)
2009
Scratch 1.4 is released (July 2), the final and most widely used version of the Squeak-based 1.x line, including an offline editor
2013
Scratch 2.0 is released (May 9), rebuilt in ActionScript to run in Adobe Flash; it moves the editor into the web browser and adds custom blocks (My Blocks) and a backpack for reusing assets. The Scratch Foundation (originally the Code to Learn Foundation) is founded the same year
2014
ScratchJr, a tablet-based introductory version for ages 5–7 developed with Tufts University and the Playful Invention Company, is released for iPad (Android follows in 2016)
2019
Scratch 3.0 is released (January 2), a complete rewrite in HTML5 and JavaScript using Google's Blockly framework; it drops the Flash dependency, runs on tablets, and adds extensions such as micro:bit, LEGO robotics, and text-to-speech. MIT Media Lab transfers ownership of Scratch and ScratchJr to the nonprofit Scratch Foundation
2024
The Scratch online community surpasses 1 billion projects shared across its lifetime (reportedly reached on April 12), reflecting a registered user base that the Scratch Foundation reports as exceeding 100 million worldwide

Notable Uses & Legacy

K-12 computer science education

Scratch is one of the most widely used tools for introducing programming in primary and secondary schools, appearing in curricula and coding clubs across the world as a first language for children

Code.org and Hour of Code

Block-based tutorials inspired by and built with Scratch-style editors (and Google's Blockly, which underpins Scratch 3.0) power large-scale introductory coding events reaching millions of students

Harvard CS50

Harvard University's popular introductory computer science course, CS50, has long used Scratch in its first week to teach core programming concepts before moving students to text-based languages such as C and Python

ScratchJr early-childhood learning

A simplified offshoot for ages 5–7, ScratchJr lets pre-readers snap together graphical blocks to animate characters, widely used in early-childhood classrooms

Physical computing and robotics

Scratch 3.0 extensions and derivatives such as mBlock connect block code to hardware like the BBC micro:bit, LEGO Education kits, and Makeblock robots, bridging on-screen coding with the physical world

Creative projects and game design

The Scratch online community hosts millions of shared, remixable animations, interactive stories, art, and games, making the platform as much a creative-media tool as a coding environment

Language Influence

Influenced By

Logo Smalltalk Squeak HyperCard StarLogo Etoys AgentSheets

Influenced

ScratchJr Snap! Catrobat mBlock Blockly

Running Today

Run examples using the official Docker image:

docker pull
Last updated: