For Everyone

Tips, Tricks & Blocks Guide

A complete reference for all Scratch block categories, plus essential tips, keyboard shortcuts, and the most common mistakes — useful for students, teachers, and parents alike.

🎓 Students 📚 Teachers 👨‍👩‍👧 Parents 💻 All levels
🧩 All Blocks 💡 Tips & Tricks ⌨️ Shortcuts 🐛 Common Mistakes

All Block Categories

Scratch has 9 block categories, each colour-coded. Click on any category in the Block Palette to see its blocks. Here is what each category does and the most important blocks inside it.

🏃
Motion
Move and position sprites

Motion blocks control where a sprite is and how it moves. Everything about position and direction lives here.

move 10 steps turn ↻ 15° go to x:0 y:0 glide 1 secs to x:0 y:0 point in direction 90 point towards mouse change x by 10 change y by 10 if on edge, bounce x position y position
👁️
Looks
Change appearance and speech

Looks blocks change what a sprite looks like — its costume, size, colour effects, and whether it shows on screen.

say Hello! for 2 secs think Hmm... for 2 secs switch costume to next costume switch backdrop to set size to 100% change size by 10 set color effect to 0 clear graphic effects show hide go to front layer
🔊
Sound
Play music and sound effects

Sound blocks play audio clips, control volume, and add pitch effects. Each sprite has its own library of sounds.

play sound Pop until done start sound Pop stop all sounds change volume by -10 set volume to 100% change pitch effect by 10 clear sound effects
Events
Trigger code when something happens

Events blocks are hats — they always sit at the top of a script and start running code when their trigger fires.

when 🚩 clicked when [space] key pressed when this sprite clicked when backdrop switches to when [loudness] > 10 broadcast [message] broadcast and wait when I receive [message]
🔄
Control
Loops, decisions, and timing

Control blocks are the backbone of all programs — loops, if/else decisions, timing, cloning, and stopping scripts.

wait 1 seconds repeat 10 forever if <> then if <> then / else wait until <> repeat until <> stop [all] stop [this script] when I start as a clone create clone of [myself] delete this clone
👀
Sensing
Detect the world around a sprite

Sensing blocks detect collisions, colours, mouse position, keyboard input, microphone volume, and the timer.

touching [Sprite]? touching color [■]? color [■] touching [■]? distance to [mouse] ask [What's your name?] and wait answer key [space] pressed? mouse down? mouse x mouse y loudness timer reset timer current [year]
🔢
Operators
Maths, text, and logic

Operators are round reporter blocks that calculate values. Use them inside other blocks wherever a value is needed.

( ) + ( ) ( ) - ( ) ( ) * ( ) ( ) / ( ) pick random 1 to 10 ( ) < ( ) ( ) = ( ) ( ) > ( ) <> and <> <> or <> not <> join [hello] [world] letter 1 of [apple] length of [hello] [hello] contains [h]? ( ) mod ( ) round ( ) sqrt of ( )
📦
Variables
Store and track changing values

Variables are named containers. Create one with "Make a Variable". Use them to store score, lives, speed, level — anything that can change.

set [score] to 0 change [score] by 1 show variable [score] hide variable [score] [score]
Tip — scope

Choose "All sprites" for shared data (score, lives). Choose "This sprite only" for data private to one sprite (its own speed).

📋
Lists
Store many values in one place

A list holds multiple items — like a shopping list. Create one with "Make a List". Great for high scores, question banks, or enemy names.

add [thing] to [list] delete 1 of [list] delete all of [list] insert [x] at 1 of [list] replace item 1 of [list] with [x] item 1 of [list] length of [list] [list] contains [x]? show list [list] hide list [list]
⚙️
My Blocks
Create reusable custom blocks

My Blocks lets you create your own custom blocks — mini programs inside your program. Useful for code you repeat in many places.

define [my block] my block
⚠️ Note

Tick "Run without screen refresh" when you want your custom block to run instantly without animating each step.

Tips & Tricks

Habits and techniques that make building in Scratch faster, less buggy, and more fun.

🚩
Always initialise under the green flag
Set every variable to its starting value when the green flag is clicked. If you skip this, the second game starts with leftover values from the first run.
🎯
Select the right sprite first
Any block you drag goes to whichever sprite is highlighted in the Sprite Pane. Always check the blue border before adding code.
🔁
Right-click to duplicate blocks
Right-click any block (or a whole stack) and choose Duplicate to copy it instantly. Much faster than rebuilding the same pattern.
🎒
Use the Backpack
Drag scripts, costumes, or sprites into the Backpack at the bottom of the screen to carry them into another project. Great for reusing your keyboard controller.
🧪
Test after every few blocks
Click the green flag often. It is much easier to find a bug when you added two blocks than when you added twenty.
💬
Use "say" blocks to debug
Temporarily add a say (score) block to check if a variable has the value you expect. Remove it when the bug is fixed.
📢
Broadcasts connect sprites
Instead of cramming all your code into one sprite, use broadcasts to send messages between sprites. It keeps your scripts short and readable.
🏷️
Name sprites and variables clearly
Rename "Sprite1" to "Player" and "Sprite2" to "Enemy". Name variables score and lives, not s and x. Future-you will thank you.
🖱️
Double-click a block to test it
You can double-click any block in the Scripts Area to run it immediately — you don't always need the green flag. Great for checking individual actions.
🗂️
Right-click for "Add comment"
Right-click any block and choose Add comment to leave a yellow note explaining what a section does. Very helpful when revisiting old projects.
📐
Remember the coordinate system
The stage centre is (0, 0). Right is positive X, left is negative X. Up is positive Y, down is negative Y. The stage is 480 wide and 360 tall.
🌈
Let colours guide you
Blue = Motion. Purple = Looks. Orange = Events/Control. Light blue = Sensing. Green = Operators. Orange-red = Variables/Lists. Memorise the rainbow and finding blocks becomes instant.
♾️
Choose the right loop
Use forever for continuous monitoring. Use repeat N for a fixed number of times. Use repeat until when you have a clear stopping condition.
👥
Clones for multiple objects
Instead of adding 20 enemy sprites manually, hide the original and create clones with create clone of myself. Each clone runs its own when I start as a clone script.
💾
Save with Ctrl + S
Scratch auto-saves to the cloud, but it's good practice to save manually after making big changes — especially before testing risky code.
🎨
Paint your own sprites
Click the paintbrush icon in the Sprite Pane to open the built-in vector editor. Drawing your own sprites makes your project completely unique.

Keyboard Shortcuts

Learn these shortcuts and you will work twice as fast in Scratch.

Undo last action
Ctrl+Z
Redo
Ctrl+Y
Save project
Ctrl+S
Copy selected block
Ctrl+C
Paste copied block
Ctrl+V
Delete selected block / sprite
Delete
Start project (green flag)
Enter
Stop project
Esc
Toggle fullscreen
Ctrl+Shift+F
Zoom in (Scripts Area)
Ctrl+=
Zoom out (Scripts Area)
Ctrl+-
Reset zoom to 100%
Ctrl+0
⚠️ Mac users

On a Mac, replace Ctrl with the ⌘ Command key for all shortcuts above.

Common Mistakes & How to Fix Them

Every Scratch programmer hits these at some point. Knowing them in advance saves a lot of frustration.

🚩
Forgetting to click the green flag
Code in Scratch does nothing until a trigger fires it. If your project seems broken, the most likely reason is you haven't clicked the green flag yet.
Fix: Always click the green flag after adding new blocks. Some blocks also need a specific trigger — check that you have a when 🚩 clicked hat at the top of each important script.
📦
Variables not reset — leftover values from last run
If your score shows 50 at the start of a new game, it's because you never set it back to 0. Variables keep their value until you change them.
Fix: Put set [score] to 0 and set [lives] to 3 under when green flag clicked, before any game logic starts.
🎯
Code added to the wrong sprite
You meant to control the player but you accidentally added blocks to the enemy sprite. Everything looks fine in the Scripts Area but nothing works as expected.
Fix: Click on the sprite you want in the Sprite Pane and look for the blue highlight border. Check the sprite's name in the info box. When in doubt, click each sprite and check its scripts tab.
♾️
Infinite loop freezing the project
A forever loop without a wait block or an exit condition can lock up Scratch. The project appears to hang or the frame rate drops to zero.
Fix: Add a wait 0 seconds inside any forever loop that does lots of work. Or use repeat until with a proper stopping condition instead of forever.
🔵
Mixing up "change x by" and "set x to"
change x by 10 moves the sprite 10 pixels from wherever it currently is. set x to 10 teleports it to x=10, no matter where it started. Mixing these causes sprites to fly off-screen.
Fix: Use change for smooth movement in a loop. Use set to snap a sprite to a specific position (e.g., resetting to the start).
🎨
Colour detection not working
The touching color block is very precise — it samples the exact pixel colour. If you picked the colour when it was slightly in shadow or at a different zoom level, it may not match.
Fix: Click the colour swatch in the block, then use the dropper tool to sample the colour directly from the stage at full size. Make sure the colour on your backdrop or sprite is a solid, flat fill.
☁️
Cloud variables storing text
Cloud variables (marked with ☁) can only store numbers. If you try to store a name or word, Scratch will silently store 0 instead.
Fix: Use cloud variables only for numeric data like high scores. Never store names, ages, or any text. Also note: cloud variables require you to be signed in to Scratch.
👥
Clone not disappearing — memory leak
If you create clone of myself inside a forever loop without deleting old clones, you will quickly have hundreds of clones on screen and the project will slow to a crawl.
Fix: Make sure every clone path ends with delete this clone. Add a wait inside the spawner loop to control how fast clones are created (e.g., wait 1 seconds).
📡
Broadcast sent but nobody receives it
You broadcast a message but nothing happens. Either no sprite has a when I receive block with the matching message name, or the message names don't match exactly (including capitalisation).
Fix: Check every sprite's scripts for when I receive blocks. Make sure the message name is spelled identically in both the broadcast and receive blocks — Scratch is case-sensitive here.
← Back to Teachers' Guide