Awesome Go
A curated list of awesome Go frameworks, libraries and software. Inspired by awesome-python.
Contributing
Please take a quick gander at the contribution guidelines first. Thanks to all contributors; you rock!
Join us on Slack to chat with other awesome-go maintainers!
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/Music
Libraries for manipulating audio.
-
flac - A native Go FLAC decoder.
-
go-sox - libsox bindings for go.
-
PortAudio - Go bindings for the PortAudio audio I/O library.
-
portmidi - Go bindings for PortMidi.
-
taglib - Go bindings for taglib.
-
vorbis - A "native" Go Vorbis decoder (uses CGO, but has no dependencies).
-
waveform - Go package capable of generating waveform images from audio streams.
Authentication & OAuth
Libraries for implementing authentications schemes.
-
Go-AWS-Auth - AWS (Amazon Web Services) request signing library.
-
go-jose - A fairly complete implementation of the JOSE working group's JSON Web Token, JSON Web Signatures, and JSON Web Encryption specs.
-
go.auth - Authentication API for Go web applications.
-
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 provides out of the box.
-
httpauth - HTTP Authentication middleware.
-
jwt-go - Golang implementation of JSON Web Tokens (JWT).
-
oauth2 - Successor of goauth2. Generic OAuth 2.0 package that comes with JWT, Google APIs, Compute Engine and App Engine support.
-
osin - Golang OAuth2 server library.
-
permissions2 - Library for keeping track of users, login states and permissions. Uses secure cookies and bcrypt.
-
yubigo - a 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
-
cli-init - The easy way to start building Golang command line application.
-
cobra - A Commander for modern Go CLI interactions
-
codegangsta/cli - A small package for building command line apps in Go.
-
go-flags - go command line option parser
-
kingpin - A command line and flag parser supporting sub commands.
-
liner - A Go readline-like library for command-line interfaces.
-
mitchellh/cli - A Go library for implementing command-line interfaces.
-
readline - A pure golang implementation that provide most of features in GNU-Readline under MIT license.
-
ukautz/clif - A small command line interface framework.
Advanced Console UIs
Libraries for building Console Applications and Console User Interfaces
-
chalk - Intuitive package for prettifying terminal/console output.
-
color - Versatile package for colored terminal output.
-
go-colortext - Go library for color output in terminals.
-
gocui - Minimalist Go library aimed at creating Console User Interfaces.
-
gommon/color - Style terminal text.
-
termbox-go - Termbox is a library for creating cross-platform text-based interfaces.
-
termtables - A Go port of the Ruby library terminal-tables for simple ASCII table generation as well as providing markdown and HTML output
-
termui - Go terminal dashboard based on termbox-go and inspired by blessed-contrib.
Configuration
Libraries for configuration parsing
-
config - JSON or YAML configuration wrapper with environment variables and flags parsing.
-
env - Parse environment variables to Go structs (with defaults).
-
envcfg - Un-marshaling environment variables to Go structs.
-
envconf - Configuration from environment
-
envconfig - Read your configuration from environment variables.
-
gofigure - Go application configuration made easy
-
ini - Go package for read and write INI files
-
mini - A golang package for parsing ini-style configuration files
-
viper - Go configuration with fangs
Continuous Integration
Tools for help with continuous integration
-
goveralls - Go integration for Coveralls.io continuous code coverage tracking system.
-
overalls - Multi-Package go project coverprofile for tools like goveralls
CSS Preprocessors
Libraries for preprocessing CSS files
-
c6 - High performance SASS compatible-implementation compiler written in Go
-
gcss - Pure Go CSS Preprocessor.
Data Structures
Generic datastructures and algorithms in Go.
-
bitset - Go package implementing bitsets.
-
bloom - Bloom filters implemented in Go.
-
boomfilters - probabilistic data structures for processing continuous, unbounded streams
-
cuckoofilter - Cuckoo filter: a good alternative to a counting bloom filter implemented in Go.
-
encoding - Integer Compression Libraries for Go.
-
go-datastructures - a collection of useful, performant, and thread-safe data structures
-
golang-set - Thread-Safe and Non-Thread-Safe high-performance sets for Go.
-
goskiplist - A skip list implementation in Go.
-
mafsa - MA-FSA implementation with Minimal Perfect Hashing
-
skiplist - Skiplist implementation in Go
-
trie - Trie implementation in Go
-
ttlcache - An in-memory LRU string-interface{} map with expiration for golang
-
willf/bloom - Go package implementing Bloom filters.
Database
Databases implemented in Go.
-
bolt - A low-level key/value database for Go.
-
cache2go - An in-memory key:value cache which supports automatic invalidation based on timeouts.
-
couchcache - A RESTful caching micro-service backed by Couchbase server.
-
diskv - A home-grown disk-backed key-value store.
-
forestdb - Go bindings for ForestDB.
-
GCache - Cache library with support for expirable Cache, LFU, LRU and ARC.
-
go-cache - An in-memory key:value store/cache (similar to Memcached) library for Go, suitable for single-machine applications.
-
goleveldb - An implementation of the LevelDB key/value database in the Go.
-
groupcache - Groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases.
-
influxdb - Scalable datastore for metrics, events, and real-time analytics
-
ledisdb - Ledisdb is a high performance NoSQL like Redis based on LevelDB.
-
levigo - Levigo is a Go wrapper for LevelDB.
-
tidb - TiDB is a distributed SQL database. Inspired by the design of Google F1.
-
tiedot - Your NoSQL database powered by Golang.
Database tools.
-
go-mysql - A go toolset to handle MySQL protocol and replication.
-
go-mysql-elasticsearch - Sync your MySQL data into Elasticsearch automatically.
-
goose - Database migration tool. You can manage your database's evolution by creating incremental SQL or Go scripts.
-
kingshard - kingshard is a high performance proxy for MySQL powered by Golang.
-
myreplication - MySql binary log replication listener. Support statement and row based replication.
-
orchestrator - MySQL replication topology manager & visualizer
-
pgweb - A web-based PostgreSQL database browser
-
pravasan - Simple Migration tool - currently for MySQL but planning to support soon for Postgres, SQLite, MongoDB, etc.,
-
sql-migrate - Database migration tool. Allows embedding migrations into the application using go-bindata.
-
vitess - 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.
-
Dotsql - Go library that helps you keep sql files in one place and use it with ease.
-
goqu - An idiomatic SQL builder and query library.
-
scaneo - Generate Go code to convert database rows into arbitrary structs.
-
Squirrel - Go library that helps you build SQL queries.
Database Drivers
Libraries for connecting and operating databases.
Date & Time
Libraries for working with dates and times.
-
now - Now is a time toolkit for golang.
-
timeutil - Useful extensions (Timedelta, Strftime, ...) to the golang's time package.
Distributed Systems
Packages that help with building Distributed Systems.
-
flowgraph - MPI-style ready-send coordination layer.
-
go-jump - A port of Google's "Jump" Consistent Hash function.
-
gorpc - Simple, fast and scalable RPC library for high load.
-
grpc-go - The Go language implementation of gRPC. HTTP/2 based RPC.
-
raft - Golang implementation of the Raft consensus protocol, by HashiCorp.
-
torrent - BitTorrent client package.
-
dht - BitTorrent Kademlia DHT implementation.
Email
Libraries that implement email creation and sending
-
douceur - CSS inliner for your HTML emails.
-
email - A robust and flexible email library for Go.
-
go-dkim - A DKIM library, to sign & verify email.
-
Gomail - Gomail is a very simple and powerful package to send emails.
-
MailHog - Email and SMTP testing with web and API interface
-
SendGrid - SendGrid's Go library for sending email
-
smtp - SMTP server protocol state machine
Embeddable Scripting Languages
Embedding other languages inside your go code
-
agora - Dynamically typed, embeddable programming language in Go
-
anko - Scriptable interpreter written in Go
-
gisp - Simple LISP in Go
-
go-duktape - Duktape JavaScript engine bindings for Go
-
go-lua - A port of the Lua 5.2 VM to pure Go
-
go-python - naive go bindings to the CPython C-API
-
golua - Go bindings for Lua C API
-
gopher-lua - a Lua 5.1 VM and compiler written in Go
-
otto - A JavaScript interpreter written in Go
-
purl - Perl 5.18.2 embedded in Go
Financial
Packages for accounting and finance
-
accounting - money and currency formatting for golang
-
decimal - Arbitrary-precision fixed-point decimal numbers
Forms
Libraries for working with forms.
-
bind - Bind form data to any Go values
-
binding - Binds form and JSON data from net/http Request to struct.
-
formam - decode form's values into a struct.
-
forms - A framework-agnostic library for parsing and validating form/JSON data which supports multipart forms and files.
-
nosurf - A CSRF protection middleware for Go.
Game Development
Awesome game development libraries.
-
GarageEngine - 2d game engine written in Go working on OpenGL.
-
glop - Glop (Game Library Of Power) is a fairly simple cross-platform game library.
-
go-astar - Go implementation of the A* path finding algorithm
-
go-collada - Go package for working with the Collada file format.
-
go-sdl2 - Go bindings for the Simple DirectMedia Layer.
-
go3d - A performance oriented 2D/3D math package for Go
-
gonet - A game server skeleton implemented with golang
-
Leaf - A lightweight game server framework
Generation & Generics
Tools to enhance the language with features like generics via code generation
-
gen - Code generation tool for ‘generics’-like functionality.
-
go-linq - .NET LINQ-like query methods for Go.
-
pkgreflect - A Go preprocessor for package scoped reflection.
GUI
Libraries for building GUI Applications
-
go-gtk - Go bindings for GTK
-
go-qml - QML support for the Go language
-
gosx-notifier - OSX Desktop Notifications library for Go.
-
gotk3 - Go bindings for GTK3.
-
gxui - A Go cross platform UI library.
-
ui - Platform-native GUI library for Go.
-
walk - Windows application library kit for Go.
Hardware
Libraries, tools, and tutorials for interacting with hardware.
See go-hardware for a comprehensive list.
Images
Libraries for manipulating images.
-
bimg - Small package for fast and efficient image processing using libvips
-
geopattern - Create beautiful generative image patterns from a string.
-
gift - Package of image processing filters.
-
go-cairo - Go binding for the cairo graphics library.
-
go-gd - Go binding for GD library
-
go-nude - Nudity detection with Go.
-
go-opencv - Go bindings for OpenCV.
-
go-webcolors - Port of webcolors library from Python to Go.
-
imagick - Go binding to ImageMagick's MagickWand C API.
-
imaginary - Fast and simple HTTP microservice for image resizing
-
imaging - Simple Go image processing package.
-
img - A selection of image manipulation tools.
-
picfit - An image resizing server written in Go
-
resize - Image resizing for the Go with common interpolation methods.
-
rez - Image resizing in pure Go and SIMD.
-
smartcrop - Finds good crops for arbitrary images and crop sizes
-
svgo - Go Language Library for SVG generation.
-
tga - Package tga is a TARGA image format decoder/encoder.
Logging
Libraries for generating and working with log files.
-
glog - Leveled execution logs for Go.
-
go-log - Log lib supports level and multi handlers.
-
go-log - A log4j implementation in Go.
-
go-logger - Simple logger of Go Programs, with level handlers.
-
log-voyage - Full-featured logging saas written in golang.
-
logex - An golang log lib, supports tracking and level, wrap by standard log lib
-
logger - Minimalistic logging library for Go.
-
logrus - a structured logger for Go.
-
logrusly - logrus plug-in to send errors to a Loggly.
-
logutils - Utilities for slightly better logging in Go (Golang) extending the standard logger.
-
logxi - A 12-factor app logger that is fast and makes you happy.
-
lumberjack - Simple rolling logger, implements io.WriteCloser.
-
mlog - A simple logging module for go, with 5 levels, an optional rotating logfile feature and stdout/stderr output.
-
seelog - logging functionality with flexible dispatching, filtering, and formatting.
-
stdlog - Stdlog is an object-oriented library providing leveled logging. It is very useful for cron jobs.
-
tail - A Go package striving to emulate the features of the BSD tail program.
Machine Learning
Libraries for Machine Learning.
-
bayesian - Naive Bayesian Classification for Golang.
-
CloudForest - Fast, flexible, multi-threaded ensembles of decision trees for machine learning in pure Go.
-
go-fann - Go bindings for Fast Artificial Neural Networks(FANN) library.
-
go-galib - Genetic Algorithms library written in Go / golang
-
go-pr - Pattern recognition package in Go lang.
-
gobrain - Neural Networks written in go
-
godist - Various probability distributions, and associated methods.
-
GoLearn - General Machine Learning library for Go.
-
golinear - liblinear bindings for Go
-
goml - On-line Machine Learning in Go
-
goRecommend - Recommendation Algorithms library written in Go.
-
libsvm - libsvm golang version derived work based on LIBSVM 3.14.
-
mlgo - This project aims to provide minimalistic machine learning algorithms in Go.
-
neural-go - A multilayer perceptron network implemented in Go, with training via backpropagation.
-
probab - Probability distribution functions. Bayesian inference. Written in pure Go.
-
regommend - Recommendation & collaborative filtering engine
-
shield - Bayesian text classifier with flexible tokenizers and storage backends for Go
Messaging
Libraries that implement messaging systems
-
dbus - Native Go bindings for D-Bus.
-
EventBus - The lightweight event bus with async compatibility.
-
go-notify - Native implementation of the freedesktop notification spec.
-
go-nsq - the official Go package for NSQ
-
gopush-cluster - gopush-cluster is a go push server cluster.
-
machinery - An asynchronous task queue/job queue based on distributed message passing.
-
NATS - A lightweight and highly performant publish-subscribe and distributed queueing messaging system.
-
oplog - A generic oplog/replication system for REST APIs
-
pubsub - A simple pubsub package for go.
-
sarama - A Go library for Apache Kafka.
-
Uniqush-Push - A redis backed unified push service for server-side notifications to mobile devices.
-
zmq4 - A Go interface to ZeroMQ version 4. Also available for version 3 and version 2.
Miscellaneous
These libraries were placed here because none of the other categories seemed to fit
-
autoflags - Go package to automatically define command line flags from struct fields.
-
browscap_go - GoLang Library for Browser Capabilities Project.
-
go-multierror - A Go (golang) package for representing a list of errors as a single error.
-
gopsutil - A cross-platform library for retrieving process and system utilization(CPU, Memory, Disks, etc).
-
gosms - Your own local SMS gateway in Go that can be used to send SMS
-
jobs - A persistent and flexible background jobs library.
-
notify - File system event notification library with simple API, similar to os/signal.
-
xkg - X Keyboard Grabber
-
xstrings - A collection of useful string functions ported from other languages.
Natural Language Processing
Libraries for working with human languages.
-
go-eco - Similarity, dissimilarity and distance matrices; diversity, equitability and inequality measures; species richness estimators; coenocline models.
-
go-nlp - Utilities for working with discrete probability distributions and other tools useful for doing NLP work.
-
go-stem - Implementation of the porter stemming algorithm.
-
golibstemmer - Go bindings for the snowball libstemmer library including porter 2
-
gounidecode - Unicode transliterator (also known as unidecode) for Go
-
icu - Cgo binding for icu4c C library detection and conversion functions. Guaranteed compatibility with version 50.1.
-
libtextcat - Cgo binding for libtextcat C library. Guaranteed compatibility with version 2.2.
-
MMSEGO - This is a GO implementation of MMSEG which a Chinese word splitting algorithm.
-
paicehusk - Golang implementation of the Paice/Husk Stemming Algorithm
-
porter - This is a fairly straighforward port of Martin Porter's C implementation of the Porter stemming algorithm.
-
porter2 - Really fast Porter 2 stemmer.
-
segment - A Go library for performing Unicode Text Segmentation as described in Unicode Standard Annex #29
-
snowball - Snowball stemmer port (cgo wrapper) for Go. Provides word stem extraction functionality Snowball native.
-
stemmer - Stemmer packages for Go programming language. Includes English and German stemmers.
-
textcat - A Go package for n-gram based text categorization, with support for utf-8 and raw text
Networking
Libraries for working with various layers of the network
-
arp - Package arp implements the ARP protocol, as described in RFC 826.
-
buffstreams - Streaming protocolbuffer data over TCP made easy
-
canopus - CoAP Client/Server implementation (RFC 7252)
-
dhcp6 - Package dhcp6 implements a DHCPv6 server, as described in RFC 3315.
-
dns - Go library for working with DNS
-
ethernet - Package ethernet implements marshaling and unmarshaling of IEEE 802.3 Ethernet II frames and IEEE 802.1Q VLAN tags.
-
ftp - Package ftp implements a FTP client as described in RFC 959.
-
go-stun - A go implementation of the STUN client (RFC 3489 and RFC 5389).
-
gopacket - A Go library for packet processing with libpcap bindings
-
gopcap - A Go wrapper for libpcap
-
gosnmp - Native Go library for performing SNMP actions
-
gotcp - A Go package for quickly writing tcp applications
-
graval - An experimental FTP server framework.
-
linkio - Network link speed simulation for Reader/Writer interfaces
-
mdns - Simple mDNS (Multicast DNS) client/server library in Golang
-
portproxy - Simple TCP proxy which adds CORS support to API's which don't support it.
-
raw - Package raw enables reading and writing data at the device driver level for a network interface.
-
sftp - Package sftp implements the SSH File Transfer Protocol as described in https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt.
-
tcp_server - A Go library for building tcp servers faster.
-
utp - Go uTP micro transport protocol implementation.
OpenGL
Libraries for using OpenGL in Go.
-
gl - Go bindings for OpenGL (generated via glow).
-
glfw - Go bindings for GLFW 3.
-
goxjs/gl - Go cross-platform OpenGL bindings (OS X, Linux, Windows, browsers, iOS, Android).
-
goxjs/glfw - Go cross-platform glfw library for creating an OpenGL context and receiving events.
-
mathgl - Pure Go math package specialized for 3D math, with inspiration from GLM.
ORM
Libraries that implement Object-Relational Mapping or datamapping techniques.
-
beedb - A go ORM,support database/sql interface,pq/mysql/sqlite
-
beego orm - A powerful orm framework for go.
-
go-store - A simple and fast Redis backed key-value store library for Go.
-
gomodel - A lightweight, fast, orm-like library helps interactive with database.
-
GORM - The fantastic ORM library for Golang, aims to be developer friendly.
-
gorp - Go Relational Persistence, ORM-ish library for Go.
-
hood - Database agnostic ORM for Go.
-
QBS - Stands for Query By Struct. A Go ORM.
-
upper.io/db - Single interface for interacting with different data sources through the use of adapters that wrap mature database drivers.
-
Xorm - Simple and powerful ORM for Go.
-
Zoom - A blazing-fast datastore and querying engine built on Redis.
Package Management
Libraries for package and dependency management.
-
gigo - PIP-like dependency tool for golang, with support for private repositories and hashes.
-
godep - dependency tool for go, godep helps build packages reproducibly by fixing their dependencies.
-
gom - Go Manager - bundle for go.
-
goop - A simple dependency manager for Go (golang), inspired by Bundler.
-
gopm - Go Package Manager
-
gpm - Barebones dependency manager for Go.
-
johnny-deps - Minimal dependency version using Git
-
nut - Vendor Go dependencies
-
VenGO - create and manage exportable isolated go virtual environments
Resource Embedding
-
go-bindata - Package that converts any file into managable Go source code.
-
go-resources - Unfancy resources embedding with Go.
-
go.rice - go.rice is a Go package that makes working with resources such as html,js,css,images and templates very easy.
-
vfsgen - Generates a vfsdata.go file that statically implements the given virtual filesystem.
Science and Data Analysis
Libraries for scientific computing and data analyzing.
-
blas - Implementation of BLAS (Basic Linear Algebra Subprograms)
-
chart - Simple Chart Plotting library for Go. Supports many graphs types.
-
evaler - A simple floating point arithmetic expression evaluator
-
ewma - Exponentially-weighted moving averages
-
geom - 2D geometry for golang
-
go-fn - Mathematical functions written in Go language, that are not covered by math pkg
-
go-gt - Graph theory algorithms written in "Go" language
-
go.matrix - linear algebra for go (has been stalled)
-
gocomplex - A complex number library for the Go programming language.
-
gofrac - A (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 - A pure Go graph theory library(data structure, algorith visualization)
-
gostat - A statistics library for the go language
-
mudlark-go - A collection of packages providing (hopefully) useful code for use in software using Google's Go programming language.
-
pagerank - Weighted PageRank algorithm implemented in Go
-
streamtools - general purpose, graphical tool for dealing with streams of data.
-
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.
-
BadActor - An in-memory, application-driven jailer built in the spirit of fail2ban
-
go-yara - Go Bindings for YARA, the "pattern matching swiss knife for malware researchers (and everyone else)"
Serialization
Libraries and tools for binary serialization
-
cbor - Golang library for working with cbor binary format
-
go-capnproto - Cap'n Proto library and parser for go
-
bambam - generator for Cap'n Proto schemas from go.
-
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.
-
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.
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.
-
etcd - A highly-available key value store for shared configuration and service discovery.
-
nsq - A realtime distributed messaging platform
-
yakvs - A small, networked, in-memory key-value store.
Template Engines
Libraries and tools for templating and lexing.
-
ace - Ace is an HTML template engine for Go, inspired by Slim and Jade. Ace is a refinement of Gold.
-
amber - Amber is an elegant templating engine for Go Programming Language It is inspired from HAML and Jade.
-
damsel - Markup language featuring html outlining via css-selectors, extensible via pkg html/template and others.
-
ego - A lightweight templating language that lets you write templates in Go. Templates are translated into Go and compiled.
-
kasia.go - Templating system for HTML and other text documents - go implementation.
-
mustache - A Go implementation of the Mustache template language.
-
pongo2 - A Django-like template-engine for Go.
-
raymond - A complete handlebars implementation in Go.
-
Razor - Razor view engine for Golang.
-
Soy - Closure templates (aka Soy templates) for Go, following the official spec
Testing
Libraries for testing codebases and generating test data.
Text Processing
Libraries for parsing and manipulating texts.
- Specific Formats
-
blackfriday - Markdown processor in Go
-
github_flavored_markdown - GitHub Flavored Markdown renderer with fenced code block highlighting, clickable header anchor links.
-
bluemonday - HTML Sanitizer
-
enca - Minimal cgo bindings for libenca.
-
genex - Count and expand Regular Expressions into all matching Strings
-
go-humanize - Formatters for time, numbers, and memory size to human readable format.
-
go-nmea - NMEA parser library for the Go language.
-
go-pkg-rss - This package reads RSS and Atom feeds and provides a caching mechanism that adheres to the feed specs.
-
go-pkg-xmlx - Extension to the standard Go XML package. Maintains a node tree that allows forward/backwards browsing and exposes some simple single/multi-node search functions.
-
go-runewidth - Functions to get fixed width of the character or string.
-
gographviz - Parses the Graphviz DOT language.
-
gommon/gytes - Format bytes to string.
-
gonameparts - Parses human names into individual name parts
-
GoQuery - GoQuery brings a syntax and a set of features similar to jQuery to the Go language.
-
goregen - A library for generating random strings from regular expressions.
-
guesslanguage - Functions to determine the natural language of a unicode text.
-
mxj - Encode / decode XML as JSON or map[string]interface{}; extract values with dot-notation paths and wildcards. Replaces x2j and j2x packages.
-
slug - URL-friendly slugify with multiple languages support.
-
Slugify - A Go slugify application that handles string.
-
toml - TOML configuration format (encoder/decoder with reflection).
- Utility
-
gotabulate - Easily pretty-print your tabular data with Go.
-
kace - Common case conversions covering common initialisms.
-
parth - URL path segmentation parsing.
-
xurls - Extract urls from text
Third-party APIs
Libraries for accessing third party APIs.
-
anaconda - A Go client library for the Twitter 1.1 API
-
aws-sdk-go - The official AWS SDK for the Go programming language. Caution: The SDK is currently in the process of being developed, and not everything may be working fully yet.
-
brewerydb - Go library for accessing the BreweryDB API.
-
facebook - Go Library that supports the Facebook Graph API
-
gads - Google Adwords Unofficial API
-
gami - Go library for Asterisk Manager Interface.
-
geo-golang - Go Library to access Google Maps, MapQuest, Nominatim, OpenCage, HERE and Bing geocoding / reverse geocoding APIs.
-
github - Go library for accessing the GitHub API.
-
go-marathon - A Go library for interacting with Mesosphere's Marathon PAAS
-
goamz - Popular fork of goamz which adds some missing API calls to certain packages.
-
GoMusicBrainz - a Go MusicBrainz WS2 client library
-
google - Auto-generated Google APIs for Go
-
google-analytics - A simple wrapper for easy google analytics reporting
-
google-cloud - Google Cloud APIs Go Client Library
-
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.
-
hipchat - This project implements a golang client library for the Hipchat API.
-
hipchat (xmpp) - A golang package to communicate with HipChat over XMPP.
-
mixpanel - Mixpanel is a library for tracking events and sending Mixpanel profile updates to Mixpanel from your go applications.
-
pushover - Go wrapper for the Pushover API.
-
rrdaclient - Go Library to access statdns.com API, which is in turn RRDA API. DNS Queries over HTTP.
-
shopify - Go Library to make CRUD request to the Shopify API.
-
slack - Slack API in Go.
-
smite - Go package to wraps access to the Smite game API.
-
snapchat - Go wrapper for the snapchat API
-
spotify - Go Library to access Spotify WEB API.
-
steam - Go Library to interact with Steam game servers.
-
stripe - Go client for the Stripe API
-
telebot - Telegram bot framework written in Go.
-
TheMovieDb - A simple golang package to communicate with themoviedb.org
-
translate - Go online translation package
-
tumblr - Go wrapper for the Tumblr v2 API.
Utilities
General utilities and tools to make your life easier.
-
coop - Cheat sheet for some of the common concurrent flows in Go.
-
delve - Go debugger.
-
fastlz - Wrap over FastLz (free, open-source, portable real-time compression library) for GoLang.
-
filetype - Small package to infer the file type checking the magic numbers signature.
-
go-cron - A 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-debug - Conditional debug logging for Golang libraries & applications
-
go-dry - DRY (don't repeat yourself) package for Go.
-
go-rate - A timed rate limiter for Go
-
go-underscore - A useful collection of helpfully functional Go collection utilities.
-
goback - Go simple exponential backoff package.
-
godaemon - Utility to write daemons
-
godotenv - A Go port of Ruby's dotenv library (Loads environment variables from
.env
.)
-
godropbox - Common libraries for writing Go services/applications from Dropbox.
-
gohper - Various tools/modules help for development.
-
golarm - Fire alarms with system events.
-
gopencils - Small and simple package to easily consume REST APIs.
-
goplaceholder - a small golang lib to generate placeholder images
-
goreq - Minimal and simple request library for Go language.
-
goreq - An enhanced simplified HTTP client based on gorequest.
-
gorequest - Simplified HTTP client with rich features for Go.
-
gotenv - Load environment variables from
.env
or any io.Reader
in Go
-
htcat - Parallel and Pipelined HTTP GET Utility
-
httpcontrol - Package httpcontrol allows for HTTP transport level control around timeouts and retries.
-
hystrix-go - Imprements Hystrix patterns of programmer-defined fallbacks aka circuit breaker.
-
jsonf - Console tool for highlighted formatting and struct query fetching JSON.
-
jsongo - Fluent API to make it easier to create Json objects.
-
lrserver - LiveReload server for Go
-
mp - A simple cli email parser. It currently takes stdin and outputs JSON.
-
multitick - Multiplexor for aligned tickers
-
netbug - Easy remote profiling of your services.
-
ngrok - Introspected tunnels to localhost.
-
okrun - go run error steamroller
-
panicparse - Groups similar goroutines and colorizes stack dump.
-
peco - Simplistic interactive filtering tool
-
pester - Go HTTP client calls with retries, backoff, and concurrency
-
pm - Process (i.e. goroutine) manager with an HTTP API
-
profile - Simple profiling support package for Go
-
request - Go HTTP Requests for Humans™.
-
robustly - Runs functions resiliently, catching and restarting panics
-
scheduler - Cronjobs scheduling made easy.
-
sling - Go HTTP requests builder for API clients.
-
spinner - Go package to easily provide a terminal spinner with options.
-
sqlx - provides a set of extensions on top of the excellent built-in database/sql package
-
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
-
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
-
git2go - Go bindings for libgit2.
-
go-vcs - manipulate and inspect VCS repositories in Go.
-
hgo - Hgo is a collection of Go packages providing read-access to local Mercurial repositories.
Video
Libraries for manipulating video.
-
aac/h264 - Golang aac/h264 encoder and decoder.
-
gmf - Go bindings for FFmpeg av* libraries.
-
goav - Comphrensive Go bindings for FFmpeg.
-
gst - Go bindings for GStreamer.
Web Frameworks
Full stack web frameworks.
-
Beego - beego is an open-source, high-performance web framework for the Go programming language.
-
Bone - Lightning Fast HTTP Multiplexer.
-
Echo - A fast HTTP router (zero memory allocation) and micro web framework in Go.
-
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.
-
Glue - Robust Go and Javascript Socket Library (Alternative to Socket.io)
-
go-json-rest - A quick and easy way to setup a RESTful JSON API
-
go-relax - A framework of pluggable components to build RESTful API's
-
go-rest - A small and evil REST framework for Go
-
go-socket.io - socket.io library for golang, a realtime application framework.
-
Goat - A minimalistic REST API server in Go
-
gocraft/web - A mux and middleware package in Go.
-
Goji - Goji is a minimalistic web framework for Golang that's high in antioxidants.
-
Gondola - The web framework for writing faster sites, faster
-
goose - Server Sent Events in Go
-
Gorilla - Gorilla is a web toolkit for the Go programming language.
-
httprouter - A high performance router. Use this and the standard http handlers to form a very high performance web framework.
-
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.
-
Martini - Martini is a powerful package for quickly writing modular web applications/services in Golang.
-
medeina - Medeina is a HTTP routing tree based on HttpRouter, inspired by Roda and Cuba.
-
mux - A powerful URL router and dispatcher for golang.
-
neo - Neo is minimal and fast Go Web Framework with extremely simple API.
-
pat - Sinatra style pattern muxer for Go’s net/http library, by the author of Sinatra.
-
Resoursea - A REST framework for quickly writing resource based services.
-
Revel - A 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.
-
Siesta - Composable framework to write middleware and handlers
-
tango - Micro & pluggable web framework for Go.
-
tigertonic - A Go framework for building JSON web services inspired by Dropwizard
-
traffic - Sinatra inspired regexp/pattern mux and web framework for Go.
-
web.go - A simple framework to write webapps in Go.
-
Zerver - Zerver is a expressive, modular, feature completed RESTful framework.
-
zeus - A very simple and fast HTTP router for Go.
Middlewares
Actual middlewares
-
CORS - Easily add CORS capabilities to your API
-
formjson - Transparently handle JSON input as a standard form POST
-
Tollbooth - Rate limit HTTP request handler
-
XFF - Handle
X-Forwarded-For
header and friends
Libraries for creating HTTP middlewares
-
alice - Painless middleware chaining for Go.
-
catena - http.Handler wrapper catenation (same API as "chain").
-
chain - Handler wrapper chaining with scoped data (net/context-based "middleware").
-
go-wrap - Small middlewares package for net/http.
-
interpose - Minimalist net/http middleware for golang
-
muxchain - Lightweight middleware for net/http.
-
negroni - Idiomatic HTTP middleware for Golang.
-
render - Go package for easily rendering JSON, XML, and HTML template responses.
-
stats - A Go middleware that stores various information about your web application.
Tools
Go software and plugins.
Code Analysis
-
doc - Go documentation tool that produces an alternative doc format.
-
dupl - A tool for code clone detection.
-
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.
-
goast-viewer - Web based Golang AST visualizer.
-
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.
-
GoLint - Golint is a linter for Go source code.
-
Golint online - Lints online Go source files on GitHub, Bitbucket and Google Project Hosting using the golint package.
-
gostatus - A command line tool, shows the status of repositories that contain Go packages.
-
validate - Automatically validates struct fields with tags.
Editor Plugins
-
go-lang-idea-plugin Go plugin for IntelliJ IDEA.
-
go-plus - Go (Golang) Package For Atom That Adds Autocomplete, Formatting, Syntax Checking, Linting and Vetting
-
gocode - An autocompletion daemon for the Go programming language
-
GoSublime - A Golang plugin collection for the text editor SublimeText 2 providing code completion and other IDE-like features.
-
velour - An IRC client for the acme editor.
-
vim-compiler-go - A Vim plugin to highlight syntax errors on save.
-
vim-go - Go development plugin for Vim.
-
Watch - Runs a command in an acme win on file changes.
Go Tools
-
colorgo - A wrapper around
go
command for colorized go build
output.
-
go-pkg-complete - Bash completion for go and wgo.
Software Packages
Software written in Go.
DevOps Tools
-
aptly - aptly is a Debian repository management tool
-
awsenv - a small binary that loads Amazon (AWS) environment variables for a profile
-
Boom - Boom is a tiny program that sends some load to a web application.
-
dogo - Monitoring changes in the source file and automatically compile and run (restart).
-
EasySSH - Golang package for easy remote execution through SSH and SCP downloading.
-
gaudi - Gaudi automates the setup of isolated and decoupled dev environments.
-
Go Metrics - Go port of Coda Hale's Metrics library: https://github.com/codahale/metrics.
-
go-selfupdate - Enable your Go applications to self update.
-
gobrew - gobrew lets you easily switch between multiple versions of go.
-
godbg - Web-based gdb front-end application.
-
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.
-
gox - A dead simple, no frills Go cross compile tool.
-
goxc - build tool for Go, with a focus on cross-compiling and packaging.
-
GVM - GVM provides an interface to manage Go versions.
-
hk - Heroku command-line interface in Go.
-
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.
-
Rodent - Rodent helps you manage Go versions, projects and track dependencies.
- [Vegeta] (https://github.com/tsenart/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
-
Wide - A Web-based IDE for Teams using Golang.
Other Software
-
boxed - Dropbox based blog engine
-
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.
-
Comcast - Simulate bad network connections
-
confd - Manage local application configuration files using templates and data from etcd or consul.
-
Docker - An open platform for distributed applications for developers and sysadmins.
-
fleet - A Distributed init System.
-
Go Package Store - An app that displays updates for the Go packages in your GOPATH.
-
gocc - Gocc is a compiler kit for Go written in Go.
-
Gor - Http traffic replication tool, for replaying traffic from production to stage/dev environments in real-time.
-
heka - universal tool for data processing from Mozilla. Large collection of built-in plugins. Extendable via Go and Lua plugin API.
-
hugo - A Fast and Modern Static Website Engine
-
Juju - Cloud-agnostic service deployment and orchestration - supports EC2, Azure, Openstack, MAAS and more.
-
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.
-
naclpipe - A simple NaCL EC25519 based crypto pipe tool written in Go.
-
nes - A Nintendo Entertainment System (NES) emulator written in Go.
-
orange-cat - A Markdown previewer written in Go.
-
peg - Peg, Parsing Expression Grammar, is an implementation of a Packrat parser generator.
-
Postman - Command-line utility for batch-sending email.
-
restic - De-duplicating backup program.
-
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)
-
syncthing - An open, decentralized file synchronization tool and protocol.
-
Tenyks - Service oriented IRC bot using Redis and JSON for messaging.
-
toxiproxy - Proxy to simulate network and system conditions for automated tests.
-
tsuru - An extensible and open source Platform as a Service software.
-
websysd - Web based process manager (like Marathon or Upstart)
Resources
Where to discover new Go libraries.
Benchmarks
Conferences
E-Books
Twitter
Websites
Tutorials
Windows
-
go-ole - Win32 OLE implementation for golang