A work-in-progress runtime made in C++ aimed to bring most Scratch 3 projects over to 6-8th-generation console and handheld platforms (and more)!
(Game shown is Hopper Heros by pepper-prepper)
3DS: Glide your finger/stylus on the bottom screen to move the mouse, and tap the bottom screen to click.
Wii U GamePad: Use the touchscreen on the GamePad.
Wii Remote: Use the Wii sensor bar to control the mouse.
PS Vita: Use the front touchscreen.
Other Controllers: Enter Mouse Mode by holding L. Use the D-pad to move the mouse, and press R to click.
- Any scratch project with an unmodified resolution setting will be displayed on the top screen only.
- If using a modded Scratch client like TurboWarp, you can go into the projects' Advanced Settings and change the resolution.
- Setting it to
400x480will enable both the top and bottom screen. - Setting it to
320x240will enable only the bottom screen. - Setting it to
400x240will make the project perfectly fit to the top screen. - NOTE: make sure to click
Store Settings In Projecton TurboWarp to properly apply the settings.
- Setting it to
- Currently, projects display exactly the same on both the TV and the GamePad, and there's no way to change screen modes.
- A sound may take time to load if playing it for the first time.
- [Non-3DS Platforms] If you play any sound from the
Stage, the sound will play as aStreamed Soundand will not need to load.- Only one
Streamed Soundcan be playing at a time, so this is good for things like background music.
- Only one
- [Wii, GameCube] Sounds may fail to load if the length of the sound is too long, or if there's too many sounds loaded at once.
- Audio on the NDS is currently experimental, and is not recommended to use at this time;
- Only .wav is supported.
- All audio must be in Signed 16-bit PCM wav format, with a recommended sample rate of 11025 Hz or below.
- Only one sound can be playing at a time.
- When using a modded Scratch client like TurboWarp, you can enable the
60 FPS (Custom FPS)advanced option, and change the FPS to any value.
- The
Usernameblock returns the 3DS's nickname, and the Wii U's current Mii name. - The
Touching __?block uses simpler box collision, which may lead to projects working incorrectly. - The
Stop 'All'block brings you back to the project menu.
Like TurboWarp, we have special custom blocks that only work on SE!. You can find a project containing and explaining them here: https://scratchbox.grady.link/project/K26OtTN2WDJ9
Project Linking Blocks
open (____) .sb3open (____) .sb3 with data (____)received data(variable)
These blocks make it possible to split a big game into smaller parts (e.g. a main game, a shop, or a cutscene project) and load them as needed. All paths are relative to the scratch-everywhere folder, so subfolders must be specified (e.g. MyGame/main.sb3).
This helps avoid memory issues, keep projects modular, and makes it easier to manage large
games.
You can find the blocks in this project: https://scratchbox.grady.link/project/twStEkSKjQaH
Note
In the future, this feature may be replaced by a dedicated extension once extension support is available.
As this is in a very work in progress state, you will encounter many bugs, crashes, and things that will just not work.
List of Known Limitations:
- Text and embedded bitmap images will not show up on vector images containing it.
- Most Extensions (e.g. music extension) are not yet supported.
- Only the
Pen,Text to Speech(Wii U and 3DS only), andMakey Makeyextensions are currently supported.
- Only the
- Some blocks may lead to crashing/unintended behavior (Please open an issue if you know of a block that's causing problems).
- Performance is poor when using many (~50+) clones (memory management issue).
- [Wii, Switch, PSP, Vita, PS4] Cloud Variables aren't currently supported, but likely will be in the future.
- [Wii, Wii U, GameCube, Switch] The first controller connected will be the only one that will work.
- [Wii] If you're using a PAL Wii, you must use 50Hz.
- [GameCube] Cloud Variables will not be supported.
- [GameCube, NDS] These platforms have very little memory, so try to keep projects small.
- [NDS] Dual screen mode will not be supported.
- [3DS] Performace is poor when lots of blocks are running at once.
- [3DS] If you have a bunch of large images, some may not load.
- [PSP] Images cannot be over 512x512.
- [Vita] Back touch will not be supported.
- [PS4] The software keyboard isn't currently supported.
- All say and think blocks (#393)
- Most costume effects;
- Only the
GhostandBrightnesscostume effects are supported
- Only the
PitchandPan left-rightsound effects- When loudness > ___
- All color touching blocks
- Loudness
- Bug fixing and Scratch parity
- Get all blocks working
- Support most TurboWarp extensions (#210)
- Dual screen support
- Improved controller support (multiple controllers)
- Improved controller support (multiple controllers)
Cloud Variable support(not possible due to licensing issues)
- Cloud variable support
- Make vector images not/less pixelated
- Download projects from the Scratch website (previously #331)
- Translations (see #333)
- Improved Collision (previously #375/#57)
Browser extension to send projects directly to a testing device from the editor(not really possible to my understanding)
Note
For info about planned/unplanned platform support, please check issue #166. Do not make an issue if your platform is already there.
Scratch Everywhere! on consoles is Homebrew software, and requires your console to be modded. There are two methods to install the runtime:
- Download the release or nightly build (easy), or
- Build the file yourself (harder)
Note
Nightly builds are significantly more unstable than releases and should probably only be used if you are instructed to do so in a bug report or if you know exactly what using nightlies implies.
Download the .cia file or .3dsx in the Releases tab or nightly build.
Note
Scratch Everywhere! for 3DS is also on Universal Updater, so you can just download it there and keep it updated that way!
Place the .cia file in the cias/ folder of your 3DS SD card. Open the FBI application and navigate to the cias/ folder and install the .cia file.
Put your Scratch projects in 3ds/scratch-everywhere and open the Scratch Everywhere application on your Home screen.
Place the .3dsx file in the 3ds/ folder of your 3DS SD card, put Scratch projects in 3ds/scratch-everywhere.
Then it should be as simple as opening the Homebrew Launcher on your 3DS and running the app!
Download the .nds file in the Releases tab or nightly build.
Place the .nds file in your SD card, and put Scratch projects in sd:/scratch-ds/.
Then it should be as simple as running the app!
Download the scratch-wiiu.zip file in the Releases tab or nightly build.
Note
Scratch Everywhere! for Wii U is also on the Homebrew App Store, so you can just download it there and keep it updated that way!
Unzip the file in your sdcard:/wiiu/apps/ folder.
Place the scratch projects you want in sdcard:/wiiu/scratch-wiiu/.
Then it should be as simple as opening the app on the Wii U Menu or in the Homebrew Launcher on your Wii U!
Download the scratch-wii.zip file in the Releases tab or nightly build.
Note
Scratch Everywhere! for Wii is also on the Open Shop Channel, so you can just download it there and keep it updated that way!
Unzip the file and put the apps folder inside of the root of your SD card.
Place the Scratch projects you want in sdcard:/apps/scratch-wii/.
Then it should be as simple as opening the app in the Homebrew Menu on your Wii!
Download the scratch-gamecube.dol file in the Releases tab or nightly build.
Put your Scratch projects in the scratch-gamecube folder in your storage device.
Then it should be as simple as opening the app on your GameCube!
Download the scratch-nx.nro file in the Releases tab or nightly build.
Note
Scratch Everywhere! for Nintendo Switch is also on the Homebrew App Store, so you can just download it there and keep it updated that way!
Place the Scratch projects you want in sdcard:/switch/scratch-nx/.
Then it should be as simple as opening the app on your Nintendo Switch!
Note
Scratch Everywhere! for PS Vita is also on VitaDB, so you can just download it directly from your Vita using VitaDB Downloader! Do note however, the build on VitaDB might be a few versions behind.
Download the scratch-vita.vpk file from the releases tab or nightly build, transfer it over to the Vita's storage, and install it using VitaShell on your Vita.
Put your Scratch Projects in ux0:data/scratch-vita/ (you will need to create the folder yourself).
Then it should be as simple as opening and starting the app from your Vita's LiveArea homescreen!
Download the scratch-psp.zip file from the releases tab or nightly build, and put it in your PSP's memory card in PSP/GAME.
Put your Scratch Projects in PSP/GAME/scratch-psp/scratch-everywhere/ (you will need to create the folder yourself).
Then it should be as simple as opening the app on your PSP!
Note
Scratch Everywhere! for PS4 is also on PKG-Zone, so you can just download it there or directly from the PS4 HB-Store and keep it updated that way!
Download the scratch-ps4.pkg file from the releases tab or nightly build, then install it using your preferred HEN, like GoldHEN, Mira, etc.
Place your Scratch projects in /data/scratch-ps4, if the folder doesn't exist, create it.
Then it should be as simple as opening the app on your PS4 from the XMB!
Get your TV into dev mode or root it and download the scratch-webos.ipk file from the releases tab or nightly build, then install it using webosbrew's webOS Dev Manager (Apps > Install).
Upload your Scratch projects with Dev Manager to your TV in apps/usr/palm/applications/io.github.scratcheverywhere/projects/, if the folder doesn't exist, create it.
Then it should be as simple as opening the app on your TV from the home menu!
In order to embed a Scratch project in the executable, you'll need to compile the source code.
If you would like to change the name of the app or any other information you can edit one of the Makefiles.
- For the 3DS, you need to edit
Makefile_3dsand changeAPP_TITLE,APP_DESCRIPTIONandAPP_AUTHORto whatever you please. - For the Wii U, you need to edit
Makefile_wiiuand changeAPP_NAME,APP_SHORT_DESCRIPTION,APP_LONG_DESCRIPTIONandAPP_AUTHORto whatever you please. - For the Wii, you need to edit
Makefile_wiiand change anything underApplication Infoto whatever you please. - For the Vita, you need to edit the properties under
# METADATA/CONFIGto whatever you please. Do note however, if you're going to use custom LiveArea images, you must run them throughpngquant(install with your package manager) with--posterizeset to 4 first before packaging. - For the PS4, you need to edit
Makefile_ps4and change anything underPackage metadatato whatever you please.
The recommended way to compile Scratch Everywhere! is with Docker.
We have written a step-by-step guide with pictures (for Windows) that explains the build process very simply, you can find it here: https://ScratchEverywhere.github.io/docker To compile with Docker all you need installed is Docker and Buildx.
-
To compile for the 3DS, run
docker build -f docker/Dockerfile.3ds --target exporter -o . .. -
To compile for the NDS, run
docker build -f docker/Dockerfile.nds --target exporter -o . .. -
To compile for the Wii U, run
docker build -f docker/Dockerfile.wiiu --target exporter -o . .. -
To compile for the Wii, run
docker build -f docker/Dockerfile.wii --target exporter -o . .. -
To compile for the GameCube, run
docker build -f docker/Dockerfile.gamecube --target exporter -o . .. -
To compile for the Nintendo Switch run
docker build -f docker/Dockerfile.switch --target exporter -o . .. -
To compile for the Vita, run
docker build -f docker/Dockerfile.vita --target exporter -o . .. -
To compile for the PSP, run
docker build -f docker/Dockerfile.psp --target exporter -o . .. -
To compile for the PS4, run
docker build -f docker/Dockerfile.ps4 --target exporter -o . ..
Warning
We are currently migrating our build system from standalone Makefiles to a centralized CMakeLists.txt so documentation in this section might be outdated.
Note
We recommend using Docker for PS4 because of how absolutely messy the environment is.
If you are compiling with cloud variables, you will need to have DevkitPro's SDKs, Mist++, and a modified version of libcurl (instructions in mistpp-packages repo) installed.
- For the 3DS, you will need the DevkitARM toolchain and libctru.
- If you want to compile with audio support, you will also need a 3DS compiled version of SDL3 and SDL3_mixer. See the Nightly Build commands for a reference on how to compile SDL3 3DS for yourself.
- For the DS/DSi, you will need the BlocksDS SDK, with GL2D and Maxmod libraries installed (usually comes installed with the SDK).
- For the Wii U, you will need the DevkitPPC toolchain, WUT, all SDL2-wiiu libraries, and libromfs-wiiu..
- For the Wii, you need the DevkitPPC toolchain, libogc, all SDL2-wii libraries, and libromfs-ogc..
- For the GameCube, you need the DevkitPPC toolchain, libogc, all SDL2-gamecube libraries, and libromfs-ogc..
- For the Switch, you need the DevkitA64 toolchain, libnx, and all SDL2-switch libraries.
- For the Vita, all you need is the vitasdk toolchain. It includes every SDL2 thing you might need.
- For the PSP, all you need is the PSPSDK toolchain. It includes every SDL2 thing you might need.
- For the PS4, you will need the OpenOrbis toolchain, PacBrew portlibs which include SDL2, and our fixed packages.
- For webOS, all you need is the webosbrew Native SDK installed to your home directory and ares-cli.
Note
DevkitPro's install instructions are available at: https://devkitpro.org/wiki/Getting_Started
Download the source code from the releases tab and unzip it.
Make a romfs folder inside the unzipped source code and put the Scratch project inside of that.
- The Scratch project MUST be named
project.sb3, all lowercase. - For faster load times/less limitations, you can also unzip the sb3 project file and put the contents into a new folder called
project.
Then you need to compile the projects into proper Homebrew packages.
- For the 3DS, you simply need to run
make. Then copy theScratch-3DS.3dsxfile like you normally would. - For the NDS, you need to run
make PLATFORM=nds, then copy thebuild/nds/scratch-ds.ndsfile to your flashcart/SD card. - For the Wii U, you need to run
make PLATFORM=wiiuand then copy thebuild/wiiu/scratch-wiiufolder into thesdcard:/wiiu/appsfolder on your sd card. - For the Wii, you need to run
make PLATFORM=wii package, then find the zipped file inbuild/wii/scratch-wii.zip. Unzip it and put theappsfolder inside the root of your Wii SD card. - For the GameCube, you need to run
make PLATFORM=gamecube, then find the.dolfile atbuild/gamecube/scratch-gamecube.dol. - For the Switch, you need to run
make PLATFORM=switch, then find the.nrofile atbuild/switch/scratch-nx.nro. - For the Vita, run
make PLATFORM=vita, then transfer the VPK atbuild/vita/scratch-vita.vpkover to your Vita. - For the PSP, run
psp-cmake -B build/psp -S . -DSE_SYSTEM=ON -DSE_CLOUDVARS=OFF && make -C build/psp, then unzip thescratch-psp.zipfile atbuild/pspand transfer thescratch-pspfolder over to your PSP. - For the PS4, you will need to run
make PLATFORM=ps4, then find the.pkgfile atbuild/ps4/scratch-ps4.pkg. - For webOS, you will need to run
cmake -B build/webos -S . -DCMAKE_TOOLCHAIN_FILE="~/arm-webos-linux-gnueabi_sdk-buildroot/share/buildroot/toolchainfile.cmake" -DSE_CLOUDVARS=OFF -DWEBOS=ON -DSE_RENDERER=sdl2 && make -C build/webos all package, then find the.ipkfile atbuild/webos/io.github.scratcheverywhere_0.0.1_arm.ipk.
Warning
We are currently migrating our build system from standalone Makefiles to a centralized CMakeLists.txt so documentation in this section might be outdated.
Compilation flags are used to select which features will be enabled in the compiled version of Scratch Everywhere!. To use a compilation flag simply add it to the end of the make command (e.g. make ENABLE_LOADSCREEN=0).
ENABLE_LOADSCREEN(default:1): If set to1, the loading screen is enabled, if set to0the screen is simply black during that time.ENABLE_AUDIO(default:1): If set to1, Audio will be enabled. If set to0, it will be disabled.ENABLE_CLOUDVARS(default:0): If set to1, cloud variable support is enabled, if set to0cloud variables are treated like normal variables. If your project doesn't use cloud variables, it is recommended to leave this turned off. If you run into errors while building try turning this off and see if that fixes the errors.ENABLE_MENU(default:1): If set to 1, the SE! main menu is enabled. It's good to disable this when packaging a project, as the file size is lowered.- [Old 3DS]
RAM_AMOUNT(default:72): the amount of RAM, in megabytes, the old 3DS should be using. Can be set to32,64,72,80, or96.
This project is not affiliated with Scratch, the Scratch Team, or any of the supported platforms' parent companies or organizations.

