Gio UI
Cross-Platform GUI for Go

Gio is a library for writing cross-platform immediate mode GUI-s in Go. Gio supports all the major platforms: Linux, macOS, Windows, Android, iOS, FreeBSD, OpenBSD and WebAssembly.

For a quick demonstration take a look at the WebAssembly demo below. This requires a browser that supports WebAssembly.

Kitchen screenshot

The source for the Kitchen project.

Getting Started

Gio is designed to work with very few dependencies. It depends only on the platform libraries for window management, input and GPU drawing.

To install the necessary dependencies, take a look at:

Once you have everything installed head over to Learn, which contains links to get you started with Gio.



Gio helps Go developers to build efficient, fluid, and portable GUIs across all major platforms. It combines bleeding-edge 2D graphics technology with the flexibility of the immediate mode graphics paradigm to create a compelling and consistent foundation for application development.

Gio includes an efficient vector renderer based on the Pathfinder project implemented on OpenGL ES and Direct3D 11, and is migrating towards an even more efficient compute-shader-based renderer built atop piet-gpu. Text and other shapes are rendered using only their outlines without baking them into texture images, to support efficient animations, transformed drawing and pixel resolution independence.


Development of Gio is funded by sponsorships. If you find Gio useful, please consider sponsoring the project on OpenCollective or one or more of its developers directly.