The general shape of a C block.

A C block is a block that is shaped like a "C", so other blocks can fit inside it. These blocks perform the conditions and loops.


C blocks have a "mouth" (it looks like the letter "C", hence the name) — the blocks that will be placed inside the C block go in these mouths. All but one of the C blocks consist of one mouth — the other, if <> then, else, consists of two mouths. (For this reason, this block is occasionally referred to as an "E block".[1][2]) When any of the other C blocks are dragged over a stack of blocks — if the C is empty — its mouth extends to wrap around them.

repeat (10)
repeat until <(loudness) > [30]>
glide (1) secs to x: (10) y: (0)
wait (1) secs
go to x: (0) y: (0)
play sound [meow v] until done

In Scratch 1.2 and earlier, C-block scripts could only be built one block at a time.

Most C blocks, like Stack Blocks, have a notch on the top of the block and a bump on the bottom, signifying that other blocks can be stacked above or below them. The forever is an exception in that it only has a notch, as other blocks are not meant to be placed below it in a script.


In Scratch 3.0, there are five C blocks, and they can all be found in the Control category.

Note Note: Click on a block for more information.

Forever If

forever if <> {
} :: control cap
The Forever If () block.

In Scratch 1.4 and earlier, there was also a forever if <>::control block. It was replaced with its workaround.

if <> then


As C blocks are for checks and loops, they are used in many places. Some uses include:

  • Things that must go on forever
when gf clicked
turn cw (15) degrees
  • Checking a condition
when [space v] key pressed
if <(loudness) > [30]> then
stop [all v]
  • Repeating an animation a certain amount of times
when gf clicked
repeat (200)
turn ccw (36) degrees
change [color v] effect by (1)

Here is an example for both checks and looping:

when I receive [Decrease health v]
change [Health v] by (-1)
if <(health) = [0]> then
repeat (8)
change [color v] effect by (25)
  • Starting/Stopping
when gf clicked
if<key [space v] pressed?> then
stop [all v]

There is a check (the If () Then block is checking if the variable Health has a value of 0), and inside the check is a repeat loop (with the Repeat () block). Note how C blocks can be placed inside other C blocks.


Cookies help us deliver our services. By using our services, you agree to our use of cookies.