whatisgithub

What is ebiten?

hajimehoshi/ebiten — explained in plain English

Analysis updated 2026-06-24

13,166GoAudience · developerComplexity · 3/5LicenseSetup · easy

In one sentence

Simple open-source 2D game engine for Go that lets you build games running on Windows, macOS, Linux, Android, iOS, and the web from one codebase without complex setup.

Mindmap

mindmap
  root((repo))
    What it does
      2D game engine
      Cross-platform builds
      Simple API design
    Tech Stack
      Go language
      WebAssembly web builds
      GLFW graphics layer
    Features
      Graphics rendering
      Input handling
      Audio playback
    Platforms
      Desktop and mobile
      Web and Nintendo Switch
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Build a 2D game in Go that runs on desktop, mobile, and web browsers without rewriting code for each platform.

USE CASE 2

Handle keyboard, mouse, gamepad, and touch input in a cross-platform game using a single consistent API.

USE CASE 3

Play music and sound effects from Ogg, MP3, or WAV files inside a Go game.

USE CASE 4

Write custom pixel shaders for visual effects in a Go game without switching to a heavier engine.

What is it built with?

GoWebAssemblyGLFW

How does it compare?

hajimehoshi/ebitencoder/codergopherjs/gopherjs
Stars13,16613,18813,143
LanguageGoGoGo
Setup difficultyeasyhardmoderate
Complexity3/54/53/5
Audiencedeveloperops devopsdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 30min

Pure Go, no Cgo required, so setup is a standard `go get` with no C toolchain needed.

Apache 2.0 license, use freely in personal or commercial projects, just keep the copyright and license notice.

So what is it?

Ebitengine (also known as Ebiten) is an open-source 2D game engine written in the Go programming language. It is designed for developers who want to build 2D games without dealing with a complex setup. The project describes its API as dead simple, meaning it prioritizes a small and approachable interface over a large feature set. Games built with Ebitengine can run on a wide range of platforms from one codebase: Windows, macOS, Linux, FreeBSD, Android, iOS, the web via WebAssembly, and Nintendo Switch. Xbox support is listed as limited and not yet broadly available. One practical note for Windows and macOS users is that Ebitengine does not require Cgo, which is a tool that lets Go code call C code. Avoiding it makes builds simpler and more portable. The engine covers the three main areas a 2D game typically needs. For graphics, it supports drawing shapes and images with geometry and color transformations, blending modes, off-screen rendering (drawing to an invisible buffer before putting it on screen), text rendering, and custom shaders. For input, it handles mouse, keyboard, gamepad, and touch events. For audio, it can play Ogg/Vorbis, MP3, WAV, and raw PCM files. The repository includes a set of sub-packages for specific tasks, such as handling audio formats, working with color transforms, and managing input state changes. There is also a mobile package for Android and iOS builds. The project has an active community across Discord, Slack, GitHub Discussions, and Reddit. The engine code is released under the Apache 2.0 license. The bulk of the README is license text for the third-party libraries Ebitengine depends on, such as GLFW and parts of the Go standard library.

Copy-paste prompts

Prompt 1
I'm new to Ebitengine. Show me a minimal Go program that opens a window, draws a moving sprite, and handles keyboard input.
Prompt 2
Using Ebitengine, how do I draw text on screen and play a background music loop from an MP3 file?
Prompt 3
Help me set up an Ebitengine project that compiles to WebAssembly so players can run it in a browser.
Prompt 4
I want to build a top-down 2D game in Go with Ebitengine. What file structure and game loop pattern should I start with?
Prompt 5
Show me how to write a custom Ebitengine shader to add a glow effect around sprites on screen.

Frequently asked questions

What is ebiten?

Simple open-source 2D game engine for Go that lets you build games running on Windows, macOS, Linux, Android, iOS, and the web from one codebase without complex setup.

What language is ebiten written in?

Mainly Go. The stack also includes Go, WebAssembly, GLFW.

What license does ebiten use?

Apache 2.0 license, use freely in personal or commercial projects, just keep the copyright and license notice.

How hard is ebiten to set up?

Setup difficulty is rated easy, with roughly 30min to a first successful run.

Who is ebiten for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.