A GUI can be created with a go package. There is no native support. There are several packages for making go gui’s. The most common are web-based and desktop-based.

Many apps are going in the web-based direction, think Google apps or Cloud apps. One advantage of this is that apps will work on many different operating systems (Mac, Windows).
Which package is best depends on your needs.

Related course: GUI Application Development in Go: Build graphical applications with Go

Web based Go GUI


The app package can create apps with GO, HTML and CSS.

It’s designed to use a driver. A driver contains allows the app package to work on a platform. There seems to be only a MacOS and web driver. Meaning other platforms are not supported.


The go-astilectron package is an Electron based setup. You can make an app with HTML/JS/CSS and it’s cross platform

  • Electron is made with Node.js and Chromium. That means your app will run inside a special Chromium browser.

  • Astilectron is an Electron app, it provides an API over a TCP socket that allows executing Electron’s method as well as capturing Electron’s events.

  • Go-astilectron are Go bindings for the Astilectron app.

There is a demo app which shows a rather nice interface.


Go bindings for Sciter: the Embeddable HTML/CSS/script engine for modern desktop UI development. Cross platform.

This is essentially a Go binding for Sciter. This (commercial) package can made cross-platform and embeddable user interface with JavaScript, CSS, HTML.


Desktop UI with GO, HTML, CSS and NW.js. Apps made with gowd are cross platform.

The main component here is NW.js (previously known as node-webkit). Use Node.js modules directly from DOM.

It runs on all major platforms and uses a combination of Chromium and Node.

Desktop based Go GUI


Bindings to the gtk package. This is a desktop package often used in Linux (gnome interface).

You can create GUI interfaces that have the GTK widgets. Bare in mind that not all widgets have been binded (see website).


Gtk3 is the newest version of Gtk. There are Go bindings for GTK3.

The package comes with several examples.

It requires:

  • GTK 3.6-3.16
  • GLib 2.36-2.40
  • Cairo 1.10 or 1.12
  • A recent Go (1.3 or newer)


Qt binding for Go (support for Windows / macOS / Linux / Android / iOS / Sailfish OS / Raspberry Pi). QT is a popular (commercial) framework for building cross platform apps.

There’s a gallery with some examples apps.


A tiny cross-platform webview library for Golang to build modern cross-platform GUIs. It’s cross platform and platform-native, but very basic.


Windows application library kit for Go. You can make native Windows apps with this, but no other operating system is supported.


Cross-platform webview window with simple two-way JavaScript bindings (Windows / macOS / Linux). This is based on WebKit (Gtk/Cocoa) and MSHTML (Windows).