- This article or section documents the current version of Scratch (version 3.0). For this article in Scratch 2.0, see Making Scratch Crash (2.0). For this article in Scratch 1.4, see Making Scratch Crash (1.4).
![]() | The Terms of Use does not allow sharing projects like these, as they can interfere with another user's ability to use the service by crashing unsuspecting users' browsers or computers. Doing so can lead to an alert or a ban. |
![]() | These scripts shown may freeze or crash your Internet browser, Scratch, or computer. Make sure you save your changes before attempting. |

The crash screen in Scratch 3.0
There are several methods to make Scratch crash.
One way of making Scratch crash is making a variable or list that will double itself, forcing the Scratch project to lag and then freeze or crash. These methods of making Scratch crash are almost guaranteed.
![]() | In Scratch 3.0, these scripts will make the project crash, but you will not be able to see the variables and lists duplicate. |
Script methods
Variable Method
when flag clicked set [variable v] to (. . .::grey)::variables // Set this to anything that is not empty forever set [variable v] to (join (variable) (variable)) end
List Method
when flag clicked add (. . .::grey) to [list v]::lists // Set this to anything that is not empty forever add (list) to [list v] end
Clone Method
when gf clicked create clone of (myself v) when I start as a clone create clone of (myself v) delete this clone
Other
Uploading an image to the Paint Editor that has a large resolution will crash the Paint Editor window, but other parts of the editor can still be used.
Snap!
![]() |
This article or section uses images made with Snap!, a Scratch Modification which allows script formatting. Differences include block multilining and zebra coloring. |
In the Scratch Modification BYOB / Snap!, a simple recursive block can be used to freeze the program:
{Freeze Snap!::grey stack}::events hat warp { Freeze Snap!::grey }::grey stack
Alternatively, this script does not need a defined block:
run ({run (src) with inputs (src) @delInput @addInput::control} input names: ((src)::grey) @delInput @addInput::ring grey) with inputs ({run (self) with inputs (self) @delInput @addInput::control} input names: ((self)::grey) @delInput @addInput::ring grey) @delInput @addInput::control