Embed Shiny Gen games on your website
A Shiny Gen game can run natively on any web page (your portfolio, blog, or game site) via
the shinygen npm package. One script tag loads the engine, and it runs the game's
GDScript directly on your page. It is not an iframe: the engine boots on your canvas, WebGPU-rendered
by default with a WebGL2 fallback for browsers without WebGPU.
The easy way: download your game
In Shiny Gen, open the Share menu and choose Download as HTML. You get a single HTML file: your game's code with the engine reference already wired in, pinned to an exact engine version so the page keeps working identically forever. Host that file anywhere, or open it in a browser.
Build your own page
For full control, put the engine script tag and your game's GDScript on any page:
<!doctype html>
<canvas id="canvas"></canvas>
<script src="https://cdn.jsdelivr.net/npm/shinygen@4.6.0/shinygen.js"></script>
<script type="text/gdscript" name="Main">
extends Node3D
func _ready():
var light = DirectionalLight3D.new()
light.rotation_degrees = Vector3(-45, 30, 0)
add_child(light)
</script>
<script>
ShinyGen.start({ canvas: "#canvas" });
</script>
Replace the script body with your own game's GDScript from Shiny Gen's code editor.
Using npm and bundlers
npm install shinygen works too. The engine resolves all of its files relative to
shinygen.js, so you can serve the package from any static host, CDN, or bundler with
no configuration.
Good to know
- The engine ships compressed (several MB over the wire), streamed from the CDN or your host; embedded pages need a network connection to load.
- Pin a version (
shinygen@4.6.0) and your page keeps working identically regardless of later engine releases. - Games are written in GDScript, the Godot engine's scripting language, running in a sandboxed subset. See What is Shiny Gen?
- You own the games you make and can publish them commercially. See the FAQ.
Last updated: July 18, 2026