Revision as of 15:01, 4 August 2023 by Gdxfor (talk | contribs) (Removed custom block method as it doesn't actually crash the project)

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


Note Warning: 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.
Note Warning: 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. 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!

BYOB3.png 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
Cookies help us deliver our services. By using our services, you agree to our use of cookies.