mrkeyoor.com_
Fri 25 Sept 17:45 UTC
Dev Toolsevaluationupdated 25 Sept 2026

pyxel review

Pyxel is a retro game engine with a Python interface and a Rust core, built around fixed limits such as 16 colors and 4 sound channels. Its README and main user guide are available in English and Japanese, and the engine can run games on Windows, macOS, Linux, or the web.

Verdict

Our Pyxel install took 73 seconds and its 1-second build passed, but pytest stopped after 1 second because the compiled pyxel.pyxel_binding module was missing. The published package is still an appealing choice for learning or shipping small Python games because its 16-color limits, editors, examples, and export commands fit together. Source contributors should reproduce the native-binding test path before treating the checkout as healthy, and Windows Arm developers should investigate the open shutdown report first.

We ran it

Lab card: what happened when we ran pyxelScreenshot of pyxel (github.com/kitao/pyxel)
Install✓ · 73s47 packages · 173 MB
Build✓ · 1s
Tests✗ · 1sran, no count parsed
Known vulns0(pip-audit)
Repo460 files~39,134 lines of source · 26.3 MB · 2 CI workflows · tests dir

Answers from our run

Does pyxel build from source?

Dependencies installed in 73 seconds (47 packages), and the build succeeded in 1 seconds. We cloned commit 50f9bd7 into a clean Debian container with 3 CPUs and no project-specific setup.

Do pyxel's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Does pyxel have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use pyxel?

Teams that need unrestricted high-resolution art or a modern 3D pipeline: Pyxel starts with 16 colors, 256x256 image banks, and 256x256 tilemaps.

What are the alternatives to pyxel?

Pygame, Pyglet, TIC-80. Our Pyxel install took 73 seconds and its 1-second build passed, but pytest stopped after 1 second because the compiled `pyxel.

Setup3/5Pip is simple; our source tests could not import the native binding
Docs5/5English guide covers the API, editors, examples, and packaging
Community4/517,951 stars and 10 open issues and PRs with recent activity
Maturity4/5Version 2.9.9 spans desktop and web, with a failed source test run

Who it’s for

Python developers who want to learn game loops, sprites, tilemaps, input, and sound inside a deliberately small system.
Game-jam creators who like a 16-color palette and 4 sound channels as design constraints.
Teachers who want runnable examples, a browser playground, and an editor in the same toolset.
Solo developers who want to package one project as a Pyxel app, executable, or HTML file.

Who it’s NOT for

Teams that need unrestricted high-resolution art or a modern 3D pipeline: Pyxel starts with 16 colors, 256x256 image banks, and 256x256 tilemaps.
Browser projects that need several source files inside the hosted editor: the FAQ says Pyxel Code Maker does not support multi-file projects.
Developers supporting Python 3.10 or older: the current package requires Python 3.11 or later.
Windows on Arm teams that need a cleanly verified exit path today: open issue 715 reports Pyxel 2.9.6 hanging after its window closes on Windows 11 Arm64.
Organizations that require several maintainers for operational continuity: the README says one person develops the project.

Setup reality

Our sandbox install succeeded in 73 seconds, adding 47 packages and using 173 MB on disk. The build succeeded in 1 second. Tests failed with exit code 4 after 1 second because pyxel.pyxel_binding was missing while pytest loaded python/tests/conftest.py. Pip-audit found 0 known vulnerabilities.

Normal users need Python 3.11 or later and can install the published package with pip. Local games require no account, API credential, or hosted service. The web playground also runs without a local install, while publishing and desktop packaging use the included CLI commands.

Source contributors cross a Python and Rust boundary because the Python package loads a compiled binding. Pyxel supports Windows, macOS, Linux, and browsers, but the hosted Code Maker is limited to single-file projects. File paths can also surprise you because pyxel.init() changes the current directory to the script's location.

Sixteen colors are the point, not a starter setting

Pyxel 2.9.9 gives a Python game a small box to live in: 16 colors, 4 sound channels, 3 image banks, and 8 tilemaps. Those limits make the engine easier to hold in your head. A first program calls pyxel.init(), supplies update and draw functions, then starts the loop. Input, primitive drawing, sprites, music, and screenshots all use one compact API.

That constraint is a genuine product choice. Each image bank is 256x256 pixels, and each tilemap has the same dimensions. You can extend the palette, channels, and banks, but Pyxel still steers you toward pixel art and short feedback loops. If your design already calls for high-resolution animation, a scene graph, or 3D assets, choosing Pyxel means fighting the engine before the game exists.

Python code gets an editor, examples, and export commands

Pyxel 2.9.9 installs a pyxel command with practical jobs built in. It can copy examples, run a script, watch a directory, open the resource editor, package an app, and convert that package to an executable or HTML file. The included editor handles images, tilemaps, sounds, and music in Pyxel's own resource format, so a small project can stay inside one toolset.

The learning path is unusually concrete. The FAQ recommends 5 examples in order, beginning with basic setup and moving through palette, drawing, sound, and a jump game. Browser copies of the examples let a new user inspect the result before installing anything. The API reference is separate from the tutorial, which keeps lookup work from overwhelming the first lesson. English and Japanese documentation are both present.

What happened when we ran it

Our sandbox installed the checkout at commit 50f9bd7 in 73 seconds. That pulled 47 packages and occupied 173 MB on disk. The repository itself contained 460 files, roughly 39,134 lines of source, and 26.3 MB of checked-out data. Our measurement setup was a fresh 3-CPU, 8 GB unprivileged Debian container without secrets.

The build also succeeded, finishing in 1 second. Tests did not. Pytest exited with code 4 after 1 second while loading python/tests/conftest.py. Importing pyxel reached pyxel/__init__.py, which tried to load pyxel.pyxel_binding; Python then raised ModuleNotFoundError because that module was absent. The supplied log ends there and does not establish why the binding was missing.

That distinction matters for adoption. The published pip route may behave differently from a source checkout, while contributors need the Python package and its compiled Rust binding to meet correctly. We did not get a passing test suite from this commit, and there were no summary counts to report. Pip-audit found 0 known vulnerabilities among the installed Python packages, which is useful but does not turn the failed test collection into a pass.

Web support is useful, but Code Maker stays single-file

Pyxel 2.9.9 runs in compatible browsers and offers a hosted Code Maker that needs no local installation. Finished apps can go to the web through the launcher, app2html, or HTML custom elements. The release also added browser downloads for saved sound and music and fixed filenames for exported captures, evidence that the browser route receives current maintenance rather than existing as a leftover demo.

The hosted editor has a firm boundary: the FAQ says it does not support multi-file projects and recommends local development for larger work. Desktop development requires Python 3.11 or newer. File loading has another small trap, because calling pyxel.init() changes the current directory to the script's directory. Load a relative file before initialization, or change directories later, and the same path can resolve differently.

Packaging helps solo projects more than large production teams

A .pyxapp bundle can include code and resources, then run through pyxel play or convert to an executable or HTML file. Metadata lives in comments in the startup script. That is pleasantly direct for a game jam or classroom submission. Commercial distribution is allowed under the MIT License as long as the required copyright and license text travels with the software.

Larger teams should account for the project's shape. The README says Pyxel is developed by one person. GitHub showed 17,951 stars and 10 combined open issues and pull requests on September 25, 2026, with a push on the same date. The queue included active work as well as an open report that version 2.9.6 could leave a process hanging after its window closed on Windows 11 Arm64. That report is specific to one platform and version, but teams targeting Snapdragon Windows machines should reproduce shutdown before release.

Version 2.9.9 is active, while the source test path needs proof

Release 2.9.9 arrived on August 12, 2026. Its changelog covers Rust, Pyodide, and PyO3 updates, fixes for web export and editor behavior, and a correction for palette corruption when imported images exceed 256 colors. Recent pushes plus current issue and pull-request activity are better evidence of maintenance than the release date alone.

Pyxel is easiest to recommend when its restrictions save you decisions. The examples, editors, 16-color visual model, and 4-channel audio system form a coherent place to learn or finish a small game. Our failed import keeps the source checkout from earning an uncomplicated engineering endorsement. Install the published package for ordinary use, but make a clean native build and passing test collection a release condition if you plan to modify the engine itself.

Alternatives

ProjectWhat it isPick it when
PygameA broad Python multimedia library built on SDL, with fewer fantasy-console limits.pick this instead when you want direct control over windowing, graphics, input, and audio without Pyxel's fixed palette and bank model.
PygletA Python windowing and multimedia library for games and visual applications.pick this instead when OpenGL access and a general multimedia API matter more than bundled pixel-art tools.
TIC-80A fantasy computer with built-in tools for making and sharing tiny games.pick this instead when you want the fantasy-console format and can use its supported languages instead of centering the project on Python.

What people are saying

  1. [github-trending] kitao/pyxel

Sources

  1. Pyxel README
  2. Pyxel user guide
  3. Pyxel FAQ
  4. Pyxel changelog
  5. Pyxel 2.9.9 release
  6. Windows Arm64 shutdown report

More dev tools reviews

Claude-Code-Usage-Monitor · dust · kubernetes-the-hard-way · wifit3 · badnotes · container · the whole board →