Build Your Own Blocks

Run Snap! now

What do you get if you combine

•drag-and-drop interface
•visual metaphors for loops,  
  conditionals, etc.
•easy animation tools
from Scratch
•first class procedures
•first class lists
•first class objects
•first class continuations 
from Scheme

You get a broadly inviting programming language for kids and adults that's also a platform for serious study of computer science.

Snap! (formerly BYOB) is a visual, drag-and-drop programming language. It is an extended reimplementation of Scratch (a project of the Lifelong Kindergarten Group at the MIT Media Lab) that allows you to Build Your Own Blocks. It also features first class lists, first class procedures, and continuations. These added capabilities make it suitable for a serious introduction to computer science for high school or college students.

In the example below, a Snap! user can create new control structures, such as a for loop (which isn't built into the language), by writing a script as shown at the left. Once the for block is created, it can be used even to make nested loops, as shown in the center. A sprite carries out that script at the right.


Snap! runs in your browser. It is implemented using Javascript, which is designed to limit the ability of browser-based software to affect your computer, so it's safe to run even other people's projects, even if you don't trust our competence or good intentions.

Snap! is presented by the University of California at Berkeley. It was developed by Jens Mönig at MioSoft Corporation (now at SAP), with design input and documentation by Brian Harvey at Berkeley, and contributions by students at Berkeley and elsewhere.

This material is based partly upon work supported by the National Science Foundation under Grant No. 1138596. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.

Snap! is the current version. Try out the language at (the button above).

Need help?Read the Reference Manual.
Manual updates:First class sprites
Linked lists
Still have a question?    Ask on our Scratch forum thread.
Found a bug?Report it at our Github repository.
Looking for BYOB3?    Download it here.

Turn your project into a standalone executable!       

First "Export project" and save the resulting XML file. Then go to

Import Scratch 2.0 projects     

Go to Snapin8r2

Use devices with Snap!:

More Snap! extensions for CS education

Browser Requirements

Additional Notes
Chrome43Chrome is currently the recommended browser for Snap!
IE11Internet Explorer does not comply with web standards. Some features (such as audio) may not work with any version.

For mobile browsers:

DeviceVersion Notes
iPhoneiOS 8 or higher. However on iOS, uploaded sound files can't be played in a script. (All iOS versions have this restriction.)
Android    Use Chrome for Android and not the stock browser that comes with some devices.


Converted from BYOB3 projects:    
Converted from Scratch projects:

Teachers, check out the Beauty and Joy of Computing, an AP CS Principles course using Snap!.

Privacy Notice

For research purposes, this site uses Google Analytics to collect aggregate information about, e.g., how often the site is used and what links are followed from it. We do not collect personally identifiable information, but if you have a Gmail account or have ever Googled yourself from your own computer, then, despite their assurances to the contrary, Google does collect such information. We recommend that you use AdBlock Plus, Ghostery, NoScript, and/or Privoxy to protect your browsing privacy. The first two are really easy to install and use; the last two take a bit more effort to whitelist sites you trust. (You might also consider the tracking-free DuckDuckGo search engine.)

See our complete privacy policy here.

Site layout by liam4.