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

There are several methods to make Scratch crash. This article is an overview on the different methods that can be used to achieve this.
Script methods
Crashing via an extremely long string
One way of making Scratch crash is making a variable or list that will double itself on every frame, causing the length of the list to grow exponentially. This will eventually lag Scratch very hard before freezing.
Variable Method
when flag clicked set [variable v] to [a] // "a" can be replaced with anything that is not empty forever set [variable v] to (join (variable) (variable)) end
List Method
when flag clicked add [a] to [list v] // "a" can be replaced with anything that is not empty forever add (list) to [list v] end
Crashing via recursion
Another way to crash Scratch is to make the project to loop infinitely. This will cause Scratch to not be able to finish the script, causing the project to freeze.
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[citation needed], 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 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