Skip to content

A curated list of amazingly awesome Go libraries, resources and shiny things.

License

Notifications You must be signed in to change notification settings

abaron/awesome-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 

Repository files navigation

Awesome Go

awesome-go

A curated list of amazingly awesome Go libraries, resources and shiny things.

Contributing

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.

Name Description Stars Forks Issues (Open)
EasyMIDI EasyMidi is a simple and reliable library for working with standard midi file (SMF) 18 4 -
flac No-frills native Go FLAC decoder that decodes FLAC files into byte slices. 82 9 -
flac Native Go FLAC encoder/decoder with support for FLAC streams. 96 18 -
gaad Native Go AAC bitstream parser. 53 6 -
go-sox libsox bindings for go. 89 20 -
go_mediainfo libmediainfo bindings for go. 24 9 -
gosamplerate libsamplerate bindings for go. 8 0 -
id3v2 Fast and stable ID3 parsing and writing library for Go. 100 19 -
malgo Mini audio library. 65 9 -
minimp3 Lightweight MP3 decoder library. 24 6 -
mix Sequence-based Go-native audio mixer for music apps. 91 17 -
mp3 Native Go MP3 decoder. 86 9 -
music-theory Music theory models in Go. 247 21 -
Oto A low-level library to play sound on multiple platforms. 365 24 -
PortAudio Go bindings for the PortAudio audio I/O library. 283 44 -
portmidi Go bindings for PortMidi. 200 42 -
taglib Go bindings for taglib. 65 17 -
vorbis "Native" Go Vorbis decoder (uses CGO, but has no dependencies). 22 4 -
waveform Go package capable of generating waveform images from audio streams. 239 21 -

Authentication and OAuth

Libraries for implementing authentications schemes.

Name Description Stars Forks Issues (Open)
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. 1,851 117 15
branca Golang implementation of Branca Tokens. 60 9 1
casbin Authorization library that supports access control models like ACL, RBAC, ABAC. 4,322 441 15
cookiestxt provides parser of cookies.txt file format. 2 1 0
go-jose Fairly complete implementation of the JOSE working group's JSON Web Token, JSON Web Signatures, and JSON Web Encryption specs. 1,059 220 21
go-oauth2-server Standalone, specification-compliant, OAuth2 server written in Golang. 1,205 171 13
gologin chainable handlers for login with OAuth1 and OAuth2 authentication providers. 1,002 62 0
gorbac provides a lightweight role-based access control (RBAC) implementation in Golang. 866 121 2
goth provides a simple, clean, and idiomatic way to use OAuth and OAuth2. Handles multiple providers out of the box. 2,165 252 22
httpauth HTTP Authentication middleware. 174 19 3
jwt Clean and easy to use implementation of JSON Web Tokens (JWT). 67 14 7
jwt Lightweight JSON Web Token (JWT) library. 71 4 0
jwt-auth JWT middleware for Golang http servers with many configuration options. 148 21 0
jwt-go Golang implementation of JSON Web Tokens (JWT). 5,486 527 44
loginsrv JWT login microservice with plugable backends such as OAuth2 (Github), htpasswd, osiam. 777 84 15
oauth2 Successor of goauth2. Generic OAuth 2.0 package that comes with JWT, Google APIs, Compute Engine and App Engine support. 2,255 510 56
osin Golang OAuth2 server library. 1,524 319 33
paseto Golang implementation of Platform-Agnostic Security Tokens (PASETO). 208 9 0
permissions2 Library for keeping track of users, login states and permissions. Uses secure cookies and bcrypt. 341 29 0
rbac Minimalistic RBAC package for Go applications. 23 0 0
securecookie Efficient secure cookie encoding/decoding. 31 3 2
session Go session management for web servers (including support for Google App Engine - GAE). 87 8 5
sessiongate-go Go session management using the SessionGate Redis module. 8 0 0
sessions Dead simple, highly performant, highly customizable sessions service for go http servers. 45 3 2
signedvalue Signed and timestamped strings compatible with Tornado's create_signed_value, decode_signed_value, and therefore set_secure_cookie and get_secure_cookie. 7 1 0

Bot Building

Libraries for building and working with bots.

Name Description Stars Forks Issues (Open)
go-chat-bot IRC, Slack & Telegram bot written in Go. 440 117 6
go-sarah Framework to build bot for desired chat services including LINE, Slack, Gitter and more. 120 5 5
go-tgbot Pure Golang Telegram Bot API wrapper, generated from swagger file, session-based router and middleware. 82 3 2
Golang CryptoTrading Bot A golang implementation of a console-based trading bot for cryptocurrency exchanges. 181 41 10
govkbot Simple Go VK bot library. 21 2 1
hanu Framework for writing Slack bots. 100 8 1
Kelp official trading and market-making bot for the Stellar DEX. Works out-of-the-box, written in Golang, compatible with centralized exchanges and custom trading strategies. 134 36 28
margelet Framework for building Telegram bots. 57 9 0
micha Go Library for Telegram bot api. 9 2 0
slacker Easy to use framework to create Slack bots. 292 33 3
tbot Telegram bot server with API similar to net/http. 204 30 9
telebot Telegram bot framework written in Go. 892 134 34
telegram-bot-api Simple and clean Telegram bot client. 1,501 256 4
Tenyks Service oriented IRC bot using Redis and JSON for messaging. 167 15 13

Command Line

Standard CLI

Libraries for building standard or basic Command Line applications.

Name Description Stars Forks Issues (Open)
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. - - -
cobra Commander for modern Go CLI interactions. - - -
commandeer Dev-friendly CLI apps: sets up flags, defaults, and usage based on struct fields and tags. - - -
complete Write bash completions in Go + Go command bash completion. - - -
docopt.go Command-line arguments parser that will make you smile. - - -
env Tag-based environment configuration for structs. - - -
flag Simple but powerful command line option parsing library for Go supporting subcommand. - - -
flaggy A robust and idiomatic flags package with excellent subcommand support. - - -
flagvar A collection of flag argument types for Go's standard flag package. - - -
go-arg Struct-based argument parsing in Go. - - -
go-commander Go library to simplify CLI workflow. - - -
go-flags go command line option parser. - - -
go-getoptions Go option parser inspired on the flexibility of Perl’s GetOpt::Long. - - -
gocmd Go library for building command line applications. - - -
hiboot cli cli application framework with auto configuration and dependency injection. - - -
kingpin Command line and flag parser supporting sub commands. - - -
liner Go readline-like library for command-line interfaces. - - -
mitchellh/cli Go library for implementing command-line interfaces. - - -
mow.cli Go library for building CLI applications with sophisticated flag and argument parsing and validation. - - -
pflag Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags. - - -
readline Pure golang implementation that provides most features in GNU-Readline under MIT license. - - -
sand Simple API for creating interpreters and so much more. - - -
sflags Struct based flags generator for flag, urfave/cli, pflag, cobra, kingpin and other libraries. - - -
strumt Library to create prompt chain. - - -
ukautz/clif Small command line interface framework. - - -
urfave/cli Simple, fast, and fun package for building command line apps in Go (formerly codegangsta/cli). - - -
wlog Simple logging interface that supports cross-platform color and concurrency. - - -
wmenu 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.

Name Description Stars Forks Issues (Open)
asciigraph Go package to make lightweight ASCII line graph ╭┈╯ in command line apps with no other dependencies. - - -
aurora ANSI terminal colors that supports fmt.Printf/Sprintf. - - -
cfmt Contextual fmt inspired by bootstrap color classes. - - -
chalk Intuitive package for prettifying terminal/console output. - - -
color Versatile package for colored terminal output. - - -
colourize Go library for ANSI colour text in terminals. - - -
ctc The non-invasive cross-platform terminal color library does not need to modify the Print method. - - -
go-ataman Go library for rendering ANSI colored text templates in terminals. - - -
go-colorable Colorable writer for windows. - - -
go-colortext Go library for color output in terminals. - - -
go-isatty isatty for golang. - - -
go-prompt Library for building a powerful interactive prompt, inspired by python-prompt-toolkit. - - -
gocui Minimalist Go library aimed at creating Console User Interfaces. - - -
gommon/color Style terminal text. - - -
gookit/color Terminal color rendering tool library, support 16 colors, 256 colors, RGB color rendering output, compatible with Windows. - - -
mpb Multi progress bar for terminal applications. - - -
progressbar Basic thread-safe progress bar that works in every OS. - - -
simpletable Simple tables in terminal with Go. - - -
tabby A tiny library for super simple Golang tables. - - -
tabular Print ASCII tables from command line utilities without the need to pass large sets of data to the API. - - -
termbox-go Termbox is a library for creating cross-platform text-based interfaces. - - -
termdash Go terminal dashboard based on termbox-go and inspired by termui. - - -
termtables 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. - - -
uilive Library for updating terminal output in realtime. - - -
uiprogress Flexible library to render progress bars in terminal applications. - - -
uitable Library to improve readability in terminal apps using tabular data. - - -

Configuration

Libraries for configuration parsing.

Name Description Stars Forks Issues (Open)
config Cloud native application configuration. Bind ENV to structs in only two lines. 177 4 0
config JSON or YAML configuration wrapper with environment variables and flags parsing. 204 36 4
configure Provides configuration through multiple sources, including JSON, flags and environment variables. 48 8 1
confita Load configuration in cascade from multiple backends into a struct. 231 18 12
conflate Library/tool to merge multiple JSON/YAML/TOML files from arbitrary URLs, validation against a JSON schema, and application of default values defined in the schema. 9 3 0
env Parse environment variables to Go structs (with defaults). 807 71 0
envcfg Un-marshaling environment variables to Go structs. 90 6 0
envconf Configuration from environment. 7 2 0
envconfig Read your configuration from environment variables. 140 13 1
envh Helpers to manage environment variables. 92 0 0
gcfg read INI-style configuration files into Go structs; supports user-defined types and subsections. 112 30 3
go-up A simple configuration library with recursive placeholders resolution and no magic. 23 1 1
goConfig Parses a struct as input and populates the fields of this struct with parameters from command line, environment variables and configuration file. 101 16 5
godotenv Go port of Ruby's dotenv library (Loads environment variables from .env). 1,965 111 12
gofigure Go application configuration made easy. 57 7 0
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. 27 6 0
gookit/config application config manage(load,get,set). support JSON, YAML, TOML, INI, HCL. multi file load, data override merge. 60 9 0
hjson Human JSON, a configuration file format for humans. Relaxed syntax, fewer mistakes, more comments. 170 19 1
ingo Flags persisted in an ini-like config file. 23 3 0
ini Go package to read and write INI files. 1,445 202 11
joshbetz/config Small configuration library for Go that parses environment variables, JSON files, and reloads automatically on SIGHUP. 194 9 0
kelseyhightower/envconfig Go library for managing configuration data from environment variables. 2,261 199 16
mini Golang package for parsing ini-style configuration files. 19 15 1
sprbox Build-environment aware toolbox factory and agnostic config parser (YAML, TOML, JSON and Environment vars). 3 0 0
store Lightweight configuration manager for Go. 240 14 2
viper Go configuration with fangs. 8,485 820 238
xdg Cross platform package that follows the XDG Standard. 29 1 0

Continuous Integration

Tools for help with continuous integration.

Name Description Stars Forks Issues (Open)
drone Drone is a Continuous Integration platform built on Docker, written in Go. - - -
duci A simple ci server no needs domain specific languages. - - -
gomason Test, Build, Sign, and Publish your go binaries from a clean workspace. - - -
goveralls Go integration for Coveralls.io continuous code coverage tracking system. - - -
overalls Multi-Package go project coverprofile for tools like goveralls. - - -
roveralls Recursive coverage testing tool. - - -

CSS Preprocessors

Libraries for preprocessing CSS files.

Name Description Stars Forks Issues (Open)
gcss Pure Go CSS Preprocessor. - - -
go-libsass Go wrapper to the 100% Sass compatible libsass project. - - -

Data Structures

Generic datastructures and algorithms in Go.

Name Description Stars Forks Issues (Open)
algorithms Algorithms and data structures.CLRS study. - - -
binpacker Binary packer and unpacker helps user build custom binary stream. - - -
bit Golang set data structure with bonus bit-twiddling functions. - - -
bitset Go package implementing bitsets. - - -
bloom Bloom filters implemented in Go. - - -
bloom Golang Bloom filter implementation. - - -
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). - - -
crunch Go package implementing buffers for handling various datatypes easily. - - -
cuckoofilter Cuckoo filter: a good alternative to a counting bloom filter implemented in Go. - - -
deque A highly optimized double-ended queue. - - -
deque Fast ring-buffer deque (double-ended queue). - - -
dict Python-like dictionaries (dict) for Go. - - -
encoding Integer Compression Libraries for Go. - - -
go-adaptive-radix-tree Go implementation of Adaptive Radix Tree. - - -
go-datastructures Collection of useful, performant, and thread-safe data structures. - - -
go-ef A Go implementation of the Elias-Fano encoding. - - -
go-geoindex In-memory geo index. - - -
go-mcache Fast in-memory key:value store/cache library. Pointer caches. - - -
go-rquad Region quadtrees with efficient point location and neighbour finding. - - -
goconcurrentqueue Concurrent FIFO queue. - - -
gods Go Data Structures. Containers, Sets, Lists, Stacks, Maps, BidiMaps, Trees, HashSet etc. - - -
golang-set Thread-Safe and Non-Thread-Safe high-performance sets for Go. - - -
goset A useful Set collection implementation for Go. - - -
goskiplist Skip list implementation in Go. - - -
gota Implementation of dataframes, series, and data wrangling methods for Go. - - -
hide ID type with marshalling to/from hash to prevent sending IDs to clients. - - -
hilbert Go package for mapping values to and from space-filling curves, such as Hilbert and Peano curves. - - -
hyperloglog 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 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. - - -
mspm Multi-String Pattern Matching Algorithm for information retrieval. - - -
null Nullable Go types that can be marshalled/unmarshalled to/from JSON. - - -
pipeline An implementation of pipelines with fan-in and fan-out. - - -
ring Go implementation of a high performance, thread safe bloom filter. - - -
roaring Go package implementing compressed bitsets. - - -
set Simple set data structure implementation in Go using LinkedHashMap. - - -
skiplist Very fast Go Skiplist implementation. - - -
skiplist Skiplist implementation in Go. - - -
timedmap Map with expiring key-value pairs. - - -
treap Persistent, fast ordered map using tree heaps. - - -
trie Trie implementation in Go. - - -
ttlcache In-memory LRU string-interface{} map with expiration for golang. - - -
typ Null Types, Safe primitive type conversion and fetching value from complex structures. - - -
willf/bloom Go package implementing Bloom filters. - - -

Database

Databases implemented in Go.

Name Description Stars Forks Issues (Open)
badger Fast key-value store in Go. - - -
bcache Eventually consistent distributed in-memory cache Go library. - - -
BigCache Efficient key/value cache for gigabytes of data. - - -
bolt Low-level key/value database for Go. - - -
buntdb Fast, embeddable, in-memory key/value database for Go with custom indexing and spatial support. - - -
cache2go In-memory key:value cache which supports automatic invalidation based on timeouts. - - -
clusteredBigCache BigCache with clustering support and individual item expiration. - - -
cockroach Scalable, Geo-Replicated, Transactional Datastore. - - -
couchcache RESTful caching micro-service backed by Couchbase server. - - -
CovenantSQL CovenantSQL is a SQL database on blockchain. - - -
dgraph Scalable, Distributed, Low Latency, High Throughput Graph Database. - - -
diskv Home-grown disk-backed key-value store. - - -
eliasdb Dependency-free, transactional graph database with REST API, phrase search and SQL-like query language. - - -
fastcache fast thread-safe inmemory cache for big number of entries. Minimizes GC overhead. - - -
GCache Cache library with support for expirable Cache, LFU, LRU and ARC. - - -
go-cache In-memory key:value store/cache (similar to Memcached) library for Go, suitable for single-machine applications. - - -
goleveldb Implementation of the LevelDB key/value database in Go. - - -
gorocksdb Gorocksdb is a wrapper for RocksDB written in 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. - - -
moss Moss is a simple LSM key-value storage engine written in 100% Go. - - -
nutsdb Nutsdb is a simple, fast, embeddable, persistent key/value store written in pure Go. It supports fully serializable transactions and many data structures such as list, set, sorted set. - - -
piladb Lightweight RESTful database engine based on stack data structures. - - -
prometheus Monitoring system and time series database. - - -
pudge Fast and simple key/value store written using Go's standard library. - - -
rqlite The lightweight, distributed, relational database built on SQLite. - - -
Scribble Tiny flat file JSON store. - - -
slowpoke Key-value store with persistence. - - -
tempdb Key-value store for temporary items. - - -
tidb TiDB is a distributed SQL database. Inspired by the design of Google F1. - - -
tiedot Your NoSQL database powered by Golang. - - -
Vasto A distributed high-performance key-value store. On Disk. Eventual consistent. HA. Able to grow or shrink without service interruption. - - -

Database schema migration.

Name Description Stars Forks Issues (Open)
avro Discover SQL schemas and convert them to AVRO schemas. Query SQL records into AVRO bytes. 2 0 -
darwin Database schema evolution library for Go. 80 10 -
go-fixtures Django style fixtures for Golang's excellent built-in database/sql library. 18 17 -
go-pg-migrations A Go package to help write migrations with go-pg/pg. 24 5 -
gondolier Database migration library using struct decorators. 25 1 -
goose Database migration tool. You can manage your database's evolution by creating incremental SQL or Go scripts. 109 17 -
gormigrate Database schema migration helper for Gorm ORM. 289 32 -
migrate Database migrations. CLI and Golang library. 2,112 205 -
pravasan Simple Migration tool - currently for MySQL but planning to soon support Postgres, SQLite, MongoDB, etc. 24 5 -
soda Database migration, creation, ORM, etc... for MySQL, PostgreSQL, and SQLite. 626 153 -
sql-migrate Database migration tool. Allows embedding migrations into the application using go-bindata. 1,322 128 -

Database tools.

Name Description Stars Forks Issues (Open)
chproxy HTTP proxy for ClickHouse database. - - -
clickhouse-bulk Collects small insterts and sends big requests to ClickHouse servers. - - -
dbbench Database benchmarking tool with support for several databases and scripts. - - -
go-mysql Go toolset to handle MySQL protocol and replication. - - -
go-mysql-elasticsearch Sync your MySQL data into Elasticsearch automatically. - - -
kingshard kingshard is a high performance proxy for MySQL powered by Golang. - - -
myreplication MySql binary log replication listener. Supports statement and row based replication. - - -
octillery Go package for sharding databases ( Supports every ORM or raw SQL ). - - -
orchestrator MySQL replication topology manager & visualizer. - - -
pgweb Web-based PostgreSQL database browser. - - -
prep Use prepared SQL statements without changing your code. - - -
pREST Serve a RESTful API from any PostgreSQL database. - - -
rwdb rwdb provides read replica capability for multiple database servers setup. - - -
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.

Name Description Stars Forks Issues (Open)
Dotsql 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. - - -
godbal Database Abstraction Layer (dbal) for go. Support SQL builder and get result easily. - - -
goqu Idiomatic SQL builder and query library. - - -
igor Abstraction layer for PostgreSQL that supports advanced functionality and uses gorm-like syntax. - - -
ormlite Lightweight package containing some ORM-like features and helpers for sqlite databases. - - -
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. - - -
Squalus Thin layer over the Go SQL package that makes it easier to perform queries. - - -
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

    Name Description Stars Forks Issues (Open)
    avatica Apache Avatica/Phoenix SQL driver for database/sql. - - -
    bgc Datastore Connectivity for BigQuery for go. - - -
    firebirdsql Firebird RDBMS SQL driver for Go. - - -
    go-adodb Microsoft ActiveX Object DataBase driver for go that uses database/sql. - - -
    go-mssqldb Microsoft MSSQL driver for Go. - - -
    go-oci8 Oracle driver for go that uses database/sql. - - -
    go-sql-driver/mysql MySQL driver for Go. - - -
    go-sqlite3 SQLite3 driver for go that uses database/sql. - - -
    gofreetds Microsoft MSSQL driver. Go wrapper over FreeTDS. - - -
    goracle Oracle driver for Go, using the ODPI-C driver. - - -
    pgx PostgreSQL driver supporting features beyond those exposed by database/sql. - - -
    pq Pure Go Postgres driver for database/sql. - - -
  • NoSQL Databases

    Name Description Stars Forks Issues (Open)
    aerospike-client-go Aerospike client in Go language. - - -
    arangolite Lightweight golang driver for ArangoDB. - - -
    asc Datastore Connectivity for Aerospike for go. - - -
    dynago Dynago is a principle of least surprise client for DynamoDB. - - -
    forestdb Go bindings for ForestDB. - - -
    go-couchbase Couchbase client in Go. - - -
    go-couchdb Yet another CouchDB HTTP API wrapper for Go. - - -
    go-pilosa Go client library for Pilosa. - - -
    go-rejson Golang client for redislabs' ReJSON module using Redigo golang client. Store and manipulate structs as JSON objects in redis with ease. - - -
    gocb Official Couchbase Go SDK. - - -
    gocql Go language driver for Apache Cassandra. - - -
    godscache A wrapper for the Google Cloud Platform Go Datastore package that adds caching using memcached. - - -
    gomemcache memcache client library for the Go programming language. - - -
    gorethink Go language driver for RethinkDB. - - -
    goriak Go language driver for Riak KV. - - -
    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. - - -
    neo4j Neo4j Rest API Bindings for Golang. - - -
    Neo4j-GO Neo4j REST Client in golang. - - -
    neoism Neo4j client for Golang. - - -
    redigo Redigo is a Go client for the Redis database. - - -
    redis Redis client for Golang. - - -
    redis Redis-protocol compatible TCP servers/services. - - -
    xredis Typesafe, customizable, clean & easy to use Redis client. - - -
  • Search and Analytic Databases.

    Name Description Stars Forks Issues (Open)
    bleve Modern text indexing library for go. - - -
    elastic Elasticsearch client for Go. - - -
    elasticsql Convert sql to elasticsearch dsl in Go. - - -
    elastigo Elasticsearch client library. - - -
    go-elasticsearch Official Elasticsearch client for Go. - - -
    goes Library to interact with Elasticsearch. - - -
    riot Go Open Source, Distributed, Simple and efficient Search Engine. - - -
    skizze probabilistic data-structures service and storage. - - -
  • Multiple Backends.

    Name Description Stars Forks Issues (Open)
    cachego Golang Cache component for multiple drivers. - - -
    cayley Graph database with support for multiple backends. - - -
    dsc Datastore connectivity for SQL, NoSQL, structured files. - - -
    gokv Simple key-value store abstraction and implementations for Go (Redis, Consul, etcd, bbolt, BadgerDB, LevelDB, Memcached, DynamoDB, S3, PostgreSQL, MongoDB, CockroachDB and many more). - - -

Date and Time

Libraries for working with dates and times.

Name Description Stars Forks Issues (Open)
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. - - -
iso8601 Efficiently parse ISO8601 date-times without regex. - - -
kair Date and Time - Golang Formatting Library. - - -
now Now is a time toolkit for golang. - - -
NullTime Nullable time.Time. - - -
strftime C99-compatible strftime formatter. - - -
timespan For interacting with intervals of time, defined as a start time and a duration. - - -
timeutil Useful extensions (Timedelta, Strftime, ...) to the golang's time package. - - -
tuesday Ruby-compatible Strftime function. - - -

Distributed Systems

Packages that help with building Distributed Systems.

Name Description Stars Forks Issues (Open)
celeriac Library for adding support for interacting and monitoring Celery workers, tasks and events in Go. - - -
consistent Consistent hashing with bounded loads. - - -
dht BitTorrent Kademlia DHT implementation. - - -
digota grpc ecommerce microservice. - - -
dot distributed sync using operational transformation/OT. - - -
doublejump A revamped Google's jump consistent hash. - - -
drmaa Job submission library for cluster schedulers based on the DRMAA standard. - - -
dynamolock DynamoDB-backed distributed locking implementation. - - -
dynatomic A library for using DynamoDB as an atomic counter. - - -
emitter-io High performance, distributed, secure and low latency publish-subscribe platform built with MQTT, Websockets and love. - - -
flowgraph flow-based programming package. - - -
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. - - -
hprose Very newbility RPC Library, support 25+ languages now. - - -
jaeger A distributed tracing system. - - -
jsonrpc The jsonrpc package helps implement of JSON-RPC 2.0. - - -
jsonrpc JSON-RPC 2.0 HTTP client implementation. - - -
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. - - -
outboxer Outboxer is a go library that implements the outbox pattern. - - -
pglock PostgreSQL-backed distributed locking implementation. - - -
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. - - -
resgate Realtime API Gateway for building REST, real time, and RPC APIs, where all clients are synchronized seamlessly. - - -
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. - - -
torrent BitTorrent client package. - - -

Email

Libraries and tools that implement email creation and sending.

Name Description Stars Forks Issues (Open)
chasquid SMTP server written in Go. - - -
douceur CSS inliner for your HTML emails. - - -
email A robust and flexible email library for Go. - - -
go-dkim DKIM library, to sign & verify email. - - -
go-imap IMAP library for clients and servers. - - -
go-message Streaming library for the Internet Message Format and mail messages. - - -
go-premailer Inline styling for HTML mail in Go. - - -
Gomail Gomail is a very simple and powerful package to send emails. - - -
Hectane Lightweight SMTP client providing an HTTP API. - - -
hermes Golang package that generates clean, responsive HTML e-mails. - - -
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.

Name Description Stars Forks Issues (Open)
agora Dynamically typed, embeddable programming language in Go. - - -
anko Scriptable interpreter written in Go. - - -
binder Go to Lua binding library, based on gopher-lua. - - -
expr an engine that can evaluate expressions. - - -
gentee Embeddable scripting programming language. - - -
gisp Simple LISP in Go. - - -
go-duktape Duktape JavaScript engine bindings for Go. - - -
go-lua Port of the Lua 5.2 VM to pure Go. - - -
go-php PHP bindings for Go. - - -
go-python naive go bindings to the CPython C-API. - - -
golua Go bindings for Lua C API. - - -
gopher-lua Lua 5.1 VM and compiler written in Go. - - -
gval A highly customizable expression language written in Go. - - -
ngaro Embeddable Ngaro VM implementation enabling scripting in Retro. - - -
otto JavaScript interpreter written in Go. - - -
purl Perl 5.18.2 embedded in Go. - - -
tengo Bytecode compiled script language for Go. - - -

Error Handling

Libraries for handling errors.

Name Description Stars Forks Issues (Open)
errlog Hackable package that determines responsible source code for an error (and some other fast-debugging features). Pluggable to any logger in-place. - - -
errors Package that provides simple error handling primitives. - - -
errorx A feature rich error package with stack traces, composition of errors and more. - - -
go-multierror Go (golang) package for representing a list of errors as a single error. - - -
tracerr Golang errors with stack trace and source fragments. - - -
werr Error Wrapper creates an wrapper for the error type in Go which captures the File, Line and Stack of where it was called. - - -

Files

Libraries for handling files and file systems.

Name Description Stars Forks Issues (Open)
afero FileSystem Abstraction System for Go. - - -
flop File operations library which aims to mirror feature parity with GNU cp. - - -
go-csv-tag Load csv file using tag. - - -
go-decent-copy Copy files for humans. - - -
go-gtfs Load gtfs files in go. - - -
notify File system event notification library with simple API, similar to os/signal. - - -
opc Load Open Packaging Conventions (OPC) files for Go. - - -
pdfcpu PDF processor. - - -
skywalker Package to allow one to concurrently go through a filesystem with ease. - - -
stl Modules to read and write STL (stereolithography) files. Concurrent algorithm for reading. - - -
tarfs Implementation of the FileSystem interface for tar files. - - -
vfs A pluggable, extensible, and opinionated set of filesystem functionality for Go across a number of filesystem types such as os, S3, and GCS. - - -

Financial

Packages for accounting and finance.

Name Description Stars Forks Issues (Open)
accounting money and currency formatting for golang. - - -
decimal Arbitrary-precision fixed-point decimal numbers. - - -
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). - - -
orderbook Matching Engine for Limit Order Book in Golang. - - -
techan Technical analysis library with advanced market analysis and trading strategies. - - -
transaction Embedded transactional database of accounts, running in multithreaded mode. - - -
vat VAT number validation & EU VAT rates. - - -

Forms

Libraries for working with forms.

Name Description Stars Forks Issues (Open)
bind Bind form data to any Go values. - - -
binding Binds form and JSON data from net/http Request to struct. - - -
conform Keeps user input in check. Trims, sanitizes & scrubs data based on struct tags. - - -
form Decodes url.Values into Go value(s) and Encodes Go value(s) into url.Values. Dual Array and Full map support. - - -
formam decode form's values into a struct. - - -
forms Framework-agnostic library for parsing and validating form/JSON data which supports multipart forms and files. - - -
gorilla/csrf CSRF protection for Go web applications & services. - - -
nosurf CSRF protection middleware for Go. - - -

Functional

Packages to support functional programming in Go.

Name Description Stars Forks Issues (Open)
fpGo Monad, Functional Programming features for Golang. - - -
fuego Functional Experiment in Go. - - -
go-underscore Useful collection of helpfully functional Go collection utilities. - - -

Game Development

Awesome game development libraries.

Name Description Stars Forks Issues (Open)
Azul3D 3D game engine written in Go. - - -
Ebiten dead simple 2D game library in Go. - - -
engo Engo is an open-source 2D game engine written in Go. It follows the Entity-Component-System paradigm. - - -
g3n Go 3D Game Engine. - - -
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 Performance oriented 2D/3D math package for Go. - - -
gonet Game server skeleton implemented with golang. - - -
goworld Scalable game server engine, featuring space-entity framework and hot-swapping. - - -
Leaf Lightweight game server framework. - - -
nano Lightweight, facility, high performance golang based game server framework. - - -
Oak Pure Go game engine. - - -
Pitaya Scalable game server framework with clustering support and client libraries for iOS, Android, Unity and others through the C SDK. - - -
Pixel Hand-crafted 2D game library in Go. - - -
raylib-go Go bindings for raylib, a simple and easy-to-use library to learn videogames programming. - - -
termloop 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.

Name Description Stars Forks Issues (Open)
efaceconv Code generation tool for high performance conversion from interface{} to immutable type without allocations. - - -
gen Code generation tool for ‘generics’-like functionality. - - -
go-enum Code generation for enums from code comments. - - -
go-linq .NET LINQ-like query methods for Go. - - -
goderive Derives functions from input types. - - -
gotype Golang source code parsing, usage like reflect package. - - -
GoWrap Generate decorators for Go interfaces using simple templates. - - -
interfaces Command line tool for generating interface definitions. - - -
jennifer Generate arbitrary Go code without templates. - - -
pkgreflect Go preprocessor for package scoped reflection. - - -

Geographic

Geographic tools and servers

Name Description Stars Forks Issues (Open)
geocache In-memory cache that is suitable for geolocation based applications. - - -
geoserver geoserver Is a Go Package For Manipulating a GeoServer Instance via the GeoServer REST API. - - -
gismanager Publish Your GIS Data(Vector Data) to PostGIS and Geoserver. - - -
osm Library for reading, writing and working with OpenStreetMap data and APIs. - - -
pbf OpenStreetMap PBF golang encoder/decoder. - - -
S2 geometry S2 geometry library in Go. - - -
Tile38 Geolocation DB with spatial index and realtime geofencing. - - -

Go Compilers

Tools for compiling Go to other languages.

Name Description Stars Forks Issues (Open)
c4go Transpile C code to Go code. - - -
f4go Transpile FORTRAN 77 code to Go code. - - -
gopherjs Compiler from Go to JavaScript. - - -
llgo LLVM-based compiler for Go. - - -
tardisgo Golang to Haxe to CPP/CSharp/Java/JavaScript transpiler. - - -

Goroutines

Tools for managing and working with Goroutines.

Name Description Stars Forks Issues (Open)
ants A high-performance goroutine pool for golang. - - -
artifex Simple in-memory job queue for Golang using worker-based dispatching. - - -
async A safe way to execute functions asynchronously, recovering them in case of panic. - - -
breaker 🚧 Flexible mechanism to make your code breakable. - - -
cyclicbarrier CyclicBarrier for golang. - - -
go-floc Orchestrate goroutines with ease. - - -
go-flow Control goroutines execution order. - - -
go-tools/multithreading Manage a pool of goroutines using this lightweight library with a simple API. - - -
go-trylock TryLock support on read-write lock for Golang. - - -
GoSlaves Simple and Asynchronous Goroutine pool library. - - -
goworker goworker is a Go-based background worker. - - -
gpool manages a resizeable pool of context-aware goroutines to bound concurrency. - - -
grpool Lightweight Goroutine pool. - - -
oversight Oversight is a complete implementation of the Erlang supervision trees. - - -
parallel-fn Run functions in parallel. - - -
pool Limited consumer goroutine or unlimited goroutine pool for easier goroutine handling and cancellation. - - -
semaphore 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). - - -
stl Software transactional locks based on Software Transactional Memory (STM) concurrency control mechanism. - - -
threadpool Golang threadpool implementation. - - -
tunny Goroutine pool for golang. - - -
worker-pool goworker is a Go simple async worker pool. - - -
workerpool Goroutine pool that limits the concurrency of task execution, not the number of tasks queued. - - -

GUI

Libraries for building GUI Applications.

Toolkits

Name Description Stars Forks Issues (Open)
app Package to create apps with GO, HTML and CSS. Supports: MacOS, Windows in progress. - - -
fyne Cross platform native GUIs designed for Go, rendered using EFL. Supports: Linux, macOS, Windows. - - -
go-astilectron Build cross platform GUI apps with GO and HTML/JS/CSS (powered by Electron). - - -
go-gtk Go bindings for GTK. - - -
go-sciter Go bindings for Sciter: the Embeddable HTML/CSS/script engine for modern desktop UI development. Cross platform. - - -
gotk3 Go bindings for GTK3. - - -
gowd Rapid and simple desktop UI development with GO, HTML, CSS and NW.js. Cross platform. - - -
qt Qt binding for Go (support for Windows / macOS / Linux / Android / iOS / Sailfish OS / Raspberry Pi). - - -
ui Platform-native GUI library for Go. Cross platform. - - -
Wails Mac, Windows, Linux desktop apps with HTML UI using built-in OS HTML renderer. - - -
walk Windows application library kit for Go. - - -
webview Cross-platform webview window with simple two-way JavaScript bindings (Windows / macOS / Linux). - - -

Interaction

Name Description Stars Forks Issues (Open)
gosx-notifier OSX Desktop Notifications library for Go. - - -
robotgo Go Native cross-platform GUI system automation. Control the mouse, keyboard and other. - - -
systray Cross platform Go library to place an icon and menu in the notification area. - - -
trayhost 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 for a comprehensive list.

Images

Libraries for manipulating images.

Name Description Stars Forks Issues (Open)
bild Collection of image processing algorithms in pure Go. - - -
bimg Small package for fast and efficient image processing using libvips. - - -
cameron An avatar generator for Go. - - -
geopattern Create beautiful generative image patterns from a string. - - -
gg 2D rendering in pure Go. - - -
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. - - -
gocv Go package for computer vision using OpenCV 3.3+. - - -
goimagehash Go Perceptual image hashing package. - - -
govatar Library and CMD tool for generating funny avatars. - - -
image2ascii Convert image to ASCII. - - -
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 Selection of image manipulation tools. - - -
ln 3D line art rendering in Go. - - -
mergi Tool & Go library for image manipulation (Merge, Crop, Resize, Watermark, Animate). - - -
mort Storage and image processing server written in Go. - - -
mpo Decoder and conversion tool for MPO 3D Photos. - - -
picfit An image resizing server written in Go. - - -
pt Path tracing engine written in Go. - - -
resize Image resizing for Go with common interpolation methods. - - -
rez Image resizing in pure Go and SIMD. - - -
smartcrop Finds good crops for arbitrary images and crop sizes. - - -
steganography Pure Go Library for LSB steganography. - - -
stegify Go tool for LSB steganography, capable of hiding any file within an image. - - -
svgo Go Language Library for SVG generation. - - -
tga Package tga is a TARGA image format decoder/encoder. - - -

IoT (Internet of Things)

Libraries for programming devices of the IoT.

Name Description Stars Forks Issues (Open)
connectordb 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 Gatt is a Go package for building Bluetooth Low Energy peripherals. - - -
gobot Gobot is a framework for robotics, physical computing, and the Internet of Things. - - -
huego An extensive Philips Hue client library for Go. - - -
iot IoT is a simple framework for implementing a Google IoT Core device. - - -
mainflux Industrial IoT Messaging and Device Management Server. - - -
periph Peripherals I/O to interface with low-level board facilities. - - -
sensorbee Lightweight stream processing engine for IoT. - - -

Job Scheduler

Libraries for scheduling jobs.

Name Description Stars Forks Issues (Open)
clockwerk Go package to schedule periodic jobs using a simple, fluent syntax. - - -
clockwork Simple and intuitive job scheduling library in Go. - - -
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. - - -
gron Define time-based tasks using a simple Go API and Gron’s scheduler will run them accordingly. - - -
JobRunner Smart and featureful cron job scheduler with job queuing and live monitoring built in. - - -
jobs Persistent and flexible background jobs library. - - -
leprechaun Job scheduler that supports webhooks, crons and classic scheduling. - - -
scheduler Cronjobs scheduling made easy. - - -

JSON

Libraries for working with JSON.

Name Description Stars Forks Issues (Open)
ajson Abstract JSON for golang with JSONPath support. - - -
gjo Small utility to create JSON objects. - - -
GJSON Get a JSON value with one line of code. - - -
go-respond Go package for handling common HTTP JSON responses. - - -
gojq JSON query in Golang. - - -
gojson Automatically generate Go (golang) struct definitions from example JSON. - - -
JayDiff JSON diff utility written in Go. - - -
JSON-to-Go Convert JSON to Go struct. - - -
jsonapi-errors Go bindings based on the JSON API errors reference. - - -
jsonf Console tool for highlighted formatting and struct query fetching JSON. - - -
jsongo Fluent API to make it easier to create Json objects. - - -
jsonhal Simple Go package to make custom structs marshal into HAL compatible JSON responses. - - -
kazaam API for arbitrary transformation of JSON documents. - - -
mp Simple cli email parser. It currently takes stdin and outputs JSON. - - -

Logging

Libraries for generating and working with log files.

Name Description Stars Forks Issues (Open)
distillog distilled levelled logging (think of it as stdlib + log levels). - - -
glg glg is simple and fast leveled logging library for Go. - - -
glo PHP Monolog inspired logging facility with identical severity levels. - - -
glog Leveled execution logs for Go. - - -
go-cronowriter Simple writer that rotate log files automatically based on current date and time, like cronolog. - - -
go-log Simple and configurable Logging in Go, with level, formatters and writers. - - -
go-log Log lib supports level and multi handlers. - - -
go-log Log4j implementation in Go. - - -
go-logger Simple logger of Go Programs, with level handlers. - - -
gologger Simple easy to use log lib for go, logs in Colored Console, Simple Console, File or Elasticsearch. - - -
gomol Multiple-output, structured logging for Go with extensible logging outputs. - - -
gone/log Fast, extendable, full-featured, std-lib source compatible log library. - - -
journald Go implementation of systemd Journal's native API for logging. - - -
log Structured logging package for Go. - - -
log Simple, configurable and scalable Structured Logging for Go. - - -
log Structured log interface for Go cleanly separates logging facade from its implementation. - - -
log-voyage Full-featured logging saas written in golang. - - -
log15 Simple, powerful logging for Go. - - -
logdump Package for multi-level logging. - - -
logex Golang log lib, supports tracking and level, wrap by standard log lib. - - -
logger Minimalistic logging library for Go. - - -
logmatic Colorized logger for Golang with dynamic log level configuration. - - -
logo Golang logger to different configurable writers. - - -
logrus 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 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). - - -
rollingwriter RollingWriter is an auto-rotate io.Writer implementation with multi policies to provide log file rotation. - - -
seelog Logging functionality with flexible dispatching, filtering, and formatting. - - -
spew Implements a deep pretty printer for Go data structures to aid in debugging. 3,144 193 -
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. - - -
zap Fast, structured, leveled logging in Go. - - -
zerolog Zero-allocation JSON logger. - - -

Machine Learning

Libraries for Machine Learning.

Name Description Stars Forks Issues (Open)
bayesian Naive Bayesian Classification for Golang. - - -
CloudForest Fast, flexible, multi-threaded ensembles of decision trees for machine learning in pure Go. - - -
eaopt An evolutionary optimization library. - - -
evoli Genetic Algorithm and Particle Swarm Optimization library. - - -
fonet A Deep Neural Network library written in Go. - - -
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 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. - - -
goga Genetic algorithm library for Go. - - -
GoLearn General Machine Learning library for Go. - - -
golinear liblinear bindings for Go. - - -
GoMind A simplistic Neural Network Library in Go. - - -
goml On-line Machine Learning in Go. - - -
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. - - -
gorse A High Performance Recommender System Package based on Collaborative Filtering for Go. - - -
goscore Go Scoring API for PMML. - - -
gosseract Go package for OCR (Optical Character Recognition), by using Tesseract C++ library. - - -
libsvm 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 Multilayer perceptron network implemented in Go, with training via backpropagation. - - -
ocrserver A simple OCR API server, seriously easy to be deployed by Docker and Heroku. - - -
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. - - -
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 Golang Neural Network. - - -

Messaging

Libraries that implement messaging systems.

Name Description Stars Forks Issues (Open)
APNs2 HTTP/2 Apple Push Notification provider for Go — Send push notifications to iOS, tvOS, Safari and OSX apps. - - -
Beaver A real time messaging server to build a scalable in-app notifications, multiplayer games, chat apps in web and mobile apps. - - -
Benthos A message streaming bridge between a range of protocols. - - -
Bus Minimalist message bus implementation for internal communication. - - -
Centrifugo Real-time messaging (Websockets or SockJS) server in Go. - - -
dbus Native Go bindings for D-Bus. - - -
drone-line Sending Line notifications using a binary, docker or Drone CI. - - -
emitter Emits events using Go way, with wildcard, predicates, cancellation possibilities and many other good wins. - - -
event Implementation of the pattern observer. - - -
EventBus The lightweight event bus with async compatibility. - - -
gaurun-client Gaurun Client written in Go. - - -
Glue Robust Go and Javascript Socket Library (Alternative to Socket.io). - - -
go-notify Native implementation of the freedesktop notification spec. - - -
go-nsq the official Go package for NSQ. - - -
go-socket.io socket.io library for golang, a realtime application framework. - - -
go-vitotrol Client library to Viessmann Vitotrol web service. - - -
Gollum A n:m multiplexer that gathers messages from different sources and broadcasts them to a set of destinations. - - -
golongpoll HTTP longpoll server library that makes web pub-sub simple. - - -
goose Server Sent Events in Go. - - -
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. - - -
jazz A simple RabbitMQ abstraction layer for queue administration and publishing and consuming of messages. - - -
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. - - -
Mercure Server and library to dispatch server-sent updates using the Mercure protocol (built on top of Server-Sent Events). - - -
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. - - -
pubsub Simple pubsub package for go. - - -
rabbus A tiny wrapper over amqp exchanges and queues. - - -
rabtap RabbitMQ swiss army knife cli app. - - -
RapidMQ RapidMQ is a lightweight and reliable library for managing of the local messages queue. - - -
rmqconn RabbitMQ Reconnection. Wrapper over amqp.Connection and amqp.Dial. Allowing to do a reconnection when the connection is broken before forcing the call to the Close () method to be closed. - - -
sarama Go library for Apache Kafka. - - -
Uniqush-Push Redis backed unified push service for server-side notifications to mobile devices. - - -
zmq4 Go interface to ZeroMQ version 4. Also available for version 3 and version 2. - - -

Microsoft Office

Microsoft Excel

Libraries for working with Microsoft Excel.

Name Description Stars Forks Issues (Open)
excelize Golang library for reading and writing Microsoft Excel™ (XLSX) files. - - -
go-excel A simple and light reader to read a relate-db-like excel as a table. - - -
goxlsxwriter Golang bindings for libxlsxwriter for writing XLSX (Microsoft Excel) files. - - -
xlsx Library to simplify reading the XML format used by recent version of Microsoft Excel in Go programs. - - -
xlsx Fast and safe way to read/update your existing Microsoft Excel files in Go programs. - - -

Miscellaneous

Dependency Injection

Libraries for working with dependency injection.

Name Description Stars Forks Issues (Open)
alice Additive dependency injection container for Golang. - - -
dig A reflection based dependency injection toolkit for Go. - - -
fx A dependency injection based application framework for Go (built on top of dig). - - -
wire Strict Runtime Dependency Injection for Golang. - - -

Project Layout

Unofficial set of patterns for structuring projects.

Name Description Stars Forks Issues (Open)
go-sample A sample layout for Go application projects with the real code. - - -
golang-standards/project-layout Set of common historical and emerging project layout patterns in the Go ecosystem. - - -
scaffold Scaffold generates starter Go project layout. Lets you focus on business logic implemeted. - - -

Strings

Libraries for working with strings.

Name Description Stars Forks Issues (Open)
strutil String utilities. - - -
xstrings Collection of useful string functions ported from other languages. - - -

These libraries were placed here because none of the other categories seemed to fit.

Name Description Stars Forks Issues (Open)
anagent Minimalistic, pluggable Golang evloop/timer handler with dependency-injection. - - -
antch A fast, powerful and extensible web crawling & scraping framework. - - -
archiver Library and command for making and extracting .zip and .tar.gz archives. - - -
autoflags Go package to automatically define command line flags from struct fields. - - -
avgRating Calculate average score and rating based on Wilson Score Equation. - - -
banner Add beautiful banners into your Go applications. - - -
base64Captcha Base64captch supports digit, number, alphabet, arithmetic, audio and digit-alphabet captcha. - - -
battery Cross-platform, normalized battery information library. - - -
bitio 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 Package conv provides fast and intuitive conversions across Go types. - - -
datacounter Go counters for readers/writer/http.ResponseWriter. - - -
ffmt Beautify data display for Humans. - - -
ghorg Clone all repos from a GitHub org into a single directory. - - -
go-commons-pool Generic object pool for Golang. - - -
go-openapi Collection of packages to parse and utilize open-api schemas. - - -
go-resiliency Resiliency patterns for golang. - - -
go-unarr Decompression library for RAR, TAR, ZIP and 7z archives. - - -
gofakeit Random data generator written in go. - - -
gommit Analyze git commit messages to ensure they follow defined patterns. - - -
gopsutil Cross-platform library for retrieving process and system utilization(CPU, Memory, Disks, etc). - - -
gosh Provide Go Statistics Handler, Struct, Measure Method. - - -
gosms Your own local SMS gateway in Go that can be used to send SMS. - - -
gountries Package that exposes country and subdivision data. - - -
health Easy to use, extensible health check library. - - -
healthcheck An opinionated and concurrent health-check HTTP handler for RESTful services. - - -
hostutils A golang library for packing and unpacking FQDNs list. - - -
indigo Distributed unique ID generator of using Sonyflake and encoded by Base58. - - -
lk A simple licensing library for golang. - - -
llvm Library for interacting with LLVM IR in pure Go. - - -
metrics Library for metrics instrumentation and Prometheus exposition. - - -
morse Library to convert to and from morse code. - - -
pdfgen HTTP service to generate PDF from Json requests. - - -
persian Some utilities for Persian language in go. - - -
sandid Every grain of sand on earth has its own ID. - - -
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. - - -
stats Monitors Go MemStats + System stats such as Memory, Swap and CPU and sends via UDP anywhere you want for logging etc... - - -
turtle Emojis for Go. - - -
url-shortener A modern, powerful, and robust URL shortener microservice with mysql support. - - -
VarHandler Generate boilerplate http input and output handling. - - -
xdg FreeDesktop.org (xdg) Specs implemented in Go. - - -
xkg X Keyboard Grabber. - - -

Natural Language Processing

Libraries for working with human languages.

Name Description Stars Forks Issues (Open)
getlang Fast natural language detection package. 85 13 2
go-eco Similarity, dissimilarity and distance matrices; diversity, equitability and inequality measures; species richness estimators; coenocline models. 4 2 1
go-i18n Package and an accompanying tool to work with localized text. 1.3k 144 12
go-mystem CGo bindings to Yandex.Mystem - russian morphology analyzer. 23 5 0
go-nlp Utilities for working with discrete probability distributions and other tools useful for doing NLP work. 82 10 0
go-pinyin CN Hanzi to Hanyu Pinyin converter. 648 109 11
go-stem Implementation of the porter stemming algorithm. 56 15 0
go-unidecode ASCII transliterations of Unicode text. 67 11 1
go2vec Reader and utility functions for word2vec embeddings. 33 3 0
gojieba This is a Go implementation of jieba which a Chinese word splitting algorithm. 985 176 35
golibstemmer Go bindings for the snowball libstemmer library including porter 2. 17 4 0
gotokenizer A tokenizer based on the dictionary and Bigram language models for Golang. (Now only support chinese segmentation) 6 3 0
gounidecode Unicode transliterator (also known as unidecode) for Go. 68 19 2
gse Go efficient text segmentation; support english, chinese, japanese and other. 1.2k 96 5
icu Cgo binding for icu4c C library detection and conversion functions. Guaranteed compatibility with version 50.1. 19 4 0
kagome JP morphological analyzer written in pure Go. 472 34 3
libtextcat Cgo binding for libtextcat C library. Guaranteed compatibility with version 2.2. 10 6 0
MMSEGO This is a GO implementation of MMSEG which a Chinese word splitting algorithm. 59 12 0
nlp Extract values from strings and fill your structs with nlp. 361 26 4
nlp Go Natural Language Processing library supporting LSA (Latent Semantic Analysis). 241 24 2
paicehusk Golang implementation of the Paice/Husk Stemming Algorithm. 26 5 2
petrovich Petrovich is the library which inflects Russian names to given grammatical case. 28 1 0
porter This is a fairly straightforward port of Martin Porter's C implementation of the Porter stemming algorithm. 8 0 0
porter2 Really fast Porter 2 stemmer. 37 2 0
prose Library for text processing that supports tokenization, part-of-speech tagging, named-entity extraction, and more. 2.4k 116 12
RAKE.go Go port of the Rapid Automatic Keyword Extraction Algorithm (RAKE). 55 9 3
segment Go library for performing Unicode Text Segmentation as described in Unicode Standard Annex #29 47 7 4
sentences Sentence tokenizer: converts text into a list of sentences. 266 24 2
shamoji The shamoji is word filtering package written in Go. 11 0 0
snowball Snowball stemmer port (cgo wrapper) for Go. Provides word stem extraction functionality Snowball native. 25 2 0
stemmer Stemmer packages for Go programming language. Includes English and German stemmers. 49 2 0
textcat Go package for n-gram based text categorization, with support for utf-8 and raw text. 62 8 0
whatlanggo Natural language detection package for Go. Supports 84 languages and 24 scripts (writing systems e.g. Latin, Cyrillic, etc). 397 31 6
when Natural EN and RU language date/time parser with pluggable rules. 1.1k 50 10

Networking

Libraries for working with various layers of the network.

Name Description Stars Forks Issues (Open)
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). - - -
cidranger Fast IP to CIDR lookup for Go. - - -
dhcp6 Package dhcp6 implements a DHCPv6 server, as described in RFC 3315. - - -
dns Go library for working with DNS. - - -
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, advanced echo server and web UI. Allows to specify a set query-per-second load and record latency histograms and other useful stats and graph them. Tcp, Http, gRPC. - - -
ftp Package ftp implements a FTP client as described in RFC 959. - - -
gmqtt Gmqtt is a flexible, high-performance MQTT broker library that fully implements the MQTT protocol V3.1.1. - - -
gNxI A collection of tools for Network Management that use the gNMI and gNOI protocols. - - -
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. - - -
gopcap Go wrapper for libpcap. - - -
goshark Package goshark use tshark to decode IP packet and create data struct to analyse packet. - - -
gosnmp Native Go library for performing SNMP actions. - - -
gotcp Go package for quickly writing tcp applications. - - -
grab Go package for managing file downloads. - - -
graval Experimental FTP server framework. - - -
HTTPLab HTTPLabs let you inspect HTTP requests and forge responses. - - -
jazigo Jazigo is a tool written in Go for retrieving configuration for multiple network devices. - - -
kcp-go KCP - Fast and Reliable ARQ Protocol. - - -
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). - - -
packet Send packets over TCP and UDP. It can buffer messages and hot-swap connections if needed. - - -
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. - - -
sftp Package sftp implements the SSH File Transfer Protocol as described in https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt. - - -
ssh Higher-level API for building SSH servers (wraps crypto/ssh). - - -
sslb It's a Super Simples Load Balancer, just a little project to achieve some kind of performance. - - -
stun Go implementation of RFC 5389 STUN protocol. - - -
tcp_server Go library for building tcp servers faster. - - -
tspool A TCP Library use worker pool to improve performance and protect your server. - - -
utp Go uTP micro transport protocol implementation. - - -
water Simple TUN/TAP library. - - -
webrtc A pure Go implementation of the WebRTC API. - - -
winrm Go WinRM client to remotely execute commands on Windows machines. - - -
xtcp TCP Server Framework with simultaneous full duplex communication,graceful shutdown,custom protocol. - - -

HTTP Clients

Libraries for making HTTP requests.

Name Description Stars Forks Issues (Open)
gentleman Full-featured plugin-driven HTTP client library. - - -
goreq Enhanced simplified HTTP client based on gorequest. - - -
grequests A Go "clone" of the great and famous Requests library. - - -
heimdall An enchanced http client with retry and hystrix capabilities. - - -
pester Go HTTP client calls with retries, backoff, and concurrency. - - -
rq A nicer interface for golang stdlib HTTP client. - - -
sling Sling is a Go HTTP client library for creating and sending API requests. - - -

OpenGL

Libraries for using OpenGL in Go.

Name Description Stars Forks Issues (Open)
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.

Name Description Stars Forks Issues (Open)
beego orm Powerful orm framework for go. Support: pq/mysql/sqlite3. 20,379 4,148 -
go-pg PostgreSQL ORM with focus on PostgreSQL specific features and performance. 2,668 201 -
go-queryset 100% type-safe ORM with code generation and MySQL, PostgreSQL, Sqlite3, SQL Server support based on GORM. 434 33 -
go-sqlbuilder A flexible and powerful SQL string builder library plus a zero-config ORM. 204 25 -
go-store Simple and fast Redis backed key-value store library for Go. 93 8 -
GORM The fantastic ORM library for Golang, aims to be developer friendly. 13,495 1,524 -
gorp Go Relational Persistence, ORM-ish library for Go. 3,035 349 -
grimoire Grimoire is a database access layer and validation for golang. (Support: MySQL, PostgreSQL and SQLite3). 109 11 -
lore Simple and lightweight pseudo-ORM/pseudo-struct-mapping environment for Go. 4 1 -
Marlow Generated ORM from project structs for compile time safety assurances. 56 4 -
pop/soda Database migration, creation, ORM, etc... for MySQL, PostgreSQL, and SQLite. 626 153 -
QBS Stands for Query By Struct. A Go ORM. 532 103 -
reform Better ORM for Go, based on non-empty interfaces and code generation. 771 44 -
SQLBoiler ORM generator. Generate a featureful and blazing-fast ORM tailored to your database schema. 2,097 197 -
upper.io/db Single interface for interacting with different data sources through the use of adapters that wrap mature database drivers. 1,774 132 -
Xorm Simple and powerful ORM for Go. 4,805 615 -
Zoom Blazing-fast datastore and querying engine built on Redis. 233 18 -

Package Management

Official tooling for dependency and package management

Name Description Stars Forks Issues (Open)
go modules Modules are the unit of source code interchange and versioning. The go command has direct support for working with modules, including recording and resolving dependencies on other modules. - - -

Official experimental tooling for package management

Name Description Stars Forks Issues (Open)
dep Go dependency tool. - - -
vgo Versioned Go. - - -

Unofficial libraries for package and dependency management.

Name Description Stars Forks Issues (Open)
gigo PIP-like dependency tool for golang, with support for private repositories and hashes. - - -
glide Manage your golang vendor and vendored packages with ease. Inspired by tools like Maven, Bundler, and Pip. - - -
godep dependency tool for go, godep helps build packages reproducibly by fixing their dependencies. - - -
gom Go Manager - bundle for go. - - -
goop Simple dependency manager for Go (golang), inspired by Bundler. - - -
gop Build and manage your Go applications out of GOPATH. - - -
gopm Go Package Manager. - - -
govendor Go Package Manager. Go vendor tool that works with the standard vendor file. - - -
gpm Barebones dependency manager for Go. - - -
johnny-deps Minimal dependency version using Git. - - -
mvn-golang plugin that provides way for auto-loading of Golang SDK, dependency management and start build environment in Maven project infrastructure. - - -
nut Vendor Go dependencies. - - -
VenGO create and manage exportable isolated go virtual environments. - - -

Query Language

Name Description Stars Forks Issues (Open)
gojsonq A simple Go package to Query over JSON Data. 801 47 -
gqlgen go generate based graphql server library. 2,787 230 -
graphql graphql parser + utilities. 50 6 -
graphql Implementation of GraphQL for Go. 4,806 425 -
graphql-go GraphQL server with a focus on ease of use. 2,598 255 -
graphql-go Implementation of GraphQL for Go. 2,607 255 -
jsonql JSON query expression library in Golang. 197 26 -
jsonslice Jsonpath queries with advanced filters. 19 1 -
rql Resource Query Language for REST API. 100 5 -

Resource Embedding

Name Description Stars Forks Issues (Open)
esc Embeds files into Go programs and provides http.FileSystem interfaces to them. - - -
fileb0x Simple tool to embed files in go with focus on "customization" and ease to use. - - -
go-embed Generates go code to embed resource files into your library or executable. - - -
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. - - -
packr The simple and easy way to embed static files into Go binaries. - - -
statics Embeds static resources into go files for single binary compilation + works with http.FileSystem + symlinks. - - -
statik Embeds static files into a Go executable. - - -
templify Embed external template files into Go code to create single file binaries. - - -
vfsgen Generates a vfsdata.go file that statically implements the given virtual filesystem. - - -

Science and Data Analysis

Libraries for scientific computing and data analyzing.

Name Description Stars Forks Issues (Open)
assocentity Package assocentity returns the average distance from words to a given entity. - - -
bradleyterry Provides a Bradley-Terry Model for pairwise comparisons. - - -
chart Simple Chart Plotting library for Go. Supports many graphs types. - - -
dataframe-go Dataframes for Go for machine-learning and statistics (similar to pandas). - - -
evaler Simple floating point arithmetic expression evaluator. - - -
ewma Exponentially-weighted moving averages. - - -
geom 2D geometry for golang. - - -
go-dsp Digital Signal Processing for Go. - - -
go-fn Mathematical functions written in Go language, that are not covered by math pkg. - - -
go-gt Graph theory algorithms written in "Go" language. - - -
gocomplex Complex number library for the Go programming language. - - -
goent GO Implementation of Entropy Measures. - - -
gohistogram Approximate histograms for data streams. - - -
gonum Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more. - - -
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. - - -
GoStats GoStats is an Open Source GoLang library for math statistics mostly used in Machine Learning domains, it covers most of the Statistical measures functions. - - -
graph Library of basic graph algorithms. - - -
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. - - -
piecewiselinear Tiny linear interpolation library. - - -
PiHex Implementation of the "Bailey-Borwein-Plouffe" algorithm for the hexadecimal number Pi. - - -
rootfinding root-finding algorithms library for finding roots of quadratic functions. - - -
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. - - -
triangolatte 2D triangulation library. Allows translating lines and polygons (both based on points) to the language of GPUs. - - -

Security

Libraries that are used to help make your application more secure.

Name Description Stars Forks Issues (Open)
acmetool ACME (Let's Encrypt) client tool with automatic renewal. 1,684 91 56
acra Network encryption proxy to protect database-based applications from data leaks: strong selective encryption, SQL injections prevention, intrusion detection system. 422 37 6
argon2pw Argon2 password hash generation with constant-time password comparison. 72 6 0
autocert Auto provision Let's Encrypt certificates and start a TLS server. nil nil nil
BadActor In-memory, application-driven jailer built in the spirit of fail2ban. 240 8 0
Cameradar Tool and library to remotely hack RTSP streams from surveillance cameras. 1,734 231 5
go-yara Go Bindings for YARA, the "pattern matching swiss knife for malware researchers (and everyone else)". 131 45 5
goArgonPass Argon2 password hash and verification designed to be compatible with existing Python and PHP implementations. 10 3 0
goSecretBoxPassword A probably paranoid package for securely hashing and encrypting passwords. 28 7 0
Interpol Rule-based data generator for fuzzing and penetration testing. nil nil nil
jwc JSON Web Cryptography library. 4 1 0
lego Pure Go ACME client library and CLI tool (for use with Let's Encrypt). 3,339 436 75
memguard A pure Go library for handling sensitive values in memory. 951 41 1
nacl Go implementation of the NaCL set of API's. 448 20 1
passlib Futureproof password hashing library. 223 22 2
secure HTTP middleware for Go that facilitates some quick security wins. 1,159 77 1
simple-scrypt Scrypt package with a simple, obvious API and automatic cost calibration built-in. 150 17 1
ssh-vault encrypt/decrypt using ssh keys. 194 15 8
sslmgr SSL certificates made easy with a high level wrapper around acme/autocert. 6 0 0

Serialization

Libraries and tools for binary serialization.

Name Description Stars Forks Issues (Open)
asn1 Asn.1 BER and DER encoding library for golang. - - -
bambam generator for Cap'n Proto schemas from go. - - -
bel Generate TypeScript interfaces from Go structs/interfaces. Useful for JSON RPC. - - -
binstruct Golang binary decoder for mapping data into the structure. - - -
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. - - -

Server Applications

Name Description Stars Forks Issues (Open)
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. - - -
devd Local webserver for developers. - - -
discovery A registry for resilient mid-tier load balancing and failover. - - -
etcd Highly-available key value store for shared configuration and service discovery. - - -
Fider Fider is an open platform to collect and organize customer feedback. - - -
Flagr Flagr is an open-source feature flagging and A/B testing service. - - -
flipt A self contained feature flag solution written in Go and Vue.js - - -
jackal An XMPP server written in Go. - - -
minio Minio is a distributed object storage server. - - -
nginx-prometheus Nginx log parser and exporter to Prometheus. - - -
nsq A realtime distributed messaging platform. - - -
riemann-relay Relay to load-balance Riemann events and/or convert them to Carbon. - - -
RoadRunner High-performance PHP application server, load-balancer and process manager. - - -
yakvs Small, networked, in-memory key-value store. - - -

Template Engines

Libraries and tools for templating and lexing.

Name Description Stars Forks Issues (Open)
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 Lightweight templating language that lets you write templates in Go. Templates are translated into Go and compiled. - - -
extemplate Tiny wrapper around html/template to allow for easy file-based template inheritance. - - -
fasttemplate Simple and fast template engine. Substitutes template placeholders up to 10x faster than text/template. - - -
gofpdf PDF document generator with high level support for text, drawing and images. - - -
goview Goview is a lightweight, minimalist and idiomatic template library based on golang html/template for building Go web application. - - -
hero Hero is a handy, fast and powerful go template engine. - - -
jet Jet template engine. - - -
kasia.go Templating system for HTML and other text documents - go implementation. - - -
liquid Go implementation of Shopify Liquid templates. - - -
mustache Go implementation of the Mustache template language. - - -
pongo2 Django-like template-engine for Go. - - -
quicktemplate Fast, powerful, yet easy to use template engine. Converts templates into Go code and then compiles it. - - -
raymond Complete handlebars implementation in Go. - - -
Razor Razor view engine for Golang. - - -
Soy Closure templates (aka Soy templates) for Go, following the official spec. - - -
velvet Complete handlebars implementation in Go. - - -

Testing

Libraries for testing codebases and generating test data.

  • Testing Frameworks

    Name Description Stars Forks Issues (Open)
    assert Basic Assertion Library used along side native go testing, with building blocks for custom assertions. - - -
    badio Extensions to Go's testing/iotest package. - - -
    baloo Expressive and versatile end-to-end HTTP API testing made easy. - - -
    biff Bifurcation testing framework, BDD compatible. - - -
    bro Watch files in directory and run tests for them. - - -
    charlatan Tool to generate fake interface implementations for tests. - - -
    commander Tool for testing cli applications on windows, linux and osx. - - -
    cupaloy Simple snapshot testing addon for your test framework. - - -
    dbcleaner Clean database for testing purpose, inspired by database_cleaner in Ruby. - - -
    dsunit Datastore testing for SQL, NoSQL, structured files. - - -
    endly Declarative end to end functional testing. - - -
    frisby REST API testing framework. - - -
    ginkgo BDD Testing Framework for Go. - - -
    go-carpet Tool for viewing test coverage in terminal. - - -
    go-cmp Package for comparing Go values in tests. - - -
    go-mutesting Mutation testing for Go source code. - - -
    go-testdeep Extremely flexible golang deep comparison, extends the go testing package. - - -
    go-vcr Record and replay your HTTP interactions for fast, deterministic and accurate tests. - - -
    goblin Mocha like testing framework fo Go. - - -
    gocheck More advanced testing framework alternative to gotest. - - -
    GoConvey BDD-style framework with web UI and live reload. - - -
    gocrest Composable hamcrest-like matchers for Go assertions. - - -
    godog Cucumber or Behat like BDD framework for Go. - - -
    gofight API Handler Testing for Golang Router framework. - - -
    gogiven YATSPEC-like BDD testing framework for Go. - - -
    gomatch library created for testing JSON against patterns. - - -
    gomega Rspec like matcher/assertion library. - - -
    GoSpec BDD-style testing framework for the Go programming language. - - -
    gospecify This provides a BDD syntax for testing your Go code. It should be familiar to anybody who has used libraries such as rspec. - - -
    gosuite Brings lightweight test suites with setup/teardown facilities to testing by leveraging Go1.7's Subtests. - - -
    gotest.tools A collection of packages to augment the go testing package and support common patterns. - - -
    Hamcrest fluent framework for declarative Matcher objects that, when applied to input values, produce self-describing results. - - -
    httpexpect Concise, declarative, and easy to use end-to-end HTTP and REST API testing. - - -
    jsonassert Package for verifying that your JSON payloads are serialized correctly. - - -
    restit Go micro framework to help writing RESTful API integration test. - - -
    testfixtures A helper for Rails' like test fixtures to test database applications. - - -
    Testify Sacred extension to the standard go testing package. - - -
    testmd Convert markdown snippets into testable go code. - - -
    testsql Generate test data from SQL files before testing and clear it after finished. - - -
    Tt Simple and colorful test tools. - - -
    wstest Websocket client for unit-testing a websocket http.Handler. - - -
  • Mock

    Name Description Stars Forks Issues (Open)
    counterfeiter Tool for generating self-contained mock objects. - - -
    go-sqlmock Mock SQL driver for testing database interactions. - - -
    go-txdb Single transaction based database driver mainly for testing purposes. - - -
    gock Versatile HTTP mocking made easy. - - -
    gomock Mocking framework for the Go programming language. - - -
    govcr HTTP mock for Golang: record and replay HTTP interactions for offline testing. - - -
    hoverfly HTTP(S) proxy for recording and simulating REST/SOAP APIs with extensible middleware and easy-to-use CLI. - - -
    httpmock Easy mocking of HTTP responses from external resources. - - -
    minimock Mock generator for Go interfaces. - - -
    mockhttp Mock object for Go http.ResponseWriter. - - -
  • Fuzzing and delta-debugging/reducing/shrinking.

    Name Description Stars Forks Issues (Open)
    go-fuzz Randomized testing system. - - -
    gofuzz Library for populating go objects with random values. - - -
    Tavor Generic fuzzing and delta-debugging framework. - - -
  • Selenium and browser control tools.

    Name Description Stars Forks Issues (Open)
    cdp Type-safe bindings for the Chrome Debugging Protocol that can be used with browsers or other debug targets that implement it. - - -
    chromedp a way to drive/test Chrome, Safari, Edge, Android Webviews, and other browsers supporting the Chrome Debugging Protocol. - - -
    ggr a lightweight server that routes and proxies Selenium Wedriver requests to multiple Selenium hubs. - - -
    selenoid alternative Selenium hub server that launches browsers within containers. - - -
  • Fail injection

    Name Description Stars Forks Issues (Open)
    failpoint An implementation of failpoints for Golang. - - -

Text Processing

Libraries for parsing and manipulating texts.

  • Specific Formats

    Name Description Stars Forks Issues (Open)
    align A general purpose application that aligns text. - - -
    allot Placeholder and wildcard text parsing for CLI tools and bots. - - -
    bbConvert Converts bbCode to HTML that allows you to add support for custom bbCode tags. - - -
    blackfriday Markdown processor in Go. - - -
    bluemonday HTML Sanitizer. - - -
    colly Fast and Elegant Scraping Framework for Gophers. - - -
    commonregex A collection of common regular expressions for Go. - - -
    dataflowkit Web scraping Framework to turn websites into structured data. - - -
    did DID (Decentralized Identifiers) Parser and Stringer in Go. - - -
    doi Document object identifier (doi) parser in Go. - - -
    editorconfig-core-go Editorconfig file parser and manipulator for Go. - - -
    enca Minimal cgo bindings for libenca. - - -
    encdec Package provides a generic interface to encoders and decodersa. - - -
    genex Count and expand Regular Expressions into all matching Strings. - - -
    github_flavored_markdown GitHub Flavored Markdown renderer (using blackfriday) with fenced code block highlighting, clickable header anchor links. - - -
    go-fixedwidth Fixed-width text formatting (encoder/decoder with reflection). - - -
    go-humanize Formatters for time, numbers, and memory size to human readable format. - - -
    go-nmea NMEA parser library for the Go language. - - -
    go-runewidth Functions to get fixed width of the character or string. - - -
    go-slugify Make pretty slug with multiple languages support. - - -
    go-toml Go library for the TOML format with query support and handy cli tools. - - -
    go-vcard Parse and format vCard. - - -
    go-zero-width Zero-width character detection and removal for Go. - - -
    gofeed Parse RSS and Atom feeds in Go. - - -
    gographviz Parses the Graphviz DOT language. - - -
    gommon/bytes Format bytes to string. - - -
    gonameparts Parses human names into individual name parts. - - -
    goq Declarative unmarshaling of HTML using struct tags with jQuery syntax (uses GoQuery). - - -
    GoQuery GoQuery brings a syntax and a set of features similar to jQuery to the Go language. - - -
    goregen Library for generating random strings from regular expressions. - - -
    gotext GNU gettext utilities for Go. - - -
    guesslanguage Functions to determine the natural language of a unicode text. - - -
    htmlquery An XPath query package for HTML, lets you extract data or evaluate from HTML documents by an XPath expression. - - -
    inject Package inject provides a reflect based injector. - - -
    mxj Encode / decode XML as JSON or map[string]interface{}; extract values with dot-notation paths and wildcards. Replaces x2j and j2x packages. - - -
    sdp SDP: Session Description Protocol [RFC 4566]. - - -
    sh Shell parser and formatter. - - -
    slug URL-friendly slugify with multiple languages support. - - -
    Slugify Go slugify application that handles string. - - -
    syndfeed A syndication feed for Atom 1.0 and RSS 2.0. - - -
    toml TOML configuration format (encoder/decoder with reflection). - - -
  • Utility

    Name Description Stars Forks Issues (Open)
    gofuckyourself A sanitization-based swear filter for Go. - - -
    gotabulate Easily pretty-print your tabular data with Go. - - -
    kace Common case conversions covering common initialisms. - - -
    parseargs-go string argument parser that understands quotes and backslashes. - - -
    parth URL path segmentation parsing. - - -
    radix fast string sorting algorithm. - - -
    TySug Alternative suggestions with respect to keyboard layouts. - - -
    xj2go Convert xml or json to go struct. - - -
    xurls Extract urls from text. - - -

Third-party APIs

Libraries for accessing third party APIs.

Name Description Stars Forks Issues (Open)
amazon-product-advertising-api Go Client Library for Amazon Product Advertising API. - - -
anaconda Go client library for the Twitter 1.1 API. - - -
aws-sdk-go The official AWS SDK for the Go programming language. - - -
brewerydb Go library for accessing the BreweryDB API. - - -
cachet Go client library for Cachet (open source status page system). - - -
circleci Go client library for interacting with CircleCI's API. - - -
clarifai Go client library for interfacing with the Clarifai API. - - -
codeship-go Go client library for interacting with Codeship's API v2. - - -
coinpaprika-go Go client library for interacting with Coinpaprika's API. - - -
discordgo Go bindings for the Discord Chat API. - - -
ethrpc Go bindings for Ethereum JSON RPC API. - - -
facebook Go Library that supports the Facebook Graph API. - - -
fcm Go library for Firebase Cloud Messaging. - - -
gads Google Adwords Unofficial API. - - -
gami Go library for Asterisk Manager Interface. - - -
gcm Go library for Google Cloud Messaging. - - -
geo-golang Go Library to access Google Maps, MapQuest, Nominatim, OpenCage, Bing, Mapbox, and OpenStreetMap geocoding / reverse geocoding APIs. - - -
github Go library for accessing the GitHub REST API v3. - - -
githubql Go library for accessing the GitHub GraphQL API v4. - - -
go-chronos Go library for interacting with the Chronos Job Scheduler - - -
go-hacknews Tiny Go client for HackerNews API. - - -
go-imgur Go client library for imgur - - -
go-jira Go client library for Atlassian JIRA - - -
go-marathon Go library for interacting with Mesosphere's Marathon PAAS. - - -
go-myanimelist Go client library for accessing the MyAnimeList API. - - -
go-sophos Go client library for the Sophos UTM REST API with zero dependencies. - - -
go-sptrans Go client library for the SPTrans Olho Vivo API. - - -
go-telegraph Telegraph publishing platform API client. - - -
go-trending Go library for accessing trending repositories and developers at Github. - - -
go-twitch Go client for interacting with the Twitch v3 API. - - -
go-twitter Go client library for the Twitter v1.1 APIs. - - -
go-unsplash Go client library for the Unsplash.com API. - - -
go-xkcd Go client for the xkcd API. - - -
golyrics Golyrics is a Go library to fetch music lyrics data from the Wikia website. - - -
gomalshare Go library MalShare API malshare.com - - -
GoMusicBrainz Go MusicBrainz WS2 client library. - - -
google Auto-generated Google APIs for Go. - - -
google-analytics Simple wrapper for easy google analytics reporting. - - -
google-cloud Google Cloud APIs Go Client Library. - - -
google-email-audit-api Go client library for Google G Suite Email Audit API. - - -
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. - - -
igdb Go client for the Internet Game Database API. - - -
Medium Golang SDK for Medium's OAuth2 API. - - -
megos Client library for accessing an Apache Mesos cluster. - - -
minio-go Minio Go Library for Amazon S3 compatible cloud storage. - - -
mixpanel Mixpanel is a library for tracking events and sending Mixpanel profile updates to Mixpanel from your go applications. - - -
patreon-go Go library for Patreon API. - - -
paypal Wrapper for PayPal payment API. - - -
playlyfe The Playlyfe Rest API Go SDK. - - -
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. - - -
simples3 Simple no frills AWS S3 Library using REST with V4 Signing written in Go. - - -
slack Slack API in Go. - - -
smite Go package to wraps access to the Smite game 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. - - -
textbelt Go client for the textbelt.com txt messaging API. - - -
TheMovieDb Simple golang package to communicate with themoviedb.org. - - -
translate Go online translation package. - - -
Trello Go wrapper for the Trello API. - - -
TripAdvisor Go wrapper for the TripAdvisor API. - - -
tumblr Go wrapper for the Tumblr v2 API. - - -
uptimerobot Go wrapper and command-line client for the Uptime Robot v2 API. - - -
webhooks Webhook receiver for GitHub and Bitbucket. - - -
wit-go Go client for wit.ai HTTP API. - - -
ynab Go wrapper for the YNAB API. - - -
zooz Go client for the Zooz API. - - -

Utilities

General utilities and tools to make your life easier.

Name Description Stars Forks Issues (Open)
abutil Collection of often-used Golang helpers. - - -
apm Process manager for Golang applications with an HTTP API. - - -
backscanner A scanner similar to bufio.Scanner, but it reads and returns lines in reverse order, starting at a given position and going backward. - - -
blank Verify or remove blanks and whitespace from strings. - - -
boilr Blazingly fast CLI tool for creating projects from boilerplate templates. - - -
chyle Changelog generator using a git repository with multiple configuration possibilities. - - -
circuit An efficient and feature complete Hystrix like Go implementation of the circuit breaker pattern. - - -
circuitbreaker Circuit Breakers in Go. - - -
clockwork A simple fake clock for golang. - - -
command Command pattern for Go with thread safe serial and parallel dispatcher. - - -
copy-pasta Universal multi-workstation clipboard that uses S3 like backend for the storage. - - -
ctop Top-like interface (e.g. htop) for container metrics. - - -
ctxutil A collection of utility functions for contexts. - - -
Death Managing go application shutdown with signals. - - -
Deepcopier Simple struct copying for Go. - - -
delve Go debugger. - - -
dlog Compile-time controlled logger to make your release smaller without removing debug calls. - - -
ergo The management of multiple local services running over different ports made easy. - - -
evaluator Evaluate an expression dynamicly based on s-expression. It's simple and easy to extend. - - -
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. - - -
filler small utility to fill structs using "fill" tag. - - -
filter provide filtering, sanitizing, and conversion of Go data. - - -
fzf Command-line fuzzy finder written in Go. - - -
gaper Builds and restarts a Go project when it crashes or some watched file changes. - - -
generate runs go generate recursively on a specified path or environment variable and can filter by regex. - - -
ghokin Parallelized formatter with no external dependencies for gherkin (cucumber, behat...). - - -
git-time-metric Simple, seamless, lightweight time tracking for Git. - - -
go-astitodo Parse TODOs in your GO code. - - -
go-bind-plugin go:generate tool for wrapping symbols exported by golang plugins (1.8 only). - - -
go-bsdiff Pure Go bsdiff and bspatch libraries and CLI tools. - - -
go-dry DRY (don't repeat yourself) package for Go. - - -
go-dump Go-Dump is a Golang package which helps you to dump a struct. 19 5 -
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. - - -
go-rate Timed rate limiter for Go. - - -
go-sitemap-generator XML Sitemap generator written in Go. - - -
go-torch Stochastic flame graph profiler for Go programs. - - -
go-trigger Go-lang global event triggerer, Register Events with an id and trigger the event from anywhere from your project. - - -
goback Go simple exponential backoff package. - - -
godaemon Utility to write daemons. - - -
godropbox Common libraries for writing Go services/applications from Dropbox. - - -
gohper Various tools/modules help for development. - - -
golarm Fire alarms with system events. - - -
golog Easy and lightweight CLI tool to time track your tasks. - - -
gopencils Small and simple package to easily consume REST APIs. - - -
goplaceholder a small golang lib to generate placeholder images. - - -
goreadability Webpage summary extractor using Facebook Open Graph and arc90's readability. - - -
goreleaser Deliver Go binaries as fast and easily as possible. - - -
goreporter Golang tool that does static analysis, unit testing, code review and generate code quality report. - - -
goseaweedfs SeaweedFS client library with almost full features. - - -
gostrutils Collections of string manipulation and conversion functions. - - -
gotenv Load environment variables from .env or any io.Reader in Go. - - -
gpath Library to simplify access struct fields with Go's expression in reflection. - - -
gubrak Golang utility library with syntactic sugar. It's like lodash, but for golang. - - -
handy Many utilities and helpers like string handlers/formatters and validators. - - -
htcat Parallel and Pipelined HTTP GET Utility. - - -
hub wrap git commands with additional functionality to interact with github from the terminal. - - -
hystrix-go Implements Hystrix patterns of programmer-defined fallbacks aka circuit breaker. - - -
immortal *nix cross-platform (OS agnostic) supervisor. - - -
intrinsic Use x86 SIMD without writing any assembly code. - - -
jump Jump helps you navigate faster by learning your habits. - - -
koazee Library inspired in Lazy evaluation and functional programming that takes the hassle out of working with arrays. - - -
lrserver LiveReload server for Go. - - -
mc Minio Client provides minimal tools to work with Amazon S3 compatible cloud storage and filesystems. - - -
mergo Helper to merge structs and maps in Golang. Useful for configuration default values, avoiding messy if-statements. - - -
mimemagic Pure Go ultra performant MIME sniffing library/utility. - - -
mimesniffer A MIME type sniffer for Go. - - -
mimetype Package for MIME type detection based on magic numbers. - - -
minify Fast minifiers for HTML, CSS, JS, XML, JSON and SVG file formats. - - -
minquery MongoDB / mgo.v2 query that supports efficient pagination (cursors to continue listing documents where we left off). - - -
mmake Modern Make. - - -
moldova Utility for generating random data based on an input template. - - -
mole cli app to easily create ssh tunnels. - - -
mssqlx Database client library, proxy for any master slave, master master structures. Lightweight and auto balancing in mind. - - -
multitick Multiplexor for aligned tickers. - - -
myhttp Simple API to make HTTP GET requests with timeout support. - - -
netbug Easy remote profiling of your services. - - -
okrun go run error steamroller. - - -
olaf Twitter Snowflake implemented in Go. - - -
onecache Caching library with support for multiple backend stores (Redis, Memcached, filesystem etc). - - -
panicparse Groups similar goroutines and colorizes stack dump. - - -
peco Simplistic interactive filtering tool. - - -
pgo Convenient functions for PHP community. - - -
pm Process (i.e. goroutine) manager with an HTTP API. - - -
profile Simple profiling support package for Go. - - -
rclient Readable, flexible, simple-to-use client for REST APIs. - - -
realize Go build system with file watchers and live reload. Run, build and watch file changes with custom paths. - - -
repeat Go implementation of different backoff strategies useful for retrying operations and heartbeating. - - -
request Go HTTP Requests for Humans™. - - -
rerate Redis-based rate counter and rate limiter for Go. - - -
rerun Recompiling and rerunning go apps when source changes. - - -
resty Simple HTTP and REST client for Go inspired by Ruby rest-client. - - -
retry The most advanced functional mechanism to perform actions repetitively until successful. - - -
retry A simple but highly configurable retry package for Go. - - -
retry Simple and easy retry mechanism package for Go. - - -
retry A pretty simple library to ensure your work to be done. - - -
retry-go Retrying made simple and easy for golang. - - -
robustly Runs functions resiliently, catching and restarting panics. - - -
scan Scan golang sql.Rows directly to structs, slices, or primitive types. - - -
serve A static http server anywhere you need. - - -
silk Read silk netflow files. - - -
sliceconv Slice conversion between primitive types. - - -
slicer Makes working with slices easier. - - -
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. - - -
sslice Create a slice which is always sorted. - - -
Storm Simple and powerful toolkit for BoltDB. - - -
structs Implement simple functions to manipulate structs. - - -
Task simple "Make" alternative. - - -
toolbox Slice, map, multimap, struct, function, data conversion utilities. Service router, macro evaluator, tokenizer. - - -
ugo ugo is slice toolbox with concise syntax for Go. - - -
UNIS Common Architecture™ for String Utilities in Go. - - -
usql usql is a universal command-line interface for SQL databases. - - -
util Collection of useful utility functions. (strings, concurrency, manipulations, ...). - - -
wuzz Interactive cli tool for HTTP inspection. - - -
xferspdy Xferspdy provides binary diff and patch library in golang. - - -

UUID

Libraries for working with UUIDs.

Name Description Stars Forks Issues (Open)
goid Generate and Parse RFC4122 compliant V4 UUIDs. - - -
ulid Go implementation of ULID (Universally Unique Lexicographically Sortable Identifier). - - -
uuid Generate, encode, and decode UUIDs v1 with fast or cryptographic-quality random node identifier. - - -
uuid Implementation of Universally Unique Identifier (UUID). Supports both creation and parsing of UUIDs. Actively maintained fork of satori uuid. - - -
wuid An extremely fast unique number generator, 10-135 times faster than UUID. - - -

Validation

Libraries for validation.

Name Description Stars Forks Issues (Open)
checkdigit Provide check digit algorithms (Luhn, Verhoeff, Damm) and calculators (ISBN, EAN, JAN, UPC, etc.). - - -
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. - - -
jio jio is a json schema validator similar to joi. - - -
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 Go package for data validation and filtering. support validate Map, Struct, Request(Form, JSON, url.Values, Uploaded Files) data and more features. - - -
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.

Name Description Stars Forks Issues (Open)
gh Scriptable server and net/http middleware for GitHub Webhooks. - - -
git2go Go bindings for libgit2. - - -
go-git highly extensible Git implementation in pure Go. - - -
go-vcs manipulate and inspect VCS repositories in Go. - - -
hercules gaining advanced insights from Git repository history. - - -
hgo Hgo is a collection of Go packages providing read-access to local Mercurial repositories. - - -

Video

Libraries for manipulating video.

Name Description Stars Forks Issues (Open)
gmf Go bindings for FFmpeg av* libraries. - - -
go-astisub Manipulate subtitles in GO (.srt, .stl, .ttml, .webvtt, .ssa/.ass, teletext, .smi, etc.). - - -
go-astits Parse and demux MPEG Transport Streams (.ts) natively in GO. - - -
go-m3u8 Parser and generator library for Apple m3u8 playlists. - - -
goav Comphrensive Go bindings for FFmpeg. - - -
gst Go bindings for GStreamer. - - -
libgosubs Subtitle format support for go. Supports .srt, .ttml, and .ass. - - -
libvlc-go Go bindings for libvlc 2.X/3.X/4.X (used by the VLC media player). - - -
v4l Video capture library for Linux, written in Go. - - -

Web Frameworks

Full stack web frameworks.

Name Description Stars Forks Issues (Open)
aah Scalable, performant, rapid development Web framework for Go. - - -
Aero High-performance web framework for Go, reaches top scores in Lighthouse. 113 5 0
Air An ideally refined web framework for Go. 340 20 2
Banjo Very simple and fast web framework for Go. 6 3 1
Beego beego is an open-source, high-performance web framework for the Go programming language. 20,414 4,150 597
Buffalo Bringing the productivity of Rails to Go! 4,416 351 58
Echo High performance, minimalist Go web framework. 13,905 1,251 23
Fireball More "natural" feeling web framework. 48 4 0
Gem Simple and fast web framework, friendly to REST API. 152 35 nil
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. 27,323 3,157 137
Gizmo Microservice toolkit used by the New York Times. 2,764 175 13
go-json-rest Quick and easy way to setup a RESTful JSON API. 3,304 368 32
go-rest Small and evil REST framework for Go. 114 10 2
goa Framework for developing microservices based on the design of Ruby's Praxis. 3,385 373 5
Golax A non Sinatra fast HTTP framework with support for Google custom methods, deep interceptors, recursion and more. 69 4 6
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. 233 22 5
Gondola The web framework for writing faster sites, faster. 314 22 5
gongular Fast Go web framework with input mapping/validation and (DI) Dependency Injection. 413 15 4
hiboot hiboot is a high performance web application framework with auto configuration and dependency injection support. 74 14 2
Iris Iris is the fastest community-driven web framework on (THIS) Earth. HTTP/2, MVC and more. Unbeatable free support for everyone. 14,738 1,529 52
Macaron Macaron is a high productive and modular design web framework in Go. 2,760 249 14
mango Mango is a modular web-application framework for Go, inspired by Rack, and PEP333. 338 36 9
Microservice The framework for the creation of microservices, written in Golang. 55 8 0
neo Neo is minimal and fast Go Web Framework with extremely simple API. 389 38 6
nio Modern, minimal and productive Go HTTP framework. 20 2 0
Resoursea REST framework for quickly writing resource based services. 29 2 0
REST Layer Framework to build REST/GraphQL API on top of databases with mostly configuration over code. 815 65 33
Revel High-productivity web framework for the Go language. 11,060 1,331 67
rex Rex is a library for modular development built upon gorilla/mux, fully compatible with net/http. 25 0 0
sawsij lightweight, open-source web framework for building high-performance, data-driven web applications. 2 1 0
tango Micro & pluggable web framework for Go. 809 108 nil
tigertonic Go framework for building JSON web services inspired by Dropwizard. 994 77 24
traffic Sinatra inspired regexp/pattern mux and web framework for Go. 517 28 0
uAdmin Fully featured web framework for Golang, inspired by Django. 39 9 5
utron Lightweight MVC framework for Go(Golang). 2,132 142 6
vox A golang web framework for humans, inspired by Koa heavily. 26 4 8
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). 70 6 1
YARF Fast micro-framework designed to build REST APIs and web services in a fast and simple way. 48 3 1

Middlewares

Actual middlewares

Name Description Stars Forks Issues (Open)
client-timing An HTTP client for Server-Timing header. - - -
CORS Easily add CORS capabilities to your API. - - -
formjson Transparently handle JSON input as a standard form POST. - - -
go-server-timing Add/parse Server-Timing header. - - -
Limiter Dead simple rate limit middleware for Go. - - -
ln-paywall Go middleware for monetizing APIs on a per-request basis with the Lightning Network (Bitcoin). - - -
Tollbooth Rate limit HTTP request handler. - - -
XFF Handle X-Forwarded-For header and friends. - - -

Libraries for creating HTTP middlewares

Name Description Stars Forks Issues (Open)
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. - - -
gores Go package that handles HTML, JSON, XML and etc. responses. Useful for RESTful APIs. - - -
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. - - -
renderer Simple, lightweight and faster response (JSON, JSONP, XML, YAML, HTML, File) rendering package for Go. - - -
rye Tiny Go middleware library (with canned Middlewares) that supports JWT, CORS, Statsd, and Go 1.7 context. - - -
stats Go middleware that stores various information about your web application. - - -

Routers

Name Description Stars Forks Issues (Open)
alien Lightweight and fast http router from outer space. - - -
bellt A simple Go HTTP router. - - -
Bone Lightning Fast HTTP Multiplexer. - - -
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. - - -
gocraft/web Mux and middleware package 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. - - -
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. - - -
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. - - -
violetear Go HTTP router. - - -
xmux High performance muxer based on httprouter with net/context support. - - -
xujiajun/gorouter A simple and fast HTTP router for Go. - - -

Windows

Name Description Stars Forks Issues (Open)
d3d9 Go bindings for Direct3D9. - - -
go-ole Win32 OLE implementation for golang. - - -
gosddl Converter from SDDL-string to user-friendly JSON. SDDL consist of four part: Owner, Primary Group, DACL, SACL. - - -

XML

Libraries and tools for manipulating XML.

Name Description Stars Forks Issues (Open)
XML-Comp Simple command line XML comparer that generates diffs of folders, files and tags. - - -
xml2map XML to MAP converter written Golang. - - -
xmlwriter Procedural XML generation API based on libxml2's xmlwriter module. - - -
xpath XPath package for Go. - - -
xquery XQuery lets you extract data from HTML/XML documents using XPath expression. - - -
zek Generate a Go struct from XML. - - -

Tools

Go software and plugins.

Code Analysis

Name Description Stars Forks Issues (Open)
apicompat Checks recent changes to a Go project for backwards incompatible changes. - - -
dupl 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-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-critic source code linter that brings checks that are currently not implemented in other linters. - - -
go-mod-outdated An easy way to find outdated dependencies of your Go projects. - - -
go-outdated Console application that displays outdated packages. - - -
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. - - -
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. - - -
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. - - -
goreturns Adds zero-value return statements to match the func return types. - - -
gosimple gosimple is a linter for Go source code that specialises on simplifying code. - - -
gostatus Command line tool, shows the status of repositories that contain Go packages. - - -
lint Run linters as part of go test. - - -
php-parser A Parser for PHP written in Go. - - -
staticcheck staticcheck is go vet on steroids, applying a ton of static analysis checks you might be used to from tools like ReSharper for C#. - - -
tarp tarp finds functions and methods without direct unit tests in Go source code. - - -
unconvert Remove unnecessary type conversions from Go source. - - -
unused unused checks Go code for unused constants, variables, functions and types. - - -
validate Automatically validates struct fields with tags. - - -

Editor Plugins

Name Description Stars Forks Issues (Open)
Go plugin for JetBrains IDEs Go plugin for JetBrains IDEs. - - -
go-language-server A wrapper to turn the VSCode go extension into a language server supporting the language-server-protocol. - - -
go-mode Go mode for GNU/Emacs. - - -
go-plus Go (Golang) Package For Atom That Adds Autocomplete, Formatting, Syntax Checking, Linting and Vetting. - - -
gocode Autocompletion daemon for the Go programming language. - - -
goprofiling This extension adds benchmark profiling support for the Go language to VS Code. - - -
GoSublime Golang plugin collection for the text editor SublimeText 3 providing code completion and other IDE-like features. - - -
gounit-vim Vim plugin for generating Go tests based on the function's or method's signature. - - -
theia-go-extension Go language support for the Theia IDE. - - -
velour IRC client for the acme editor. - - -
vim-compiler-go Vim plugin to highlight syntax errors on save. - - -
vim-go Go development plugin for Vim. - - -
vscode-go Extension for Visual Studio Code (VS Code) which provides support for the Go language. - - -
Watch Runs a command in an acme win on file changes. - - -

Go Generate Tools

Name Description Stars Forks Issues (Open)
generic flexible data type for Go. - - -
genny Elegant generics for Go. - - -
gocontracts brings design-by-contract to Go by synchronizing the code with the documentation. - - -
gonerics Idiomatic Generics in Go. - - -
gotests Generate Go tests from your source code. - - -
gounit Generate Go tests using your own templates. - - -
re2dfa Transform regular expressions into finite state machines and output Go source code. - - -
TOML-to-Go Translates TOML into a Go type in the browser instantly. - - -

Go Tools

Name Description Stars Forks Issues (Open)
colorgo Wrapper around go command for colorized go build output. - - -
depth Visualize dependency trees of any package by analyzing imports. - - -
gb An easy to use project based build tool for the Go programming language. - - -
generator-go-lang A Yeoman generator to get new Go projects started. - - -
go-callvis Visualize call graph of your Go program using dot format. - - -
go-pkg-complete Bash completion for go and wgo. - - -
go-swagger Swagger 2.0 implementation for go. Swagger is a simple yet powerful representation of your RESTful API. - - -
godbg Implementation of Rusts dbg! macro for quick and easy debugging during development. - - -
OctoLinker Navigate through go files efficiently with the OctoLinker browser extension for GitHub. - - -
richgo Enrich go test outputs with text decorations. - - -
rts RTS: response to struct. Generates Go structs from server responses. - - -

Software Packages

Software written in Go.

DevOps Tools

Name Description Stars Forks Issues (Open)
aptly aptly is a Debian repository management tool. - - -
aurora Cross-platform web-based Beanstalkd queue server console. - - -
awsenv Small binary that loads Amazon (AWS) environment variables for a profile. - - -
Banshee Anomalies detection system for periodic metrics. - - -
Blast A simple tool for API load testing and batch jobs. - - -
bombardier Fast cross-platform HTTP benchmarking tool. - - -
bosun Time Series Alerting Framework. - - -
DepCharge Helps orchestrating the execution of commands across the many dependencies in larger projects. - - -
dogo Monitoring changes in the source file and automatically compile and run (restart). - - -
drone-jenkins Trigger downstream Jenkins jobs using a binary, docker or Drone CI. - - -
drone-scp Copy files and artifacts via SSH using a binary, docker or Drone CI. - - -
Dropship Tool for deploying code via cdn. - - -
easyssh-proxy Golang package for easy remote execution through SSH and SCP downloading via ProxyCommand. - - -
fac Command-line user interface to fix git merge conflicts. - - -
gaia Build powerful pipelines in any programming language. - - -
Gitea Fork of Gogs, entirely community driven. - - -
gitea-github-migrator Migrate all your GitHub repositories, issues, milestones and labels to your Gitea instance. - - -
go-furnace Hosting solution written in Go. Deploy your Application with ease on AWS, GCP or DigitalOcean. - - -
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. - - -
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. - - -
Pomerium Pomerium is an identity-aware access proxy. - - -
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 response 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. - - -
Wide Web-based IDE for Teams using Golang. - - -
winrm-cli Cli tool to remotely execute commands on Windows machines. - - -

Other Software

Name Description Stars Forks Issues (Open)
borg Terminal based search engine for bash snippets. - - -
boxed Dropbox based blog engine. - - -
Cherry Tiny webchat server in Go. - - -
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. - - -
DDNS Personal DDNS client with Digital Ocean Networking DNS as backend. - - -
Docker Open platform for distributed applications for developers and sysadmins. - - -
Documize Modern wiki software that integrates data from SaaS tools. - - -
drive Google Drive client for the commandline. - - -
Duplicacy A cross-platform network and cloud backup tool based on the idea of lock-free deduplication. - - -
gfile Securely transfer files between two computers, without any third party, over WebRTC. - - -
Go Package Store App that displays updates for the Go packages in your GOPATH. - - -
go-peerflix Video streaming torrent client. - - -
GoBoy Nintendo Game Boy Color emulator written in Go. - - -
gocc Gocc is a compiler kit for Go written in Go. - - -
GoDNS A dynamic DNS client tool, supports DNSPod & HE.net, written in Go. - - -
GoDocTooltip Chrome extension for Go Doc sites, which shows function description as tooltip at function list. - - -
GoLand Full featured cross-platform Go IDE. - - -
Gor Http traffic replication tool, for replaying traffic from production to stage/dev environments in real-time. - - -
hugo Fast and Modern Static Website Engine. - - -
ide Browser accessible IDE. Designed for Go with Go. - - -
ipe Open source Pusher server implementation compatible with Pusher client libraries written in GO. - - -
joincap Command-line utility for merging multiple pcap files together. - - -
Juju Cloud-agnostic service deployment and orchestration - supports EC2, Azure, Openstack, MAAS and more. - - -
Leaps Pair programming service using Operational Transforms. - - -
lgo Interactive Go programming with Jupyter. It supports code completion, code inspection and 100% Go compatibility. - - -
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. - - -
orange-cat Markdown previewer written in Go. - - -
Orbit A simple tool for running commands and generating files from templates. - - -
peg Peg, Parsing Expression Grammar, is an implementation of a Packrat parser generator. - - -
Pipe A small and beautiful blogging platform. - - -
restic De-duplicating backup program. - - -
rkt App Container runtime that integrates with init systems, is compatible with other container formats like Docker, and supports alternative execution engines like KVM. - - -
scc Sloc Cloc and Code, a very fast accurate code counter with complexity calculations and COCOMO estimates. - - -
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). - - -
snap Powerful telemetry framework. - - -
Snitch Simple way to notify your team and many tools when someone has deployed any application via Tsuru. - - -
Stack Up Stack Up, a super simple deployment tool - just Unix - think of it like 'make' for a network of servers. - - -
syncthing Open, decentralized file synchronization tool and protocol. - - -
term-quiz Quizzes for your terminal. - - -
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. - - -
wellington Sass project management tool, extends the language with sprite functions (like Compass). - - -

Resources

Where to discover new Go libraries.

Benchmarks

Name Description Stars Forks Issues (Open)
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. - - -
go-http-routing-benchmark Go HTTP request router benchmark and comparison. - - -
go-web-framework-benchmark Go web framework benchmark. - - -
go_serialization_benchmarks Benchmarks of Go serialization methods. - - -
gocostmodel Benchmarks of common basic operations for the Go language. - - -
golang-micro-benchmarks Tiny collection of Go micro benchmarks. The intent is to compare some language features to others. - - -
golang-sql-benchmark Collection of benchmarks for popular Go database/SQL utilities. - - -
gospeed Go micro-benchmarks for calculating the speed of language constructs. - - -
kvbench Key/Value database benchmark. - - -
skynet Skynet 1M threads microbenchmark. - - -
speedtest-resize Compare various Image resize algorithms for the Go language. - - -

Conferences

Name Description
Capital Go Washington, D.C., USA.
dotGo Paris, France.
GoCon Tokyo, Japan.
GoDays Berlin, Germany.
GoLab Florence, Italy.
GolangUK London, UK.
GopherChina Shanghai, China.
GopherCon Denver, USA.
GopherCon Brazil Florianópolis, BR.
GopherCon Europe Reykjavik, Iceland.
GopherCon India Pune, India.
GopherCon Israel Tel Aviv, Israel.
GopherCon Russia Moscow, Russia.
GopherCon Singapore Mapletree Business City, Singapore.
GopherCon Vietnam Ho Chi Minh City, Vietnam.
GothamGo New York City, USA.
GoWayFest Minsk, Belarus.

E-Books

Name Description

Gophers

Name Description Stars Forks Issues (Open)
Free Gophers Pack Gopher graphics pack by Maria Letta with illustrations and emotional characters in vector and raster. - - -
Go-gopher-Vector Go gopher Vector Data [.ai, .svg]. - - -
gopher-logos adorable gopher logos. - - -
gopher-stickers - - -
gopher-vector - - -
gophericons - - -
gopherize.me Gopherize yourself. - - -
gophers Gopher artworks by Ashley McNamara. - - -
gophers Free gophers. - - -
gophers random gopher graphics. - - -
gophers Gopher amigurumi toy pattern. - - -

Meetups

Add the group of your city/country here (send PR)

Twitter

Websites

Name Description
Awesome Go @LibHunt Your go-to Go Toolbox.
Awesome Remote Job Curated list of awesome remote jobs. A lot of them are looking for Go hackers.
awesome-awesomeness List of other amazingly awesome lists.
CodinGame Learn Go by solving interactive tasks using small games as practical examples.
Go Blog The official Go blog.
Go Challenge Learn Go by solving problems and getting feedback from Go experts.
Go Community on Hashnode Community of Gophers on Hashnode.
Go Forum Forum to discuss Go.
Go In 5 Minutes 5 minute screencasts focused on getting one thing done.
Go Projects List of projects on the Go community wiki.
Go Report Card A report card for your Go package.
gocryforhelp Collection of Go projects that needs help. Good place to start your open-source way in Go.
godoc.org Documentation for open source Go packages.
Golang Flow Post Updates, News, Packages and more.
Golang News Links and news about Go programming.
golang-graphics Collection of Go images, graphics, and art.
golang-nuts Go mailing list.
Google Plus Community The Google+ community for #golang enthusiasts.
Gopher Community Chat Join Our New Slack Community For Gophers (Understand how it came).
Gophercises Free coding exercises for budding gophers.
gowalker.org Go Project API documentation.
justforfunc Youtube channel dedicated to Go programming language tips and tricks, hosted by Francesc Campoy @francesc.
r/Golang News about Go.
Trending Go repositories on GitHub today Good place to find new Go libraries.
TutorialEdge - Golang

Tutorials

Name Description
50 Shades of Go Traps, Gotchas, and Common Mistakes for New Golang Devs.
A Guide to Golang E-Commerce Building a Golang site for e-commerce (demo included).
A Tour of Go Interactive tour of Go.
Build web application with Golang Golang ebook intro how to build a web app with golang.
Building Go Web Applications and Microservices Using Gin Get familiar with Gin and find out how it can help you reduce boilerplate code and build a request handling pipeline.
Caching Slow Database Queries How to cache slow database queries.
Canceling MySQL How to cancel MySQL queries.
Ethereum Development with Go A little e-book on Ethereum Development with Go.
Games With Go A video series teaching programming and game development.
Go By Example Hands-on introduction to Go using annotated example programs.
Go Cheat Sheet Go's reference card.
Go database/sql tutorial Introduction to database/sql.
Go Playground for iOS Interactively edit & play Go snippets on your mobile device.
Go WebAssembly Tutorial - Building a Simple Calculator
Golang for Node.js Developers Examples of Golang compared to Node.js for learning.
Golangbot Tutorials to get started with programming in Go.
Hackr.io Learn Go from the best online golang tutorials submitted & voted by the golang programming community.
How to Use Godog for Behavior-driven Development in Go Get started with Godog — a Behavior-driven development framework for building and testing Go applications.
Learn Go with TDD Learn Go with test-driven development.
package main YouTube channel about Programming in Go.
The world’s easiest introduction to WebAssembly with Golang
Working with Go Intro to go for experienced programmers.
Your basic Go Huge collection of tutorials and how to's.

Thanks to Awesome Go, Ecpplus, and all who related this project. Thank you!

About

A curated list of amazingly awesome Go libraries, resources and shiny things.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published