Scratch Everywhere runs Scratch 3 projects on consoles from the Wii U up
Custom Scratch Runtime made in C++!
At a glance
- What is it?
- Scratch Everywhere is a C++ rewrite of the Scratch runtime that aims to bring most Scratch 3 projects to sixth to eighth generation consoles and handhelds, with dual-screen support on 3DS and DS, console-native usernames, clone limit removal, custom framerates and the ability to load one project from another. It is LGPL-3.0 licensed and still explicitly a work in progress.
- Who is it for?
- Scratch Everywhere suits a Scratch creator who wants to publish their project as a console or handheld game rather than as a browser project, since the runtime handles the platform input, the dual-screen layout and the console account name that Scratch never had to deal with.
- Can I use it commercially?
- Yes, with conditions. LGPL-3.0 is a weak copyleft licence: you can use it inside commercial and closed-source software, but if you distribute changes to its own files, you must publish those changes under the same licence.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly C++, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What it is
Scratch Everywhere is described as a work-in-progress runtime made in C++ aimed to bring most Scratch 3 projects over to sixth to eighth generation consoles, handheld platforms, and more.
The demo animation in the README shows the runtime running a Scratch project on the Wii U, the Wii and the 3DS, and the game shown is a Scratch project by pepper-prepper. That image is the clearest statement of the project's purpose: the same Scratch project, running as a native game on three very different pieces of hardware from the same era.
The version target is Scratch 3, not Scratch 2 and not the newer web-based editor. That matters because Scratch 3's block set and its runtime semantics are what this project reimplements, and a project authored in a newer editor may not behave the same way.
The warning at the top of the README sets expectations. Scratch Everywhere is a work-in-progress, not all projects will run correctly, and some features from vanilla Scratch are not supported or are only supported on certain platforms. The README points to a limitations page on the website for more information, and that page is the document to read before committing to a project.
The scope is deliberately bounded in one important respect. Scratch Everywhere does not come with any Scratch projects. You will need to manually download them from the Scratch website and place them onto your console. ScratchBox is named as a source that has many projects that work well with Scratch Everywhere.
The primary language is C++, the licence is LGPL-3.0, the homepage is scratcheverywhere.github.io, and the last push was on 2026-10-20, a day after the 1.2.1 release.
Console features that Scratch never had
The feature list divides into two groups, and the first group is the reason to write a new runtime rather than to port the old one.
Scratch Everywhere supports various console-specific features such as dual-screen support on 3DS and DS, as well as fetching usernames from the console itself.
Dual-screen support is the substantial one. On the 3DS and DS the top screen and the bottom screen are separate displays with different physical sizes and a hinge between them, so a Scratch stage has to be composed rather than simply scaled. A Scratch project that puts a background on one screen and a sprite on the other is doing something the browser runtime has no concept of, and the same applies to the Wii U GamePad and the Vita in their own ways.
Fetching usernames from the console is the other one. The equivalent of the Scratch account name comes from the system's own account system, so a project can greet the player by name without any Scratch account at all, which is what makes it feel like a console game rather than a Scratch project in a wrapper.
The second group is enhancements borrowed from other modded Scratch editors. Removing clone limits and stage boundaries means a project is not constrained by the number of clones Scratch permits or by the edges of the stage, and running projects at custom framerates means a project can run at a rate the console display can actually sustain rather than the browser's default.
The third group is what the project calls unique functionality, and there are two items. Projects can load other projects, so one project can pull in another, and there are custom extensions that can expand the capabilities further.
The project loading feature is the one that changes what a project can be. In Scratch a project is a single file. Here a project can be a set of files that reference each other, which turns the format into something more like a package. The cost is that the result is no longer a file you can upload to scratch.mit.edu and share by link.
Controls, settings and the platform variation
The controls section is short, and the variation across platforms is the point.
On 3DS, PS Vita, Wii U GamePad and Handheld Switch, you use the touchscreen.
On the Wii Remote, you use the Wii sensor bar to control the mouse.
On other controllers, you enter Mouse Mode by holding L, use the D-pad to move the mouse and press R to click.
That last case is the one that shows the constraint of a console port. There is no pointer, so the runtime synthesises one from the D-pad and a face button, and a second button combination is needed to leave the mouse behind and return to normal input.
The settings section covers the behaviour of the runtime. These include changing the mapping of buttons to keys in the project or modifying the behavior of some blocks, and the website carries a list of all the settings and what they do. That is the mechanism by which a project authored on a keyboard can be adapted to a gamepad, and by which a block's behaviour can be adjusted per platform when the platform's constraints differ.
The dual-screen arrangement is not configurable in the same way, since it is a property of the hardware, and that is why some Scratch features are listed as only supported on certain platforms. A project that relies on a single large stage will not port to the 3DS without work, and the limitations page is where that is documented.
The documentation is structured as website pages rather than as files in the repository: an installation page, a features page, a settings page, a limitations page and a build page. The repository itself carries PORTING.md at the root, which suggests the porting documentation lives alongside the code rather than only on the site.
Building it, and bundling a project as a game
There are two primary methods of compiling Scratch Everywhere, using Docker and manual compilation, and both are described on the website at scratcheverywhere.github.io/build.
The repository layout explains why both exist. There is a CMakeLists.txt at the root along with a cmake/ directory and a recipe.cmake, which is the CMake recipe mechanism, a convention used by projects that need to be consumed as a dependency by other CMake builds. There is a docker/ directory and a .dockerignore, a source/ directory for the C++ code, an include/ directory for headers, and an external-include/ directory for third-party headers.
The C++ tooling is thorough for a project of this size. There is a .clang-format and a .clang-format-ignore, a .clang-tidy for static analysis, an .editorconfig, a .gitattributes, and the presence of both recipe.cmake and a CMakeLists.txt with a cmake/ directory suggests the project is also designed to be embedded in other build systems rather than only built standalone.
The webos_manifest.json at the root points at one of the target platforms. A webOS manifest is what a webOS device, such as a television, reads to install an application, so this file is the packaging metadata for that platform specifically.
The last build feature is the one with the most consequence. In addition, you can bundle a project with Scratch Everywhere and create a standalone application or game with the runtime. That is the whole point of the project: not a way to open Scratch projects on a console, but a way to ship a Scratch project as a console game with its own icon and its own install process.
The workflow that follows from that is worth spelling out, because it is the practical answer to how you get something onto a console. You author in Scratch, you export the project, you compile the runtime for the target, you bundle the project with it, and you deploy. Each of those steps has to work for the console you are targeting, and the demo image shows three consoles handled by the same runtime.
Where Scratch Everywhere fits, and where it stops
The comparison worth making is with the community Scratch runtimes that existed for Wii U and 3DS, and with running Scratch in a browser on a console.
Against the older console Scratch ports, the difference is that those were built on the original Scratch runtime, which is JavaScript, and they ran in an environment that emulated a browser. This is a C++ rewrite with the console as the target rather than an adaptation, and the whole feature list follows from that: dual-screen support and console usernames are things you can build properly when you own the runtime rather than working around someone else's.
Against a browser on the console, the difference is fidelity and presence. A Scratch project in a browser on a TV is a web page, with the controller input mapped by the browser and the account system belonging to the website. A project bundled as a standalone application is a game, with the platform's own accounts, its own icon and its own save data.
The limits are the ones the README states and they are not small. This is a work in progress, and not all projects run correctly. Some vanilla Scratch features are not supported or are only supported on certain platforms, which means a project can work on the Wii and not on the 3DS. The clone limit removal and the stage boundary removal are deviations from Scratch's semantics, so a project that relies on the standard limits will behave differently than in the editor.
There is a licensing dimension too, and it cuts in two directions. The runtime is LGPL-3.0, which is a permissive-ish copyleft licence for software, but the Scratch projects themselves are not part of this repository and carry their own terms. Since you have to download the projects from the Scratch website and place them onto your console yourself, you are the one distributing them, and that is a question separate from the runtime's licence.
The disclaimer is also worth noting for anyone planning to publish. This project is not affiliated with Scratch, the Scratch Team, or any of the supported platforms' parent companies or organizations. That is a necessary statement given the project ships a runtime for other people's platforms and lets you publish games built with another company's editor.
On maintenance, the release history shows 1.1 on 2026-09-07, 1.2 on 2026-10-07 and 1.2.1 the same day, with the last push on 2026-10-20, so this is an actively worked project at the 1.x stage rather than a proof of concept. The Discord server is linked from the README badges for questions, and there is a contributing guide at the root.
Editorial conclusion
Scratch Everywhere suits a Scratch creator who wants to publish their project as a console or handheld game rather than as a browser project, since the runtime handles the platform input, the dual-screen layout and the console account name that Scratch never had to deal with. It is the wrong tool if you need every Scratch project to run, because the README states plainly that not all projects run correctly and that some vanilla Scratch features are unsupported or platform-specific, and it is the wrong tool if you cannot supply the project files yourself, because the runtime ships without any Scratch projects. Before you start, read the limitations page, and remember the licensing position: the runtime is LGPL-3.0 but the Scratch projects you distribute with it carry their own terms.
Frequently asked questions
What is Scratch Everywhere?
It is a work-in-progress Scratch runtime written in C++, aimed at bringing most Scratch 3 projects to sixth to eighth generation consoles and handheld platforms. The README shows the runtime running a Scratch project on the Wii U, the Wii and the 3DS.
Which console-specific features does Scratch Everywhere support?
Dual-screen support on the 3DS and DS, and fetching usernames from the console itself. It also supports enhancements from other modded Scratch editors, such as removing clone limits and stage boundaries and running projects at custom framerates, plus its own ability to let a project load other projects and to be extended with custom extensions.
How do I control the pointer on a console with Scratch Everywhere?
On 3DS, PS Vita, Wii U GamePad and Handheld Switch you use the touchscreen, and on the Wii Remote you use the Wii sensor bar to control the mouse. On other controllers you enter Mouse Mode by holding L, use the D-pad to move the mouse and press R to click.
Does Scratch Everywhere come with Scratch projects?
No. The README states that Scratch Everywhere does not come with any Scratch projects, and that you need to manually download them from the Scratch website and place them onto your console. ScratchBox is suggested as a source that has many projects that work well with it.
How do you build Scratch Everywhere?
There are two primary methods, using Docker and manual compilation, and both are described on the website at scratcheverywhere.github.io/build. The repository is a CMake project with a CMakeLists.txt, a cmake/ directory, a recipe.cmake, a source/ and include/ tree and a docker/ directory, and it also ships a webos_manifest.json for webOS packaging.
Can I ship a Scratch project as a standalone console game?
Yes. The README states that in addition to compiling the runtime you can bundle a project with Scratch Everywhere and create a standalone application or game with the runtime. The licence is LGPL-3.0 for the runtime, and the project files themselves are downloaded separately from the Scratch website and carry their own terms.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/scratcheverywhere-scratcheverywhere)Was this useful?