vorbis - "Native" Go Vorbis decoder (uses CGO, but has no dependencies).
waveform - Go package capable of generating waveform images from audio streams.
Authentication and OAuth
Libraries for implementing authentications schemes.
authboss - 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 - Authorization library that supports access control models like ACL, RBAC, ABAC.
cookiestxt - provides parser of cookies.txt file format.
Go-AWS-Auth - AWS (Amazon Web Services) request signing library.
go-jose - Fairly complete implementation of the JOSE working group's JSON Web Token, JSON Web Signatures, and JSON Web Encryption specs.
go-oauth2-server - Standalone, specification-compliant, OAuth2 server written in Golang.
gologin - chainable handlers for login with OAuth1 and OAuth2 authentication providers.
gorbac - provides a lightweight role-based access control (RBAC) implementation in Golang.
goth - provides a simple, clean, and idiomatic way to use OAuth and OAuth2. Handles multiple providers out of the box.
session - 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.
signedvalue - Signed and timestamped strings compatible with Tornado'screate_signed_value, decode_signed_value, and therefore set_secure_cookie and get_secure_cookie.
yubigo - 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 - 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 - 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 - The easy way to start building Golang command line applications.
climax - Alternative CLI with "human face", in spirit of Go command.
gcfg - read INI-style configuration files into Go structs; supports user-defined types and subsections.
go-up - A simple configuration library with recursive placeholders resolution and no magic.
goConfig - Parses a struct as input and populates the fields of this struct with parameters from command line, environment variables and configuration file.
godotenv - Go port of Ruby's dotenv library (Loads environment variables from .env).
gofigure - Go application configuration made easy.
gone/jconf - Modular JSON configuration. Keep you config structs along with the code they configure and delegate parsing to submodules without sacrificing full config serialization.
hjson - Human JSON, a configuration file format for humans. Relaxed syntax, fewer mistakes, more comments.
ingo - Flags persisted in an ini-like config file.
boomfilters - Probabilistic data structures for processing continuous, unbounded streams.
concurrent-writer - Highly concurrent drop-in replacement for bufio.Writer.
conjungo - A small, powerful and flexible merge library.
count-min-log - Go implementation Count-Min-Log sketch: Approximately counting with approximate counters (Like Count-Min sketch but using less memory).
cuckoofilter - Cuckoo filter: a good alternative to a counting bloom filter implemented in Go.
deque - Fast ring-buffer deque (double-ended queue).
igor - Abstraction layer for PostgreSQL that supports advanced functionality and uses gorm-like syntax.
ozzo-dbx - Powerful data retrieval methods as well as DB-agnostic query building capabilities.
scaneo - Generate Go code to convert database rows into arbitrary structs.
sqrl - SQL query builder, fork of Squirrel with improved performance.
Squirrel - Go library that helps you build SQL queries.
xo - 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.
Relational Databases
avatica - Apache Avatica/Phoenix SQL driver for database/sql.
mgo - MongoDB driver for the Go language that implements a rich and well tested selection of features under a very simple API following standard Go idioms
mongo-go-driver - Official MongoDB driver for the Go language.
riot - Go Open Source, Distributed, Simple and efficient Search Engine
skizze - probabilistic data-structures service and storage.
Date and Time
Libraries for working with dates and times.
carbon - 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 - Parse date's without knowing format in advance.
durafmt - 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 - The implementation of the Persian (Solar Hijri) Calendar in Go (golang).
go-sunrise - Calculate the sunrise and sunset times for a given location.
goweek - Library for working with week entity in golang.
gleam - 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 - Easy-to-Use scalable distributed big data processing, Map-Reduce, DAG execution, all in pure Go.
go-health - Library for enabling asynchronous dependency health checks in your service.
go-jump - Port of Google's "Jump" Consistent Hash function.
go-kit - Microservice toolkit with support for service discovery, load balancing, pluggable transports, request tracking, etc.
gorpc - Simple, fast and scalable RPC library for high load.
grpc-go - The Go language implementation of gRPC. HTTP/2 based RPC.
heimdall - An enchanced http client with retry and hystrix capabilities.
hprose - Very newbility RPC Library, support 25+ languages now.
jsonrpc - The jsonrpc package helps implement of JSON-RPC 2.0.
KrakenD - Ultra performant API Gateway framework with middlewares.
micro - Pluggable microservice toolkit and distributed systems platform.
NATS - Lightweight, high performance messaging system for microservices, IoT, and cloud native systems.
raft - Golang implementation of the Raft consensus protocol, by HashiCorp.
raft - Go implementation of the Raft consensus protocol, by CoreOS.
redis-lock - Simplified distributed locking implementation using Redis.
ringpop-go - Scalable, fault-tolerant application-layer sharding for Go applications.
rpcx - Distributed pluggable RPC service framework like alibaba Dubbo.
sleuth - Library for master-less p2p auto-discovery and RPC between HTTP services (using ZeroMQ).
tendermint - 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.
go-finance - 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 - Query OFX servers and/or parse the responses (with example command-line client).
techan - Technical analysis library with advanced market analysis and trading strategies.
transaction - Embedded transactional database of accounts, running in multithreaded mode.
logutils - Utilities for slightly better logging in Go (Golang) extending the standard logger.
logxi - 12-factor app logger that is fast and makes you happy.
lumberjack - Simple rolling logger, implements io.WriteCloser.
mlog - Simple logging module for go, with 5 levels, an optional rotating logfile feature and stdout/stderr output.
onelog - Onelog is a dead simple but very efficient JSON logger. It is the fastest JSON logger out there in all scenario. Also, it is one of the logger with the lowest allocation.
ozzo-log - High performance logging supporting log severity, categorization, and filtering. Can send filtered log messages to various targets (e.g. console, network, mail).
seelog - Logging functionality with flexible dispatching, filtering, and formatting.
spew - Implements a deep pretty printer for Go data structures to aid in debugging.
stdlog - Stdlog is an object-oriented library providing leveled logging. It is very useful for cron jobs.
tail - 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 - Structured logger for net/context aware HTTP handlers with flexible dispatching.
goRecommend - Recommendation Algorithms library written in Go.
gorgonia - graph-based computational library like Theano for Go that provides primitives for building various machine learning and neural network algorithms.
shield - 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.
gopush-cluster - gopush-cluster is a go push server cluster.
gorush - Push notification server using APNs2 and google GCM.
guble - 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.
hub - A Message/Event Hub for Go applications, using publish/subscribe pattern with support for alias like rabbitMQ exchanges.
machinery - Asynchronous task queue/job queue based on distributed message passing.
mangos - Pure go implementation of the Nanomsg ("Scalable Protocols") with transport interoperability.
melody - 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 - Lightweight and high performance publish-subscribe and distributed queueing messaging system - this is the Go library.
nsq-event-bus - A tiny wrapper around NSQ topic and channel.
oplog - Generic oplog/replication system for REST APIs.
ether - Cross-platform Go package for sending and receiving ethernet frames.
ethernet - Package ethernet implements marshaling and unmarshaling of IEEE 802.3 Ethernet II frames and IEEE 802.1Q VLAN tags.
fasthttp - Package fasthttp is a fast HTTP implementation for Go, up to 10 times faster than net/http.
fortio - 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 - Package ftp implements a FTP client as described in RFC 959.
go-getter - Go library for downloading files or directories from various sources using a URL.
go-stun - Go implementation of the STUN client (RFC 3489 and RFC 5389).
gobgp - BGP implemented in the Go Programming Language.
golibwireshark - Package golibwireshark use libwireshark library to decode pcap file and analyse dissection data.
gopacket - Go library for packet processing with libpcap bindings.
kcptun - Extremely simple & fast udp tunnel based on KCP protocol.
lhttp - 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 - 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.
NFF-Go - Framework for rapid development of performant network functions for cloud and bare-metal (former YANFF).
peerdiscovery - Pure Go library for cross-platform local peer discovery using UDP multicast
portproxy - Simple TCP proxy which adds CORS support to API's which don't support it.
publicip - Package publicip returns your public facing IPv4 address (internet egress).
quic-go - An implementation of the QUIC protocol in pure Go.
raw - Package raw enables reading and writing data at the device driver level for a network interface.
gofrac - (goinstallable) fractions library for go with support for basic arithmetic.
gohistogram - Approximate histograms for data streams.
gonum/mat64 - The general purpose package for matrix computation. Package mat64 provides basic linear algebra operations for float64 matrices.
gonum/plot - gonum/plot provides an API for building and drawing plots in Go.
goraph - Pure Go graph theory library(data structure, algorith visualization).
gosl - Go scientific library for linear algebra, FFT, geometry, NURBS, numerical methods, probabilities, optimisation, differential equations, and more.
ode - Ordinary differential equation (ODE) solver which supports extended states and channel-based iteration stop conditions.
orb - 2D geometry types with clipping, GeoJSON and Mapbox Vector Tile support.
pagerank - Weighted PageRank algorithm implemented in Go.
PiHex - Implementation of the "Bailey-Borwein-Plouffe" algorithm for the hexadecimal number Pi.
sparse - Go Sparse matrix formats for linear algebra supporting scientific and machine learning applications, compatible with gonum matrix libraries.
stats - Statistics package with common functions missing from the Golang standard library.
streamtools - general purpose, graphical tool for dealing with streams of data.
TextRank - TextRank implementation in Golang with extendable features (summarization, weighting, phrase extraction) and multithreading (goroutine) support.
vectormath - Vectormath for Go, an adaptation of the scalar C functions from Sony's Vector Math library, as found in the Bullet-2.79 source code (currently inactive).
Security
Libraries that are used to help make your application more secure.
acmetool - ACME (Let's Encrypt) client tool with automatic renewal.
argon2pw - Argon2 password hash generation with constant-time password comparison.
autocert - Auto provision Let's Encrypt certificates and start a TLS server.
BadActor - In-memory, application-driven jailer built in the spirit of fail2ban.
Cameradar - Tool and library to remotely hack RTSP streams from surveillance cameras.
go-yara - Go Bindings for YARA, the "pattern matching swiss knife for malware researchers (and everyone else)".
goArgonPass - Argon2 password hash and verification designed to be compatible with existing Python and PHP implementations.
goSecretBoxPassword - A probably paranoid package for securely hashing and encrypting passwords.
lego - Pure Go ACME client library and CLI tool (for use with Let's Encrypt).
memguard - A pure Go library for handling sensitive values in memory.
nacl - Go implementation of the NaCL set of API's.
asn1 - Asn.1 BER and DER encoding library for golang.
bambam - generator for Cap'n Proto schemas from go.
colfer - Code generation for the Colfer binary format.
csvutil - High Performance, idiomatic CSV record encoding and decoding to native Go structures.
fwencoder - Fixed width file parser (encoding and decoding library) for Go.
go-capnproto - Cap'n Proto library and parser for go.
go-codec - High Performance, feature-Rich, idiomatic encode, decode and rpc library for msgpack, cbor and json, with runtime-based OR code-generation support.
gogoprotobuf - Protocol Buffers for Go with Gadgets.
goprotobuf - Go support, in the form of a library and protocol compiler plugin, for Google's protocol buffers.
jsoniter - High-performance 100% compatible drop-in replacement of "encoding/json".
mapstructure - Go library for decoding generic map values into native Go structures.
php_session_decoder - GoLang library for working with PHP session format and PHP Serialize/Unserialize functions.
structomap - Library to easily and dynamically generate maps from static structures.
structs - Library with support for converting structs to maps, struct keys/values to slices, and more.
Server Applications
algernon - HTTP/2 web server with built-in support for Lua, Markdown, GCSS and Amber.
Caddy - Caddy is an alternative, HTTP/2 web server that's easy to configure and use.
consul - Consul is a tool for service discovery, monitoring and configuration.
gostorm - GoStorm is a Go library that implements the communications protocol required to write Storm spouts and Bolts in Go that communicate with the Storm shells.
go-bind-plugin - go:generate tool for wrapping symbols exported by golang plugins (1.8 only).
go-cron - Simple Cron library for go that can execute closures or functions at varying intervals, from once a second to once a year on a specific date and time. Primarily for web applications and long running daemons.
go-dry - DRY (don't repeat yourself) package for Go.
go-excel - A simple and light reader to read a relate-db-like excel as a table.
go-funk - Modern Go utility library which provides helpers (map, find, contains, filter, chunk, reverse, ...).
go-health - Health package simplifies the way you add health check to your services.
go-httpheader - Go library for encoding structs into Header fields.
xferspdy - Xferspdy provides binary diff and patch library in golang.
xlsx - Library to simplify reading the XML format used by recent version of Microsoft Excel in Go programs.
Validation
Libraries for validation.
govalidator - Validators and sanitizers for strings, numerics, slices and structs.
govalidator - Validate Golang request data with simple rules. Highly inspired by Laravel's request validation.
ozzo-validation - Supports validation of various data types (structs, strings, maps, slices, etc.) with configurable and extensible validation rules specified in usual code constructs instead of struct tags.
validate - This package provides a framework for writing validations for Go applications.
validator - Go Struct and Field validation, including Cross Field, Cross Struct, Map, Slice and Array diving.
Version Control
Libraries for version control.
gh - Scriptable server and net/http middleware for GitHub Webhooks.
Florest - High-performance workflow based REST API framework.
Gem - Simple and fast web framework, friendly to REST API.
Gin - Gin is a web framework written in Go! It features a martini-like API with much better performance, up to 40 times faster. If you need performance and good productivity.
Gizmo - Microservice toolkit used by the New York Times.
go-json-rest - Quick and easy way to setup a RESTful JSON API.
go-relax - Framework of pluggable components to build RESTful API's.
goa - Framework for developing microservices based on the design of Ruby's Praxis.
Golax - A non Sinatra fast HTTP framework with support for Google custom methods, deep interceptors, recursion and more.
Golf - Golf is a fast, simple and lightweight micro-web framework for Go. It comes with powerful features and has no dependencies other than the Go Standard Library.
Gondola - The web framework for writing faster sites, faster.
gongular - Fast Go web framework with input mapping/validation and (DI) Dependency Injection.
Macaron - Macaron is a high productive and modular design web framework in Go.
mango - Mango is a modular web-application framework for Go, inspired by Rack, and PEP333.
Microservice - The framework for the creation of microservices, written in Golang.
neo - Neo is minimal and fast Go Web Framework with extremely simple API.
Resoursea - REST framework for quickly writing resource based services.
REST Layer - Framework to build REST/GraphQL API on top of databases with mostly configuration over code.
Revel - High-productivity web framework for the Go language.
rex - Rex is a library for modular development built upon gorilla/mux, fully compatible with net/http.
sawsij - lightweight, open-source web framework for building high-performance, data-driven web applications.
WebGo - A micro-framework to build web apps; with handler chaining, middleware and context injection. With standard library compliant HTTP handlers(i.e. http.HandlerFunc).
YARF - Fast micro-framework designed to build REST APIs and web services in a fast and simple way.
Zerver - Zerver is an expressive, modular, feature completed RESTful framework.
Middlewares
Actual middlewares
client-timing - An HTTP client for Server-Timing header.
Bxog - Simple and fast HTTP router for Go. It works with routes of varying difficulty, length and nesting. And he knows how to create a URL from the received parameters.
chi - Small, fast and expressive HTTP router built on net/context.
fasthttprouter - High performance router forked from httprouter. The first router fit for fasthttp.
FastRouter - a fast, flexible HTTP router written in Go.
Goji - Goji is a minimalistic and flexible HTTP request multiplexer with support for net/context.
GoRouter - GoRouter is a Server/API micro framwework, HTTP request router, multiplexer, mux that provides request router with middleware supporting net/context.
gowww/router - Lightning fast HTTP router fully compatible with the net/http.Handler interface.
httprouter - High performance router. Use this and the standard http handlers to form a very high performance web framework.
httptreemux - High-speed, flexible tree-based HTTP router for Go. Inspiration from httprouter.
lars - Is a lightweight, fast and extensible zero allocation HTTP router for Go used to create customizable frameworks.
medeina - Medeina is a HTTP routing tree based on HttpRouter, inspired by Roda and Cuba.
mux - Powerful URL router and dispatcher for golang.
ozzo-routing - An extremely fast Go (golang) HTTP router that supports regular expression route matching. Comes with full support for building RESTful APIs.
pat - Sinatra style pattern muxer for Go’s net/http library, by the author of Sinatra.
pure - Is a lightweight HTTP router that sticks to the std "net/http" implementation.
Siesta - Composable framework to write middleware and handlers.
vestigo - Performant, stand-alone, HTTP compliant URL Router for go web applications.
xmux - High performance muxer based on httprouter with net/context support.
errcheck - Errcheck is a program for checking for unchecked errors in Go programs.
gcvis - Visualise Go program GC trace data in real time.
Go Metalinter - Metalinter is a tool to automatically apply all static analysis tool and report their output in normalized form.
go-checkstyle - checkstyle is a style check tool like java checkstyle. This tool inspired by java checkstyle, golint. The style refered to some points in Go Code Review Comments.
go-cleanarch - go-cleanarch was created to validate Clean Architecture rules, like a The Dependency Rule and interaction between packages in your Go projects.
go-outdated - Console application that displays outdated packages.
GoCover.io - GoCover.io offers the code coverage of any golang package as a service.
goimports - Tool to fix (add, remove) your Go imports automatically.
GolangCI - GolangCI is an automated Golang code review service for GitHub pull requests. Service is open source and it's free for open source projects.
Gogs - A Self Hosted Git Service in the Go Programming Language.
gonative - Tool which creates a build of Go that can cross compile to all platforms while still using the Cgo-enabled versions of the stdlib packages.
govvv - “go build” wrapper to easily add version information into Go binaries.
gox - Dead simple, no frills Go cross compile tool.
goxc - build tool for Go, with a focus on cross-compiling and packaging.
grapes - Lightweight tool designed to distribute commands over ssh with ease.
GVM - GVM provides an interface to manage Go versions.
Hey - Hey is a tiny program that sends some load to a web application.
kala - Simplistic, modern, and performant job scheduler.
kcli - Command line tool for inspecting kafka topics/partitions/messages.
kubernetes - Container Cluster Manager from Google.
lstags - Tool and API to sync Docker images across different registries.
lwc - A live-updating version of the UNIX wc command.
manssh - manssh is a command line tool for managing your ssh alias config easily.
Moby - Collaborative project for the container ecosystem to assemble container-based systems.
Mora - REST server for accessing MongoDB documents and meta data.
ostent - collects and displays system metrics and optionally relays to Graphite and/or InfluxDB.
Packer - Packer is a tool for creating identical machine images for multiple platforms from a single source configuration.
Pewpew - Flexible HTTP command line stress tester.
Rodent - Rodent helps you manage Go versions, projects and track dependencies.
s3gof3r - Small utility/library optimized for high speed transfer of large objects into and out of Amazon S3.
Scaleway-cli - Manage BareMetal Servers from Command Line (as easily as with Docker).
sg - Benchmarks a set of HTTP endpoints (like ab), with possibility to use the reponse code and data between each call for specific server stress based on its previous response.
skm - SKM is a simple and powerful SSH Keys Manager, it helps you to manage your multiple SSH keys easily!
StatusOK - Monitor your Website and REST APIs.Get Notified through Slack, E-mail when your server is down or response time is more than expected.
traefik - Reverse proxy and load balancer with support for multiple backends.
Vegeta - HTTP load testing tool and library. It's over 9000!
webhook - Tool which allows user to create HTTP endpoints (hooks) that execute commands on the server.
Circuit - Circuit is a programmable platform-as-a-service (PaaS) and/or Infrastructure-as-a-Service (IaaS), for management, discovery, synchronization and orchestration of services and hosts comprising cloud applications.
Juju - Cloud-agnostic service deployment and orchestration - supports EC2, Azure, Openstack, MAAS and more.
Leaps - Pair programming service using Operational Transforms.
limetext - Lime Text is a powerful and elegant text editor primarily developed in Go that aims to be a Free and open-source software successor to Sublime Text.
LiteIDE - LiteIDE is a simple, open source, cross-platform Go IDE.
mockingjay - Fake HTTP servers and consumer driven contracts from one configuration file. You can also make the server randomly misbehave to help do more realistic performance tests.
myLG - Command Line Network Diagnostic tool written in Go.
naclpipe - Simple NaCL EC25519 based crypto pipe tool written in Go.
nes - Nintendo Entertainment System (NES) emulator written in Go.
rkt - App Container runtime that integrates with init systems, is compatible with other container formats like Docker, and supports alternative execution engines like KVM.
Seaweed File System - Fast, Simple and Scalable Distributed File System with O(1) disk seek.
shell2http - Executing shell commands via http server (for prototyping or remote control).
toto - Simple proxy server written in Go language, can be used together with browser.
toxiproxy - Proxy to simulate network and system conditions for automated tests.
tsuru - Extensible and open source Platform as a Service software.
vFlow - High-performance, scalable and reliable IPFIX, sFlow and Netflow collector.
websysd - Web based process manager (like Marathon or Upstart).
wellington - Sass project management tool, extends the language with sprite functions (like Compass).
Resources
Where to discover new Go libraries.
Benchmarks
autobench - Framework to compare the performance between different Go versions.
go-benchmark-app - Powerful HTTP-benchmark tool mixed with Аb, Wrk, Siege tools. Gathering statistics and various parameters for benchmarks and comparison results.
go-benchmarks - Few miscellaneous Go microbenchmarks. Compare some language features to alternative approaches.