LittleJS is a fast, lightweight, and fully open source HTML5 game engine designed for simplicity and performance. Its small footprint is packed with a comprehensive feature set including hybrid rendering, physics, particles, sound, and input handling. The code is clean and well documented with some fun examples to get you started right away. Choo-Choo!
The Second Annual LittleJS Game Jam is currently in progress, running from Oct 3 to Nov 3! Unleash your creativity and develop amazing games using the LittleJS game engine. 🕹️🎮 Sign up today and get more info about the jam on itch.io!

LittleJS is a small but powerful game engine with many features and no dependencies.
To get started download the latest LittleJS package from GitHub or install via npm: npm install littlejsengine
You need to run a local web server to run LittleJS games during development! You may see a console error like ‘The image element contains cross-origin data.’ Don’t panic, it’s easy to fix! If you are using Visual Studio Code there is a Live Preview Extension that will handle this for you automatically. Another option is to setup a simple local web server like http-server via npm.
These demos are for both learning and using as starter projects to create your own games.
| File | Mode | Module | Use case |
|---|---|---|---|
| littlejs.js | Debug | No | Full engine with debug functions and asserts |
| littlejs.release.js | Release | No | Full engine optimized for release |
| littlejs.min.js | Release | No | Full engine optimized for release and minified |
| littlejs.esm.js | Debug | ESM | Full engine with debug functions and asserts |
| littlejs.esm.min.js | Release | ESM | Full engine optimized for release and minified |
To rebuild the engine first run npm install to setup the necessary npm dependencies. Then call npm run build to build the engine.
The starter example project includes a node js file build.js that compresses everything into a tiny zip file using Google Closure, UglifyJS, and ECT Zip.
Here are a few of the many amazing games created with LittleJS…
![]()