Awesome Go
A curated list of awesome Go frameworks, libraries and software. Inspired by awesome-python 36k 7k .
Contributing
Please take a quick gander at the contribution guidelines first. Thanks to all contributors ; you rock!
If you see a package or project here that is no longer maintained or is not a good fit, please submit a pull request to improve this file. Thank you!
Contents
Audio and Music
Libraries for manipulating audio.
flac 30 2 - Native Go FLAC decoder.
flac 49 14 - Native Go FLAC decoder.
gaad 27 4 - Native Go AAC bitstream parser.
go-sox 25 4 - libsox bindings for go.
go_mediainfo 13 2 - libmediainfo bindings for go.
gosamplerate - libsamplerate bindings for go.
id3v2 48 11 - Fast and stable ID3 parsing and writing library for Go.
malgo 13 1 - Mini audio library.
minimp3 - Lightweight MP3 decoder library.
mix - Sequence-based Go-native audio mixer for music apps.
mp3 55 9 - Native Go MP3 decoder.
music-theory 135 18 - Music theory models in Go.
PortAudio - Go bindings for the PortAudio audio I/O library.
portmidi 44 7 - Go bindings for PortMidi.
taglib 26 9 - Go bindings for taglib.
vorbis 2 1 - "Native" Go Vorbis decoder (uses CGO, but has no dependencies).
waveform 57 3 - Go package capable of generating waveform images from audio streams.
Authentication and OAuth
Libraries for implementing authentications schemes.
authboss 48 3 - Modular authentication system for the web. It tries to remove as much boilerplate and "hard things" as possible so that each time you start a new web project in Go, you can plug it in, configure, and start building your app without having to build an authentication system each time.
casbin 689 61 - Authorization library that supports access control models like ACL, RBAC, ABAC.
cookiestxt - provides parser of cookies.txt file format.
Go-AWS-Auth 67 10 - AWS (Amazon Web Services) request signing library.
go-jose 783 105 - Fairly complete implementation of the JOSE working group's JSON Web Token, JSON Web Signatures, and JSON Web Encryption specs.
go-oauth2-server 594 85 - Standalone, specification-compliant, OAuth2 server written in Golang.
gologin 813 49 - chainable handlers for login with OAuth1 and OAuth2 authentication providers.
gorbac 575 114 - provides a lightweight role-based access control (RBAC) implementation in Golang.
goth 1k 209 - provides a simple, clean, and idiomatic way to use OAuth and OAuth2. Handles multiple providers out of the box.
httpauth 127 21 - HTTP Authentication middleware.
jwt 17 7 - Clean and easy to use implementation of JSON Web Tokens (JWT).
jwt-auth 60 5 - JWT middleware for Golang http servers with many configuration options.
jwt-go 2k 319 - Golang implementation of JSON Web Tokens (JWT).
loginsrv 646 59 - JWT login microservice with plugable backends such as OAuth2 (Github), htpasswd, osiam.
oauth2 205 40 - Successor of goauth2. Generic OAuth 2.0 package that comes with JWT, Google APIs, Compute Engine and App Engine support.
osin 399 64 - Golang OAuth2 server library.
paseto - Golang implementation of Platform-Agnostic Security Tokens (PASETO)
permissions2 257 18 - Library for keeping track of users, login states and permissions. Uses secure cookies and bcrypt.
securecookie - Efficient secure cookie encoding/decoding.
session 25 3 - Go session management for web servers (including support for Google App Engine - GAE).
sessiongate-go - Go session management using the SessionGate Redis module.
sessions - Dead simple, highly performant, highly customizable sessions service for go http servers.
yubigo 19 3 - Yubikey client package that provides a simple API to integrate the Yubico Yubikey into a go application.
Command Line
Standard CLI
Libraries for building standard or basic Command Line applications.
argparse 7 3 - Command line argument parser inspired by Python's argparse module.
argv - Go library to split command line string as arguments array using the bash syntax.
cli 277 22 - Feature-rich and easy to use command-line package based on golang struct tags.
cli - Simple and complete API for building command line interfaces in Go.
cli-init 490 53 - The easy way to start building Golang command line applications.
climax 130 9 - Alternative CLI with "human face", in spirit of Go command.
cobra 1k 103 - Commander for modern Go CLI interactions.
commandeer 43 1 - Dev-friendly CLI apps: sets up flags, defaults, and usage based on struct fields and tags.
complete 266 10 - Write bash completions in Go + Go command bash completion.
docopt.go 860 74 - Command-line arguments parser that will make you smile.
drive 4k 387 - Google Drive client for the commandline.
env - Tag-based environment configuration for structs.
flag 134 2 - Simple but powerful command line option parsing library for Go supporting subcommand.
go-arg 428 27 - Struct-based argument parsing in Go.
go-flags 826 114 - go command line option parser.
gocmd - Go library for building command line applications.
kingpin 1k 124 - Command line and flag parser supporting sub commands.
liner 402 75 - Go readline-like library for command-line interfaces.
mitchellh/cli 708 68 - Go library for implementing command-line interfaces.
mow.cli 494 39 - Go library for building CLI applications with sophisticated flag and argument parsing and validation.
pflag 21 10 - Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags.
readline 849 82 - Pure golang implementation that provides most features in GNU-Readline under MIT license.
sflags 41 4 - Struct based flags generator for flag, urfave/cli, pflag, cobra, kingpin and other libraries.
strumt - Library to create prompt chain.
ukautz/clif 82 9 - Small command line interface framework.
urfave/cli 3k 284 - Simple, fast, and fun package for building command line apps in Go (formerly codegangsta/cli).
wlog 18 1 - Simple logging interface that supports cross-platform color and concurrency.
36 6 - Easy to use menu structure for cli applications that prompts users to make choices.
Advanced Console UIs
Libraries for building Console Applications and Console User Interfaces.
aurora 226 6 - ANSI terminal colors that supports fmt.Printf/Sprintf.
chalk 213 15 - Intuitive package for prettifying terminal/console output.
color 2k 176 - Versatile package for colored terminal output.
colourize 9 4 - Go library for ANSI colour text in terminals.
go-ataman - Go library for rendering ANSI colored text templates in terminals.
go-colorable 201 40 - Colorable writer for windows.
go-colortext 85 6 - Go library for color output in terminals.
go-isatty 147 28 - isatty for golang.
go-prompt 54 5 - Library for building a powerful interactive prompt, inspired by python-prompt-toolkit 4k 277 .
gocui 2k 134 - Minimalist Go library aimed at creating Console User Interfaces.
gommon/color 197 39 - Style terminal text.
mpb 133 14 - Multi progress bar for terminal applications.
progressbar 111 5 - Basic thread-safe progress bar that works in every OS.
termbox-go 566 73 - Termbox is a library for creating cross-platform text-based interfaces.
termtables 90 16 - Go port of the Ruby library terminal-tables 884 114 for simple ASCII table generation as well as providing markdown and HTML output.
termui 6k 384 - Go terminal dashboard based on termbox-go and inspired by blessed-contrib 10k 473 .
tui-go 1k 64 - Go UI library for building rich terminal applications.
uilive - Library for updating terminal output in realtime.
uiprogress 983 47 - Flexible library to render progress bars in terminal applications.
uitable 395 15 - Library to improve readability in terminal apps using tabular data.
Configuration
Libraries for configuration parsing.
config - JSON or YAML configuration wrapper with environment variables and flags parsing.
configure - Provides configuration through multiple sources, including JSON, flags and environment variables.
env 336 37 - Parse environment variables to Go structs (with defaults).
envcfg 83 6 - Un-marshaling environment variables to Go structs.
envconf - Configuration from environment.
envconfig 114 13 - Read your configuration from environment variables.
envh 85 1 - Helpers to manage environment variables.
gcfg 65 20 - read INI-style configuration files into Go structs; supports user-defined types and subsections.
goConfig 33 6 - Parses a struct as input and populates the fields of this struct with parameters from command line, environment variables and configuration file.
godotenv 636 50 - Go port of Ruby's dotenv library (Loads environment variables from .env
).
gofigure 2 0 - Go application configuration made easy.
gone/jconf 3 3 - Modular JSON configuration. Keep you config structs along with the code they configure and delegate parsing to submodules without sacrificing full config serialization.
hjson 45 6 - Human JSON, a configuration file format for humans. Relaxed syntax, fewer mistakes, more comments.
ingo 14 5 - Flags persisted in an ini-like config file.
ini 730 164 - Go package to read and write INI files.
joshbetz/config - Small configuration library for Go that parses environment variables, JSON files, and reloads automatically on SIGHUP.
mini 10 3 - Golang package for parsing ini-style configuration files.
store 221 10 - Lightweight configuration manager for Go.
viper 6k 753 - Go configuration with fangs.
xdg - Cross platform package that follows the XDG Standard .
Continuous Integration
Tools for help with continuous integration.
drone 14k 2k - Drone is a Continuous Integration platform built on Docker, written in Go.
gomason - Test, Build, Sign, and Publish your go binaries from a clean workspace.
goveralls 391 72 - Go integration for Coveralls.io continuous code coverage tracking system.
overalls 3 1 - Multi-Package go project coverprofile for tools like goveralls.
roveralls - Recursive coverage testing tool.
CSS Preprocessors
Libraries for preprocessing CSS files.
c6 439 29 - High performance SASS compatible-implementation compiler written in Go.
gcss 254 10 - Pure Go CSS Preprocessor.
go-libsass 61 10 - Go wrapper to the 100% Sass compatible libsass project.
Data Structures
Generic datastructures and algorithms in Go.
binpacker 38 9 - Binary packer and unpacker helps user build custom binary stream.
bit - Golang set data structure with bonus bit-twiddling functions.
bitset 314 77 - Go package implementing bitsets.
bloom 3 0 - Bloom filters implemented in Go.
bloom - Golang Bloom filter implementation.
boomfilters 864 56 - Probabilistic data structures for processing continuous, unbounded streams.
concurrent-writer - Highly concurrent drop-in replacement for bufio.Writer
.
conjungo 5 1 - A small, powerful and flexible merge library.
count-min-log 27 6 - Go implementation Count-Min-Log sketch: Approximately counting with approximate counters (Like Count-Min sketch but using less memory).
cuckoofilter 3 1 - Cuckoo filter: a good alternative to a counting bloom filter implemented in Go.
encoding - Integer Compression Libraries for Go.
go-adaptive-radix-tree 18 3 - Go implementation of Adaptive Radix Tree.
go-datastructures 4k 444 - Collection of useful, performant, and thread-safe data structures.
go-ef - A Go implementation of the Elias-Fano encoding.
go-geoindex 248 28 - In-memory geo index.
go-rquad 60 2 - Region quadtrees with efficient point location and neighbour finding.
gods 3k 254 - Go Data Structures. Containers, Sets, Lists, Stacks, Maps, BidiMaps, Trees, HashSet etc.
golang-set 598 82 - Thread-Safe and Non-Thread-Safe high-performance sets for Go.
goset 4 1 - A useful Set collection implementation for Go.
goskiplist 58 14 - Skip list implementation in Go.
gota 324 31 - Implementation of dataframes, series, and data wrangling methods for Go.
hilbert 84 7 - Go package for mapping values to and from space-filling curves, such as Hilbert and Peano curves.
hyperloglog 82 5 - HyperLogLog implementation with Sparse, LogLog-Beta bias correction and TailCut space reduction.
levenshtein - Levenshtein distance and similarity metrics with customizable edit costs and Winkler-like bonus for common prefix.
levenshtein - Implementation to calculate levenshtein distance in Go.
mafsa 166 6 - MA-FSA implementation with Minimal Perfect Hashing.
merkletree - Implementation of a merkle tree providing an efficient and secure verification of the contents of data structures.
roaring 197 27 - Go package implementing compressed bitsets.
skiplist 10 2 - Skiplist implementation in Go.
trie 196 28 - Trie implementation in Go.
ttlcache 38 7 - In-memory LRU string-interface{} map with expiration for golang.
willf/bloom 359 66 - Go package implementing Bloom filters.
Database
Databases implemented in Go.
badger 3k 166 - Fast key-value store in Go.
BigCache 1k 74 - Efficient key/value cache for gigabytes of data.
bolt 7k 627 - Low-level key/value database for Go.
buntdb 2k 103 - Fast, embeddable, in-memory key/value database for Go with custom indexing and spatial support.
cache2go 216 96 - In-memory key:value cache which supports automatic invalidation based on timeouts.
clusteredBigCache - BigCache with clustering support and individual item expiration.
cockroach 13k 2k - Scalable, Geo-Replicated, Transactional Datastore.
couchcache 23 4 - RESTful caching micro-service backed by Couchbase server.
dgraph 5k 384 - Scalable, Distributed, Low Latency, High Throughput Graph Database.
diskv 496 52 - Home-grown disk-backed key-value store.
eliasdb 435 18 - Dependency-free, transactional graph database with REST API, phrase search and SQL-like query language.
forestdb 12 1 - Go bindings for ForestDB.
GCache 261 47 - Cache library with support for expirable Cache, LFU, LRU and ARC.
go-cache 203 40 - In-memory key:value store/cache (similar to Memcached) library for Go, suitable for single-machine applications.
goleveldb 2k 240 - Implementation of the LevelDB 10k 3k key/value database in Go.
gorocksdb - Gorocksdb is a wrapper for RocksDB written in Go.
groupcache 3k 285 - Groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases.
influxdb 7k 1k - Scalable datastore for metrics, events, and real-time analytics.
jaeger 2k 170 - A distributed tracing system.
ledisdb 2k 322 - Ledisdb is a high performance NoSQL like Redis based on LevelDB.
levigo 208 47 - Levigo is a Go wrapper for LevelDB.
moss 114 11 - Moss is a simple LSM key-value storage engine written in 100% Go.
piladb 151 17 - Lightweight RESTful database engine based on stack data structures.
prometheus 16k 2k - Monitoring system and time series database.
rqlite 2k 150 - The lightweight, distributed, relational database built on SQLite.
Scribble 54 17 - Tiny flat file JSON store.
tempdb 4 1 - Key-value store for temporary items.
tidb 13k 2k - TiDB is a distributed SQL database. Inspired by the design of Google F1.
tiedot 2k 203 - Your NoSQL database powered by Golang.
Database schema migration.
darwin 37 3 - Database schema evolution library for Go.
go-fixtures - Django style fixtures for Golang's excellent built-in database/sql library.
gondolier - Gondolier is a library to auto migrate database schemas using structs.
goose 39 9 - Database migration tool. You can manage your database's evolution by creating incremental SQL or Go scripts.
gormigrate 39 5 - Database schema migration helper for Gorm ORM.
migrate 1k 311 - Database migrations. CLI and Golang library.
pravasan 19 3 - Simple Migration tool - currently for MySQL but planning to soon support Postgres, SQLite, MongoDB, etc.
soda 532 85 - Database migration, creation, ORM, etc... for MySQL, PostgreSQL, and SQLite.
sql-migrate 710 78 - Database migration tool. Allows embedding migrations into the application using go-bindata.
Database tools.
chproxy 68 7 - HTTP proxy for ClickHouse database.
go-mysql 714 213 - Go toolset to handle MySQL protocol and replication.
go-mysql-elasticsearch 936 228 - Sync your MySQL data into Elasticsearch automatically.
kingshard 3k 591 - kingshard is a high performance proxy for MySQL powered by Golang.
myreplication 85 25 - MySql binary log replication listener. Supports statement and row based replication.
orchestrator 1k 171 - MySQL replication topology manager & visualizer.
pgweb 5k 406 - Web-based PostgreSQL database browser.
prep - Use prepared SQL statements without changing your code.
pREST 1k 50 - Serve a RESTful API from any PostgreSQL database.
rwdb - rwdb provides read replica capability for multiple database servers setup.
vitess 6k 810 - vitess provides servers and tools which facilitate scaling of MySQL databases for large scale web services.
SQL query builder, libraries for building and using SQL.
dat 500 44 - Go Postgres Data Access Toolkit.
Dotsql 307 25 - Go library that helps you keep sql files in one place and use them with ease.
gendry - Non-invasive SQL builder and powerful data binder.
goqu 336 33 - Idiomatic SQL builder and query library.
igor 63 2 - Abstraction layer for PostgreSQL that supports advanced functionality and uses gorm-like syntax.
ozzo-dbx 162 20 - Powerful data retrieval methods as well as DB-agnostic query building capabilities.
scaneo 99 6 - Generate Go code to convert database rows into arbitrary structs.
sqrl 67 8 - SQL query builder, fork of Squirrel with improved performance.
Squirrel 558 59 - Go library that helps you build SQL queries.
xo 1k 93 - Generate idiomatic Go code for databases based on existing schema definitions or custom queries supporting PostgreSQL, MySQL, SQLite, Oracle, and Microsoft SQL Server.
Database Drivers
Libraries for connecting and operating databases.
Date and Time
Libraries for working with dates and times.
carbon 103 12 - Simple Time extension with a lot of util methods, ported from PHP Carbon library.
date - Augments Time for working with dates, date ranges, time spans, periods, and time-of-day.
dateparse 26 3 - Parse date's without knowing format in advance.
durafmt 162 9 - Time duration formatting library for Go.
feiertage - Set of functions to calculate public holidays in Germany, incl. specialization on the states of Germany (Bundesländer). Things like Easter, Pentecost, Thanksgiving...
go-persian-calendar 18 5 - The implementation of the Persian (Solar Hijri) Calendar in Go (golang).
go-sunrise - Calculate the sunrise and sunset times for a given location.
goweek 10 4 - Library for working with week entity in golang.
now 893 73 - Now is a time toolkit for golang.
NullTime 1 2 - Nullable time.Time
.
strftime - C99-compatible strftime formatter.
timespan 27 2 - For interacting with intervals of time, defined as a start time and a duration.
timeutil 139 5 - Useful extensions (Timedelta, Strftime, ...) to the golang's time package.
tuesday - Ruby-compatible Strftime function.
Distributed Systems
Packages that help with building Distributed Systems.
celeriac 22 3 - Library for adding support for interacting and monitoring Celery workers, tasks and events in Go.
digota 141 9 - grpc ecommerce microservice.
drmaa 18 9 - Job submission library for cluster schedulers based on the DRMAA standard.
emitter-io 156 34 - High performance, distributed, secure and low latency publish-subscribe platform built with MQTT, Websockets and love.
flowgraph - MPI-style ready-send coordination layer.
gleam 800 77 - Fast and scalable distributed map/reduce system written in pure Go and Luajit, combining Go's high concurrency with Luajit's high performance, runs standalone or distributed.
glow 2k 142 - Easy-to-Use scalable distributed big data processing, Map-Reduce, DAG execution, all in pure Go.
go-health 112 10 - Library for enabling asynchronous dependency health checks in your service.
go-jump 17 1 - Port of Google's "Jump" Consistent Hash function.
go-kit 8k 986 - Microservice toolkit with support for service discovery, load balancing, pluggable transports, request tracking, etc.
gorpc 381 55 - Simple, fast and scalable RPC library for high load.
grpc-go 5k 1k - The Go language implementation of gRPC. HTTP/2 based RPC.
heimdall - An enchanced http client with retry and hystrix capabilities.
hprose 325 56 - Very newbility RPC Library, support 25+ languages now.
jsonrpc 29 5 - The jsonrpc package helps implement of JSON-RPC 2.0.
jsonrpc 6 6 - JSON-RPC 2.0 HTTP client implementation.
KrakenD 250 37 - Ultra performant API Gateway framework with middlewares.
micro 4k 310 - Pluggable microservice toolkit and distributed systems platform.
NATS 3k 379 - Lightweight, high performance messaging system for microservices, IoT, and cloud native systems.
raft 2k 244 - Golang implementation of the Raft consensus protocol, by HashiCorp.
raft 19k 4k - Go implementation of the Raft consensus protocol, by CoreOS.
ringpop-go 382 34 - Scalable, fault-tolerant application-layer sharding for Go applications.
rpcx 2k 289 - Distributed pluggable RPC service framework like alibaba Dubbo.
sleuth 215 11 - Library for master-less p2p auto-discovery and RPC between HTTP services (using ZeroMQ 4k 1k ).
tendermint 1k 276 - High-performance middleware for transforming a state machine written in any programming language into a Byzantine Fault Tolerant replicated state machine using the Tendermint consensus and blockchain protocols.
torrent 2k 214 - BitTorrent client package.
dht - BitTorrent Kademlia DHT implementation.
go-peerflix 278 44 - Video streaming torrent client.
Email
Libraries that implement email creation and sending.
douceur 102 17 - CSS inliner for your HTML emails.
email 835 89 - A robust and flexible email library for Go.
go-dkim - DKIM library, to sign & verify email.
go-imap 254 36 - IMAP library for clients and servers.
go-message 17 2 - Streaming library for the Internet Message Format and mail messages.
Gomail 1k 143 - Gomail is a very simple and powerful package to send emails.
Hectane 91 11 - Lightweight SMTP client providing an HTTP API.
hermes 987 38 - Golang package that generates clean, responsive HTML e-mails.
MailHog 2k 138 - Email and SMTP testing with web and API interface.
SendGrid 312 152 - SendGrid's Go library for sending email.
smtp 32 6 - SMTP server protocol state machine.
Embeddable Scripting Languages
Embedding other languages inside your go code.
agora 149 11 - Dynamically typed, embeddable programming language in Go.
anko 458 54 - Scriptable interpreter written in Go.
binder - Go to Lua binding library, based on gopher-lua 2k 184 .
gisp 218 11 - Simple LISP in Go.
go-duktape 519 53 - Duktape JavaScript engine bindings for Go.
go-lua 1k 72 - Port of the Lua 5.2 VM to pure Go.
go-php 352 49 - PHP bindings for Go.
go-python 530 57 - naive go bindings to the CPython C-API.
golua 358 112 - Go bindings for Lua C API.
gopher-lua 2k 184 - Lua 5.1 VM and compiler written in Go.
ngaro 7 1 - Embeddable Ngaro VM implementation enabling scripting in Retro.
otto 3k 301 - JavaScript interpreter written in Go.
purl - Perl 5.18.2 embedded in Go.
Files
Libraries for handling files and file systems.
afero 1k 137 - FileSystem Abstraction System for Go.
go-csv-tag - Load csv file using tag.
go-gtfs - Load gtfs files in go.
notify 237 33 - File system event notification library with simple API, similar to os/signal.
skywalker 10 1 - Package to allow one to concurrently go through a filesystem with ease.
tarfs - Implementation of the FileSystem
interface for tar files.
Financial
Packages for accounting and finance.
accounting 305 15 - money and currency formatting for golang.
decimal 546 114 - Arbitrary-precision fixed-point decimal numbers.
go-finance 472 37 - Comprehensive financial markets data in Go.
go-finance - Library of financial functions for time value of money (annuities), cash flow, interest rate conversions, bonds and depreciation calculations.
go-money - Implementation of Fowler's Money pattern.
ofxgo 5 1 - Query OFX servers and/or parse the responses (with example command-line client).
transaction - Embedded transactional database of accounts, running in multithreaded mode.
vat - VAT number validation & EU VAT rates.
Forms
Libraries for working with forms.
bind 4 1 - Bind form data to any Go values.
binding 626 53 - Binds form and JSON data from net/http Request to struct.
conform 65 8 - Keeps user input in check. Trims, sanitizes & scrubs data based on struct tags.
form 175 10 - Decodes url.Values into Go value(s) and Encodes Go value(s) into url.Values. Dual Array and Full map support.
formam 86 12 - decode form's values into a struct.
forms 71 5 - Framework-agnostic library for parsing and validating form/JSON data which supports multipart forms and files.
gorilla/csrf 219 45 - CSRF protection for Go web applications & services.
nosurf 327 18 - CSRF protection middleware for Go.
Game Development
Awesome game development libraries.
Azul3D 274 25 - 3D game engine written in Go.
Ebiten 491 58 - dead simple 2D game library in Go.
engo 592 84 - Engo is an open-source 2D game engine written in Go. It follows the Entity-Component-System paradigm.
GarageEngine 128 10 - 2d game engine written in Go working on OpenGL.
glop 59 5 - Glop (Game Library Of Power) is a fairly simple cross-platform game library.
go-astar 98 6 - Go implementation of the A* path finding algorithm.
go-collada - Go package for working with the Collada file format.
go-sdl2 724 155 - Go bindings for the Simple DirectMedia Layer .
go3d 52 8 - Performance oriented 2D/3D math package for Go.
gonet 332 156 - Game server skeleton implemented with golang.
goworld 107 22 - Scalable game server engine, featuring space-entity framework and hot-swapping
Leaf 1k 438 - Lightweight game server framework.
nano 295 31 - Lightweight, facility, high performance golang based game server framework
Oak 666 22 - Pure Go game engine.
Pixel 520 23 - Hand-crafted 2D game library in Go.
raylib-go 149 9 - Go bindings for raylib , a simple and easy-to-use library to learn videogames programming.
termloop 799 50 - Terminal-based game engine for Go, built on top of Termbox.
Generation and Generics
Tools to enhance the language with features like generics via code generation.
efaceconv 20 3 - Code generation tool for high performance conversion from interface{} to immutable type without allocations.
gen 870 69 - Code generation tool for ‘generics’-like functionality.
go-enum 15 1 - Code generation for enums from code comments.
go-linq 1k 72 - .NET LINQ-like query methods for Go.
goderive 367 10 - Derives functions from input types.
interfaces 122 5 - Command line tool for generating interface definitions.
jennifer 154 13 - Generate arbitrary Go code without templates.
pkgreflect 13 3 - Go preprocessor for package scoped reflection.
Geographic
Geographic tools and servers
geocache 63 1 - In-memory cache that is suitable for geolocation based applications.
pbf - OpenStreetMap PBF golang encoder/decoder.
S2 geometry 28 0 - S2 geometry library in Go.
Tile38 3k 174 - Geolocation DB with spatial index and realtime geofencing.
Go Compilers
Tools for compiling Go to other languages.
gopherjs 7k 351 - Compiler from Go to JavaScript.
llgo 621 44 - LLVM-based compiler for Go.
tardisgo 372 20 - Golang to Haxe to CPP/CSharp/Java/JavaScript transpiler.
Goroutines
Tools for managing and working with Goroutines.
cyclicbarrier - CyclicBarrier for golang.
go-floc 81 4 - Orchestrate goroutines with ease.
go-flow 29 2 - Control goroutines execution order.
GoSlaves 2 1 - Simple and Asynchronous Goroutine pool library.
goworker 2k 158 - goworker is a Go-based background worker.
grpool 194 21 - Lightweight Goroutine pool.
parallel-fn - Run functions in parallel.
pool 289 18 - Limited consumer goroutine or unlimited goroutine pool for easier goroutine handling and cancellation.
semaphore 10 7 - Semaphore pattern implementation with timeout of lock/unlock operations based on channel and context.
semaphore - Fast resizable semaphore implementation based on CAS (faster than channel-based semaphore implementations).
tunny 534 45 - Goroutine pool for golang.
worker-pool 4 1 - goworker is a Go simple async worker pool.
workerpool 2 1 - Goroutine pool that limits the concurrency of task execution, not the number of tasks queued.
GUI
Libraries for building GUI Applications.
Toolkits
app 2k 69 - Package to create apps with GO, HTML and CSS. Supports: MacOS, Windows in progress.
go-astilectron 445 26 - Build cross platform GUI apps with GO and HTML/JS/CSS (powered by Electron).
go-gtk - Go bindings for GTK.
go-qml 1k 102 - QML support for the Go language.
go-sciter 94 10 - Go bindings for Sciter: the Embeddable HTML/CSS/script engine for modern desktop UI development. Cross platform.
goqt 1k 128 - Golang bindings to the Qt cross-platform application framework.
gotk3 248 68 - Go bindings for GTK3.
gowd - Rapid and simple desktop UI development with GO, HTML, CSS and NW.js. Cross platform.
qt 2k 143 - Qt binding for Go (support for Windows / macOS / Linux / Android / iOS / Sailfish OS / Raspberry Pi).
ui 4k 353 - Platform-native GUI library for Go. Cross platform.
walk 2k 408 - Windows application library kit for Go.
webview 699 42 - Cross-platform webview window with simple two-way JavaScript bindings (Windows / macOS / Linux).
Interaction
gosx-notifier 167 7 - OSX Desktop Notifications library for Go.
robotgo 3k 231 - Go Native cross-platform GUI system automation. Control the mouse, keyboard and other.
systray 231 40 - Cross platform Go library to place an icon and menu in the notification area.
trayhost 100 10 - Cross-platform Go library to place an icon in the host operating system's taskbar.
Hardware
Libraries, tools, and tutorials for interacting with hardware.
See go-hardware 525 44 for a comprehensive list.
Images
Libraries for manipulating images.
bild 2k 68 - Collection of image processing algorithms in pure Go.
bimg 400 89 - Small package for fast and efficient image processing using libvips.
geopattern - Create beautiful generative image patterns from a string.
gg 894 55 - 2D rendering in pure Go.
gift 982 68 - Package of image processing filters.
go-cairo 31 7 - Go binding for the cairo graphics library.
go-gd 27 10 - Go binding for GD library.
go-nude 96 9 - Nudity detection with Go.
go-opencv 702 139 - Go bindings for OpenCV.
go-webcolors 13 0 - Port of webcolors library from Python to Go.
gocv 602 65 - Go package for computer vision using OpenCV 3.3+.
govatar 202 7 - Library and CMD tool for generating funny avatars.
imagick 635 93 - Go binding to ImageMagick's MagickWand C API.
imaginary 1k 161 - Fast and simple HTTP microservice for image resizing.
imaging 1k 160 - Simple Go image processing package.
img 56 3 - Selection of image manipulation tools.
ln 2k 62 - 3D line art rendering in Go.
mpo 4 1 - Decoder and conversion tool for MPO 3D Photos.
picfit 686 76 - An image resizing server written in Go.
pt 1k 81 - Path tracing engine written in Go.
resize 1k 151 - Image resizing for Go with common interpolation methods.
rez 95 2 - Image resizing in pure Go and SIMD.
smartcrop 915 52 - Finds good crops for arbitrary images and crop sizes.
svgo 307 28 - Go Language Library for SVG generation.
tga 11 5 - Package tga is a TARGA image format decoder/encoder.
IoT (Internet of Things)
Libraries for programming devices of the IoT.
connectordb 57 7 - Open-Source Platform for Quantified Self & IoT.
devices - Suite of libraries for IoT devices, experimental for x/exp/io.
eywa - Project Eywa is essentially a connection manager that keeps track of connected devices.
flogo - Project Flogo is an Open Source Framework for IoT Edge Apps & Integration.
gatt 509 140 - Gatt is a Go package for building Bluetooth Low Energy peripherals.
gobot 4k 554 - Gobot is a framework for robotics, physical computing, and the Internet of Things.
mainflux 52 11 - Industrial IoT Messaging and Device Management Server.
periph - Peripherals I/O to interface with low-level board facilities.
sensorbee 107 22 - Lightweight stream processing engine for IoT.
Logging
Libraries for generating and working with log files.
distillog - distilled levelled logging (think of it as stdlib + log levels).
glg 1 1 - glg is simple and fast leveled logging library for Go.
glog 598 80 - Leveled execution logs for Go.
go-cronowriter - Simple writer that rotate log files automatically based on current date and time, like cronolog.
go-log 6 4 - Log lib supports level and multi handlers.
go-log 3 2 - Log4j implementation in Go.
go-logger 178 23 - Simple logger of Go Programs, with level handlers.
gologger 26 4 - Simple easy to use log lib for go, logs in Colored Console, Simple Console, File or Elasticsearch.
gomol 4 2 - Multiple-output, structured logging for Go with extensible logging outputs.
gone/log 3 3 - Fast, extendable, full-featured, std-lib source compatible log library.
journald - Go implementation of systemd Journal's native API for logging.
log 406 51 - Structured logging package for Go.
log 228 22 - Simple, configurable and scalable Structured Logging for Go.
log - Structured log interface for Go cleanly separates logging facade from its implementation.
log-voyage 84 12 - Full-featured logging saas written in golang.
log15 655 97 - Simple, powerful logging for Go.
logdump - Package for multi-level logging.
logex 12 6 - Golang log lib, supports tracking and level, wrap by standard log lib.
logger 22 1 - Minimalistic logging library for Go.
logo - Golang logger to different configurable writers.
logrus 4k 662 - Structured logger for Go.
logrusly 15 8 - logrus 2k 296 plug-in to send errors to a Loggly .
logutils 26 7 - Utilities for slightly better logging in Go (Golang) extending the standard logger.
logxi 328 37 - 12-factor app logger that is fast and makes you happy.
lumberjack 492 85 - Simple rolling logger, implements io.WriteCloser.
mlog - Simple logging module for go, with 5 levels, an optional rotating logfile feature and stdout/stderr output.
ozzo-log 82 13 - High performance logging supporting log severity, categorization, and filtering. Can send filtered log messages to various targets (e.g. console, network, mail).
seelog 913 182 - Logging functionality with flexible dispatching, filtering, and formatting.
spew 1k 120 - Implements a deep pretty printer for Go data structures to aid in debugging.
stdlog 18 2 - Stdlog is an object-oriented library providing leveled logging. It is very useful for cron jobs.
tail 417 102 - Go package striving to emulate the features of the BSD tail program.
xlog - Plugin architecture and flexible log system for Go, with level ctrl, multiple log target and custom log format.
xlog 106 12 - Structured logger for net/context
aware HTTP handlers with flexible dispatching.
zap 3k 243 - Fast, structured, leveled logging in Go.
zerolog 535 27 - Zero-allocation JSON logger.
Machine Learning
Libraries for Machine Learning.
bayesian 184 29 - Naive Bayesian Classification for Golang.
CloudForest 518 69 - Fast, flexible, multi-threaded ensembles of decision trees for machine learning in pure Go.
fonet - A Deep Neural Network library written in Go.
gago 379 25 - Multi-population, flexible, parallel genetic algorithm.
go-cluster - Go implementation of the k-modes and k-prototypes clustering algorithms.
go-deep - A feature-rich neural network library in Go.
go-fann 47 10 - Go bindings for Fast Artificial Neural Networks(FANN) library.
go-galib 60 14 - Genetic Algorithms library written in Go / golang.
go-pr 21 4 - Pattern recognition package in Go lang.
gobrain 13 4 - Neural Networks written in go.
godist - Various probability distributions, and associated methods.
goga 59 4 - Genetic algorithm library for Go.
GoLearn 4k 555 - General Machine Learning library for Go.
golinear 33 13 - liblinear bindings for Go.
goml 713 64 - On-line Machine Learning in Go.
goRecommend 5 1 - Recommendation Algorithms library written in Go.
gorgonia 2k 165 - graph-based computational library like Theano for Go that provides primitives for building various machine learning and neural network algorithms.
goscore 3 2 - Go Scoring API for PMML.
gosseract 404 67 - Go package for OCR (Optical Character Recognition), by using Tesseract C++ library.
libsvm 27 3 - libsvm golang version derived work based on LIBSVM 3.14.
mlgo - This project aims to provide minimalistic machine learning algorithms in Go.
neat - Plug-and-play, parallel Go framework for NeuroEvolution of Augmenting Topologies (NEAT).
neural-go 31 3 - Multilayer perceptron network implemented in Go, with training via backpropagation.
probab - Probability distribution functions. Bayesian inference. Written in pure Go.
regommend 42 4 - Recommendation & collaborative filtering engine.
shield 48 13 - Bayesian text classifier with flexible tokenizers and storage backends for Go.
tfgo - Easy to use Tensorflow bindings: simplifies the usage of the official Tensorflow Go bindings. Define computational graphs in Go, load and execute models trained in Python.
Varis 5 1 - Golang Neural Network.
Messaging
Libraries that implement messaging systems.
Centrifugo 2k 203 - Real-time messaging (Websockets or SockJS) server in Go.
dbus 164 61 - Native Go bindings for D-Bus.
drone-line 26 4 - Sending Line notifications using a binary, docker or Drone CI.
emitter 118 6 - Emits events using Go way, with wildcard, predicates, cancellation possibilities and many other good wins.
event - Implementation of the pattern observer.
EventBus 31 3 - The lightweight event bus with async compatibility.
gaurun-client - Gaurun Client written in Go.
Glue 234 16 - Robust Go and Javascript Socket Library (Alternative to Socket.io).
go-notify - Native implementation of the freedesktop notification spec.
go-nsq 403 111 - the official Go package for NSQ.
go-socket.io 2k 308 - socket.io library for golang, a realtime application framework.
go-vitotrol - Client library to Viessmann Vitotrol web service.
Gollum 674 65 - A n:m multiplexer that gathers messages from different sources and broadcasts them to a set of destinations.
golongpoll 347 24 - HTTP longpoll server library that makes web pub-sub simple.
goose - Server Sent Events in Go.
gopush-cluster 582 164 - gopush-cluster is a go push server cluster.
gorush 2k 210 - Push notification server using APNs2 2k 148 and google GCM 97 45 .
guble 85 11 - Messaging server using push notifications (Google Firebase Cloud Messaging, Apple Push Notification services, SMS) as well as websockets, a REST API, featuring distributed operation and message-persistence.
machinery 2k 254 - Asynchronous task queue/job queue based on distributed message passing.
mangos 561 66 - Pure go implementation of the Nanomsg ("Scalable Protocols") with transport interoperability.
melody 684 79 - Minimalist framework for dealing with websocket sessions, includes broadcasting and automatic ping/pong handling.
messagebus - messagebus is a Go simple async message bus, perfect for using as event bus when doing event sourcing, CQRS, DDD.
NATS Go Client 767 120 - Lightweight and high performance publish-subscribe and distributed queueing messaging system - this is the Go library.
nsq-event-bus 11 2 - A tiny wrapper around NSQ topic and channel.
oplog 83 9 - Generic oplog/replication system for REST APIs.
pubsub 31 6 - Simple pubsub package for go.
rabbus 5 2 - A tiny wrapper over amqp exchanges and queues.
rabtap - RabbitMQ swiss army knife cli app.
RapidMQ 21 2 - RapidMQ is a lightweight and reliable library for managing of the local messages queue.
sarama 3k 546 - Go library for Apache Kafka.
Uniqush-Push 989 194 - Redis backed unified push service for server-side notifications to mobile devices.
zmq4 557 95 - Go interface to ZeroMQ version 4. Also available for version 3 91 11 and version 2 7 2 .
Miscellaneous
These libraries were placed here because none of the other categories seemed to fit.
alice - Additive dependency injection container for Golang.
anagent - Minimalistic, pluggable Golang evloop/timer handler with dependency-injection.
antch - A fast, powerful and extensible web crawling & scraping framework.
archiver 462 40 - Library and command for making and extracting .zip and .tar.gz archives.
autoflags 5 0 - Go package to automatically define command line flags from struct fields.
avgRating - Calculate average score and rating based on Wilson Score Equation.
banner 136 7 - Add beautiful banners into your Go applications.
base64Captcha 265 64 - Base64captch supports digit, number, alphabet, arithmetic, audio and digit-alphabet captcha.
battery 71 5 - Cross-platform, normalized battery information library.
bitio 24 1 - Highly optimized bit-level Reader and Writer for Go.
browscap_go - GoLang Library for Browser Capabilities Project .
captcha - Package captcha provides an easy to use, unopinionated API for captcha generation.
conv 298 6 - Package conv provides fast and intuitive conversions across Go types.
datacounter 17 2 - Go counters for readers/writer/http.ResponseWriter.
errors 2k 118 - Package that provides simple error handling primitives.
go-chat-bot 223 58 - IRC, Slack & Telegram bot written in Go.
go-commons-pool 387 57 - Generic object pool for Golang.
go-multierror 285 23 - Go (golang) package for representing a list of errors as a single error.
go-openapi - Collection of packages to parse and utilize open-api schemas.
go-resiliency 503 35 - Resiliency patterns for golang.
go-sarah - Framework to build bot for desired chat services including LINE, Slack, Gitter and more.
go-unarr 14 3 - Decompression library for RAR, TAR, ZIP and 7z archives.
go.uuid 1k 203 - Implementation of Universally Unique Identifier (UUID). Supported both creation and parsing of UUIDs.
gofakeit 53 10 - Random data generator written in go.
goid - Generate and Parse RFC4122 compliant V4 UUIDs.
gopsutil 2k 559 - Cross-platform library for retrieving process and system utilization(CPU, Memory, Disks, etc).
gosms 1k 90 - Your own local SMS gateway in Go that can be used to send SMS.
gountries 125 15 - Package that exposes country and subdivision data.
hanu 21 4 - Framework for writing Slack bots.
health 231 13 - Easy to use, extensible health check library.
healthcheck 18 10 - An opinionated and concurrent health-check HTTP handler for RESTful services.
hostutils - A golang library for packing and unpacking FQDNs list.
indigo 17 2 - Distributed unique ID generator of using Sonyflake and encoded by Base58.
jobs 424 30 - Persistent and flexible background jobs library.
lk - A simple licensing library for golang.
margelet 47 12 - Framework for building Telegram bots.
pdfgen - HTTP service to generate PDF from Json requests.
persian - Some utilities for Persian language in go.
secdl - Lighttpd ModSecDownload algorithm ported to go to secure download urls.
shellwords - A Golang library to manipulate strings according to the word parsing rules of the UNIX Bourne shell.
shortid - Distributed generation of super short, unique, non-sequential, URL friendly IDs.
slacker 61 3 - Easy to use framework to create Slack bots.
stats 60 11 - Monitors Go MemStats + System stats such as Memory, Swap and CPU and sends via UDP anywhere you want for logging etc...
turtle 16 2 - Emojis for Go.
uuid - Generate, encode, and decode UUIDs v1 with fast or cryptographic-quality random node identifier.
VarHandler 3 1 - Generate boilerplate http input and ouput handling.
werr 7 1 - Error Wrapper creates an wrapper for the error type in Go which captures the File, Line and Stack of where it was called.
wuid - An extremely fast unique number generator, 10-135 times faster than UUID.
xkg 24 2 - X Keyboard Grabber.
xstrings 431 33 - Collection of useful string functions ported from other languages.
Natural Language Processing
Libraries for working with human languages.
dpar 18 2 - Transition-based statistical dependency parser.
go-eco 2 1 - Similarity, dissimilarity and distance matrices; diversity, equitability and inequality measures; species richness estimators; coenocline models.
go-i18n 502 83 - Package and an accompanying tool to work with localized text.
go-mystem - CGo bindings to Yandex.Mystem - russian morphology analyzer.
go-nlp 23 9 - Utilities for working with discrete probability distributions and other tools useful for doing NLP work.
go-stem 27 7 - Implementation of the porter stemming algorithm.
go-unidecode 16 2 - ASCII transliterations of Unicode text.
go2vec 18 2 - Reader and utility functions for word2vec embeddings.
gojieba 280 67 - This is a Go implementation of jieba 9k 3k which a Chinese word splitting algorithm.
golibstemmer 10 3 - Go bindings for the snowball libstemmer library including porter 2.
gounidecode 24 6 - Unicode transliterator (also known as unidecode) for Go.
gse - Go efficient text segmentation; support english, chinese, japanese and other.
icu 12 1 - Cgo binding for icu4c C library detection and conversion functions. Guaranteed compatibility with version 50.1.
libtextcat 11 6 - Cgo binding for libtextcat C library. Guaranteed compatibility with version 2.2.
MMSEGO 35 7 - This is a GO implementation of MMSEG which a Chinese word splitting algorithm.
nlp 265 9 - Extract values from strings and fill your structs with nlp.
nlp 21 1 - Go Natural Language Processing library supporting LSA (Latent Semantic Analysis).
paicehusk 9 2 - Golang implementation of the Paice/Husk Stemming Algorithm.
petrovich - Petrovich is the library which inflects Russian names to given grammatical case.
porter 2 0 - This is a fairly straightforward port of Martin Porter's C implementation of the Porter stemming algorithm.
porter2 - Really fast Porter 2 stemmer.
prose 538 23 - Library for text processing that supports tokenization, part-of-speech tagging, named-entity extraction, and more.
RAKE.go - Go port of the Rapid Automatic Keyword Extraction Algorithm (RAKE).
segment 29 5 - Go library for performing Unicode Text Segmentation as described in Unicode Standard Annex #29
sentences 200 17 - Sentence tokenizer: converts text into a list of sentences.
shamoji - The shamoji is word filtering package written in Go.
snowball 10 0 - Snowball stemmer port (cgo wrapper) for Go. Provides word stem extraction functionality Snowball native .
stemmer 23 0 - Stemmer packages for Go programming language. Includes English and German stemmers.
textcat 23 4 - Go package for n-gram based text categorization, with support for utf-8 and raw text.
whatlanggo - Natural language detection package for Go. Supports 84 languages and 24 scripts (writing systems e.g. Latin, Cyrillic, etc).
when - Natural EN and RU language date/time parser with pluggable rules.
Networking
Libraries for working with various layers of the network.
arp 89 17 - Package arp implements the ARP protocol, as described in RFC 826.
buffstreams - Streaming protocolbuffer data over TCP made easy.
canopus 64 16 - CoAP Client/Server implementation (RFC 7252).
cidranger - Fast IP to CIDR lookup for Go.
dhcp6 26 8 - Package dhcp6 implements a DHCPv6 server, as described in RFC 3315.
dns 3k 537 - Go library for working with DNS.
ether 39 1 - Cross-platform Go package for sending and receiving ethernet frames.
ethernet 101 9 - Package ethernet implements marshaling and unmarshaling of IEEE 802.3 Ethernet II frames and IEEE 802.1Q VLAN tags.
fasthttp 5k 459 - Package fasthttp is a fast HTTP implementation for Go, up to 10 times faster than net/http.
fortio 216 12 - Load testing library and command line tool and web UI. Allows to specify a set query-per-second load and record latency histograms and other useful stats and graph them.
ftp 214 135 - Package ftp implements a FTP client as described in RFC 959 .
go-getter 424 47 - Go library for downloading files or directories from various sources using a URL.
go-stun 154 35 - Go implementation of the STUN client (RFC 3489 and RFC 5389).
gobgp 1k 296 - BGP implemented in the Go Programming Language.
golibwireshark 7 1 - Package golibwireshark use libwireshark library to decode pcap file and analyse dissection data.
gopacket 1k 298 - Go library for packet processing with libpcap bindings.
gopcap 122 67 - Go wrapper for libpcap.
goshark 4 2 - Package goshark use tshark to decode IP packet and create data struct to analyse packet.
gosnmp 248 83 - Native Go library for performing SNMP actions.
gotcp 33 12 - Go package for quickly writing tcp applications.
grab 226 23 - Go package for managing file downloads.
graval 16 3 - Experimental FTP server framework.
jazigo 52 5 - Jazigo is a tool written in Go for retrieving configuration for multiple network devices.
kcp-go 885 215 - KCP - Fast and Reliable ARQ Protocol.
kcptun 7k 1k - Extremely simple & fast udp tunnel based on KCP protocol.
lhttp 379 48 - Powerful websocket framework, build your IM server more easily.
linkio - Network link speed simulation for Reader/Writer interfaces.
llb - It's a very simple but quick backend for proxy servers. Can be useful for fast redirection to predefined domain with zero memory allocation and fast response.
mdns 53 13 - Simple mDNS (Multicast DNS) client/server library in Golang.
mqttPaho - The Paho Go Client provides an MQTT client library for connection to MQTT brokers via TCP, TLS or WebSockets.
portproxy 12 0 - Simple TCP proxy which adds CORS support to API's which don't support it.
publicip 4 1 - Package publicip returns your public facing IPv4 address (internet egress).
raw 87 17 - Package raw enables reading and writing data at the device driver level for a network interface.
sftp 427 164 - Package sftp implements the SSH File Transfer Protocol as described in https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt .
ssh 508 45 - Higher-level API for building SSH servers (wraps crypto/ssh).
sslb 97 6 - It's a Super Simples Load Balancer, just a little project to achieve some kind of performance.
stun 8 1 - Go implementation of RFC 5389 STUN protocol.
tcp_server - Go library for building tcp servers faster.
utp 95 18 - Go uTP micro transport protocol implementation.
water 219 59 - Simple TUN/TAP library.
winrm 114 43 - Go WinRM client to remotely execute commands on Windows machines.
xtcp 7 1 - TCP Server Framework with simultaneous full duplex communication,graceful shutdown,custom protocol.
YANNFF 198 27