Awesome Go has no monthly fee, but we have employees who work hard to keep it running. With money raised, we can repay the effort of each person involved! You can see how we calculate our billing and distribution as it is open to the entire community. Want to be a supporter of the project click here.
A curated list of awesome Go frameworks, libraries, and software. Inspired by awesome-python.
chromem-go - Embeddable vector database for Go with Chroma-like interface and zero third-party dependencies. In-memory with optional persistence.
fun - The simplest but powerful way to use large language models (LLMs) in Go.
langchaingo - LangChainGo is a framework for developing applications powered by language models.
langgraphgo - A Go library for building stateful, multi-actor applications with LLMs, built on the concept of LangGraph,with a lot of builtin Agent architectures.
LocalAI - Open Source OpenAI alternative, self-host AI models.
Libraries for implementing authentication and authorization.
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 it, and start building your app without having to build an authentication system each time.
authgate - A lightweight OAuth 2.0 Authorization Server supporting Device Authorization Grant (RFC 8628), Authorization Code Flow with PKCE (RFC 6749 + RFC 7636), and Client Credentials Grant for machine-to-machine authentication.
casbin - Authorization library that supports access control models like ACL, RBAC, and ABAC.
cookiestxt - provides a parser of cookies.txt file format.
go-githubauth - Utilities for GitHub authentication: generate and use GitHub application and installation tokens.
go-guardian - Go-Guardian is a golang library that provides a simple, clean, and idiomatic way to create powerful modern API and web authentication that supports LDAP, Basic, Bearer token, and Certificate based authentication.
go-iam - Developer-first Identity and Access Management system with a simple UI.
go-jose - Fairly complete implementation of the JOSE working group’s JSON Web Token, JSON Web Signatures, and JSON Web Encryption specs.
go-jwt - JWT authentication package providing access tokens and refresh tokens with fingerprinting, Redis storage, and automatic refresh capabilities.
goiabada - An open-source authentication and authorization server supporting OAuth2 and OpenID Connect.
gologin - chainable handlers for login with OAuth1 and OAuth2 authentication providers.
gorbac - provides a lightweight role-based access control (RBAC) implementation in Golang.
gosession - This is quick session for net/http in GoLang. This package is perhaps the best implementation of the session mechanism, or at least it tries to become one.
goth - provides a simple, clean, and idiomatic way to use OAuth and OAuth2. Handles multiple providers out of the box.
jeff - Simple, flexible, secure, and idiomatic web session management with pluggable backends.
jwt - Safe, simple, and fast JSON Web Tokens for Go.
jwt-auth - JWT middleware for Golang http servers with many configuration options.
jwt-go - A full featured implementation of JSON Web Tokens (JWT). This library supports the parsing and verification as well as the generation and signing of JWTs.
jwx - Go module implementing various JWx (JWA/JWE/JWK/JWS/JWT, otherwise known as JOSE) technologies.
keto - Open Source (Go) implementation of “Zanzibar: Google’s Consistent, Global Authorization System”. Ships gRPC, REST APIs, newSQL, and an easy and granular permission language. Supports ACL, RBAC, and other access models.
loginsrv - JWT login microservice with pluggable backends such as OAuth2 (Github), htpasswd, osiam.
oauth2 - Successor of goauth2. Generic OAuth 2.0 package that comes with JWT, Google APIs, Compute Engine, and App Engine support.
oidc - Easy to use OpenID Connect client and server library written for Go and certified by the OpenID Foundation.
openfga - Implementation of fine-grained authorization based on the “Zanzibar: Google’s Consistent, Global Authorization System” paper. Backed by CNCF.
cometbft - A distributed, Byzantine fault-tolerant, deterministic state machine replication engine. It is a fork of Tendermint Core and implements the Tendermint consensus algorithm.
cosmos-sdk - A Framework for Building Public Blockchains in the Cosmos Ecosystem.
gno - A comprehensive smart contract suite built with Golang and Gnolang, a deterministic, purpose-built Go variant for blockchains.
go-ethereum - Official Go implementation of the Ethereum protocol.
gosemble - A Go-based framework for building Polkadot/Substrate-compatible runtimes.
gossamer - A Go implementation of the Polkadot Host.
kubo - An IPFS implementation in Go. It provides content-addressable storage which can be used for decentralized storage in DApps. It is based on the IPFS protocol.
lnd - A complete implementation of a Lightning Network node.
nview - Local monitoring tool for a Cardano Node. It’s a TUI (terminal user interface) designed to fit most screens.
solana-go - Go library to interface with Solana JSON RPC and WebSocket interfaces.
tendermint - High-performance middleware for transforming a state machine written in any programming language into a Byzantine Fault Tolerant replicated state machine using the Tendermint consensus and blockchain protocols.
go-palette - Go library that provides elegant and convenient style definitions using ANSI colors. Fully compatible & wraps the fmt library for nice terminal layouts.
command-chain - A go library for configure and run command chains - such as pipelining in unix shells.
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.
console Closed-loop application library for Cobra commands, with oh-my-posh prompts, and more.
Dnote - A simple command line notebook with multi-device sync.
elvish - An expressive programming language and a versatile interactive shell.
env - Tag-based environment configuration for structs.
flaggy - A robust and idiomatic flags package with excellent subcommand support.
flagvar - A collection of flag argument types for Go’s standard flag package.
flash-flags - Ultra-fast, zero-dependency, POSIX-compliant flag parsing library that can be used as drop-in stdlib replacement with security hardening.
getopt - An accurate Go getopt, validated against the GNU libc implementation.
go-getoptions - Go option parser inspired by the flexibility of Perl’s GetOpt::Long.
go-readline-ny - A customizable line-editing library with Emacs keybindings, Unicode support, completion, and syntax highlighting. Used in NYAGOS shell.
gocmd - Go library for building command line applications.
goopt - A declarative, struct-tag based CLI framework for Go, with a broad feature set such as hierarchical commands/flags, i18n, shell completion, and validation.
hashicorp/cli - Go library for implementing command-line interfaces.
hiboot cli - cli application framework with auto configuration and dependency injection.
job - JOB, make your short-term command as a long-term job.
kingpin - Command line and flag parser supporting sub commands (superseded by kong; see below).
liner - Go readline-like library for command-line interfaces.
mcli - A minimal but very powerful cli library for Go.
mkideal/cli - Feature-rich and easy to use command-line package based on golang struct tags.
mow.cli - Go library for building CLI applications with sophisticated flag and argument parsing and validation.
aconfig - Simple, useful and opinionated config loader.
argus - File watching and configuration management with MPSC ring buffer, adaptive batching strategies, and universal format parsing (JSON, YAML, TOML, INI, HCL, Properties).
azureappconfiguration - The configuration provider for consuming data in Azure App Configuration from Go applications.
bcl - BCL is a configuration language similar to HCL.
cleanenv - Minimalistic configuration reader (from files, ENV, and wherever you want).
config - Cloud native application configuration. Bind ENV to structs in only two lines.
config - configure your app using file, environment variables, or flags in two lines of code.
configuration - Library for initializing configuration structs from env variables, files, flags and ‘default’ tag.
configuro - opinionated configuration loading & validation framework from ENV and Files focused towards 12-Factor compliant applications.
confiq - Structured data format to config struct decoder library for Go - supporting multiple data formats.
confita - Load configuration in cascade from multiple backends into a struct.
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.
enflag - Container-oriented, zero-dependency configuration library that unifies Env variable and Flag parsing. Uses generics for type safety, without reflection or struct tags.
env - Parse environment variables to Go structs (with defaults).
env - A lightweight package for loading environment variables into structs.
env - An environment utility package with support for unmarshaling into structs.
envconfig - Read your configuration from environment variables.
envyaml - Yaml with environment variables reader. it helps to have secrets as environment variable but load them configs as structured Yaml.
fig - Tiny library for reading configuration from a file and from environment variables (with validation & defaults).
genv - Read environment variables easily with dotenv support.
go-array - A Go package that read or set data from map, slice or json.
go-aws-ssm - Go package that fetches parameters from AWS System Manager - Parameter Store.
go-cfg - The library provides a unified way to read configuration data into a structure from various sources, such as env, flags, and configuration files (.json, .yaml, .toml, .env).
go-conf - Simple library for application configuration based on annotated structs. It supports reading the configuration from environment variables, config files and command line parameters.
go-config - Simple and convenient library for working with app configurations.
go-ini - A Go package that marshals and unmarshals INI-files.
go-ssm-config - Go utility for loading configuration parameters from AWS SSM (Parameter Store).
go-up - A simple configuration library with recursive placeholders resolution and no magic.
GoCfg - Config manager with Struct Tags based contracts, custom value providers, parsers, and documentation generation. Customizable yet simple.
godotenv - Go port of Ruby’s dotenv library (Loads environment variables from .env).
GoLobby/Config - GoLobby Config is a lightweight yet powerful configuration manager for the Go programming language.
gone/jconf - Modular JSON configuration. Keep your config structs along with the code they configure and delegate parsing to submodules without sacrificing full config serialization.
gonfig - Tag-based configuration parser which loads values from different providers into typesafe struct.
gookit/config - application config manage(load,get,set). support JSON, YAML, TOML, INI, HCL. multi file load, data override merge.
harvester - Harvester, a easy to use static and dynamic configuration package supporting seeding, env vars and Consul integration.
hjson - Human JSON, a configuration file format for humans. Relaxed syntax, fewer mistakes, more comments.
hocon - Configuration library for working with the HOCON(a human-friendly JSON superset) format, supports features like environment variables, referencing other values, comments and multiple files.
koanf - Light weight, extensible library for reading config in Go applications. Built in support for JSON, TOML, YAML, env, command line.
konf - The simplest API for reading/watching config from file, env, flag and clouds (e.g. AWS, Azure, GCP).
konfig - Composable, observable and performant config handling for Go for the distributed processing era.
kong - Command-line parser with support for arbitrarily complex command-line structures and additional sources of configuration such as YAML, JSON, TOML, etc (successor to kingpin).
nasermirzaei89/env - Simple useful package for read environment variables.
nfigure - Per-library struct-tag based configuration from command lines (Posix & Go-style); environment, JSON, YAML
onion - Layer based configuration for Go, Supports JSON, TOML, YAML, properties, etcd, env, and encryption using PGP.
piper - Viper wrapper with config inheritance and key generation.
sonic - A blazingly fast JSON serializing & deserializing library.
swap - Instantiate/configure structs recursively, based on build environment. (YAML, TOML, JSON and env).
typenv - Minimalistic, zero dependency, typed environment variables library.
uConfig - Lightweight, zero-dependency, and extendable configuration management.
Benthos - A message streaming bridge between a range of protocols.
CloudQuery - A high-performance ELT data integration framework with pluggable architecture.
omniparser - A versatile ETL library that parses text input (CSV/txt/JSON/XML/EDI/X12/EDIFACT/etc) in streaming fashion and transforms data into JSON output using data-driven schema.
bloomfilter - Yet another Bloomfilter implementation in Go, compatible with Java’s Guava library.
boomfilters - Probabilistic data structures for processing continuous, unbounded streams.
cuckoo-filter - Cuckoo filter: a comprehensive cuckoo filter, which is configurable and space optimized compared with other implements, and all features mentioned in original paper are available.
cuckoofilter - Cuckoo filter: a good alternative to a counting bloom filter implemented in Go.
ring - Go implementation of a high performance, thread safe bloom filter.
Data Structure and Algorithm Collections
algorithms - Algorithms and data structures.CLRS study.
go-datastructures - Collection of useful, performant, and thread-safe data structures.
gods - Go Data Structures. Containers, Sets, Lists, Stacks, Maps, BidiMaps, Trees, HashSet etc.
gostl - Data structure and algorithm library for go, designed to provide functions similar to C++ STL.
Iterators
gloop - Convenient looping using Go’s range-over-func feature.
goterator - Iterator implementation to provide map and reduce functionalities.
iter - Go implementation of C++ STL iterators and algorithms.
Maps
See also Database for more complex key-value stores, and Trees for
additional ordered map implementations.
cmap - a thread-safe concurrent map for go, support using interface{} as key and auto scale up shards.
concurrent-swiss-map - A high-performance, thread-safe generic concurrent hash map implementation with Swiss Map.
go-shelve - A persistent, map-like object for the Go programming language. Supports multiple embedded key-value stores.
goradd/maps - Go 1.18+ generic map interface for maps; safe maps; ordered maps; ordered, safe maps; etc.
hmap - HMap is a concurrent and secure, generic support Map implementation designed to provide an easy-to-use API.
Miscellaneous Data Structures and Algorithms
combo - Combinatorial operations including permutations, combinations, and combinations-with-replacement.
concurrent-writer - Highly concurrent drop-in replacement for bufio.Writer.
count-min-log - Go implementation Count-Min-Log sketch: Approximately counting with approximate counters (Like Count-Min sketch but using less memory).
list - A generic, thread-safe doubly linked list with full iterator support and an intrusive singly linked list for embedded use; a feature-rich replacement for container/list.
memlog - An easy to use, lightweight, thread-safe and append-only in-memory data structure inspired by Apache Kafka.
queue - Multiple thread-safe, generic queue implementations for Go.
Sets
dsu - Disjoint Set data structure implementation in Go.
golang-set - Thread-Safe and Non-Thread-Safe high-performance sets for Go.
goset - A useful Set collection implementation for Go.
set - Simple set data structure implementation in Go using LinkedHashMap.
Bitcask - Bitcask is an embeddable, persistent and fast key-value (KV) database written in pure Go with predictable read/write performance, low latency and high throughput thanks to the bitcask on-disk layout (LSM+WAL).
buntdb - Fast, embeddable, in-memory key/value database for Go with custom indexing and spatial support.
clover - A lightweight document-oriented NoSQL database written in pure Golang.
Coffer - Simple ACID key-value database that supports transactions.
column - High-performance, columnar, embeddable in-memory store with bitmap indexing and transactions.
CovenantSQL - CovenantSQL is a SQL database on blockchain.
Databunker - Personally identifiable information (PII) storage service built to comply with GDPR and CCPA.
dgraph - Scalable, Distributed, Low Latency, High Throughput Graph Database.
DiceDB - An open-source, fast, reactive, in-memory database optimized for modern hardware. Higher throughput and lower median latencies, making it ideal for modern workloads.
libradb - LibraDB is a simple database with less than 1000 lines of code for learning.
LinDB - LinDB is a scalable, high performance, high availability distributed time series database.
lotusdb - Fast k/v database compatible with lsm and b+tree.
Milvus - Milvus is a vector database for embedding management, analytics and search.
moss - Moss is a simple LSM key-value storage engine written in 100% Go.
NoKV - High-performance distributed KV storage based on LSM Tree.
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.
objectbox-go - High-performance embedded Object Database (NoSQL) with Go API.
pebble - RocksDB/LevelDB inspired key-value database in Go.
piladb - Lightweight RESTful database engine based on stack data structures.
pogreb - Embedded key-value store for read-heavy workloads.
prometheus - Monitoring system and time series database.
pudge - Fast and simple key/value store written using Go’s standard library.
unitdb - Fast timeseries database for IoT, realtime messaging applications. Access unitdb with pubsub over tcp or websocket using github.com/unit-io/unitd application.
Vasto - A distributed high-performance key-value store. On Disk. Eventual consistent. HA. Able to grow or shrink without service interruption.
VictoriaMetrics - fast, resource-effective and scalable open source time series database. May be used as long-term remote storage for Prometheus. Supports PromQL.
Database Schema Migration
atlas - A Database Toolkit. A CLI designed to help companies better work with their data.
avro - Discover SQL schemas and convert them to AVRO schemas. Query SQL records into AVRO bytes.
bytebase - Safe database schema change and version control for DevOps teams.
darwin - Database schema evolution library for Go.
dbmate - A lightweight, framework-agnostic database migration tool.
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.
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).
Relational Database Drivers
avatica - Apache Avatica/Phoenix SQL driver for database/sql.
go-sqlite3 - SQLite3 driver for go that uses database/sql.
go-sqlite3 - This Go module is compatible with the database/sql driver. It allows embedding SQLite into your application, provides direct access to its C API, supports SQLite VFS, and also includes a GORM driver.
godror - Oracle driver for Go, using the ODPI-C driver.
go-mongox - A Go Mongo library based on the official driver, featuring streamlined document operations, generic binding of structs to collections, built-in CRUD, aggregation, automated field updates, struct validation, hooks, and plugin-based programming.
Kivik - Kivik provides a common Go and GopherJS client library for CouchDB, PouchDB, and similar databases.
mgm - MongoDB model-based ODM for Go (based on official MongoDB driver).
mgo - (unmaintained) 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.
approx - A Duration extension supporting parsing/printing durations in days, weeks and years.
carbon - A simple, semantic and developer-friendly time package for golang.
carbon - Simple Time extension with a lot of util methods, ported from PHP Carbon library.
cronrange - Parses Cron-style time range expressions, checks if the given time is within any ranges.
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-anytime - Parse dates/times like “next dec 22nd at 3pm” and ranges like “from today until next thursday” without knowing the format in advance.
go-date-fns - A comprehensive date utility library for Go, inspired by date-fns, with 140+ pure and immutable functions.
dot - distributed sync using operational transformation/OT.
doublejump - A revamped Google’s jump consistent hash.
dragonboat - A feature complete and high performance multi-group Raft library in Go.
Dragonfly - Provide efficient, stable and secure file distribution and image acceleration based on p2p technology to be the best practice and standard solution in cloud native architectures.
drmaa - Job submission library for cluster schedulers based on the DRMAA standard.
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.
gmsec - A Go distributed systems development framework.
go-doudou - A gossip protocol and OpenAPI 3.0 spec based decentralized microservice framework. Built-in go-doudou cli focusing on low-code and rapid dev can power up your productivity.
go-eagle - A Go framework for the API or Microservice with handy scaffolding tools.
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.
go-micro - A distributed systems development framework.
go-pdu - A decentralized identity-based social network.
go-sundheit - A library built to provide support for defining async service health checks for golang services.
go-zero - A web and rpc framework. It’s born to ensure the stability of the busy sites with resilient design. Builtin goctl greatly improves the development productivity.
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.
jsonrpc - The jsonrpc package helps implement of JSON-RPC 2.0.
Kitex - A high-performance and strong-extensibility Golang RPC framework that helps developers build microservices. If the performance and extensibility are the main concerns when you develop microservices, Kitex can be a good choice.
Kratos - A modular-designed and easy-to-use microservices framework in Go.
liftbridge - Lightweight, fault-tolerant message streams for NATS.
lura - Ultra performant API Gateway framework with middlewares.
micro - A distributed systems runtime for the cloud and beyond.
mochi mqtt - Fully spec compliant, embeddable high-performance MQTT v5/v3 broker for IoT, smarthome, and pubsub.
NATS - NATS is a simple, secure, and performant communications system for digital systems, services, and devices.
DDNS - Personal DDNS client with Digital Ocean Networking DNS as backend.
dyndns - Background Go process to regularly and automatically check your IP Address and make updates to (one or many) Dynamic DNS records for Google domains whenever your address changes.
GoDNS - A dynamic DNS client tool, supports DNSPod & HE.net, written in Go.
emperror - Error handling tools and best practices for Go libraries and applications.
eris - A better way to handle, trace, and log errors in Go. Compatible with the standard error library and github.com/pkg/errors.
errlog - Hackable package that determines responsible source code for an error (and some other fast-debugging features). Pluggable to any logger in-place.
errors - Drop-in replacement for the standard library errors package and github.com/pkg/errors. Provides various error handling primitives.
errors - Simple golang error handling with classification primitives.
errors - The most simple error wrapper with awesome performance and minimal memory overhead.
errors - Providing errors with a stack trace and optional structured details. Compatible with github.com/pkg/errors API but does not use it internally.
errors - Drop-in replacement for builtin Go errors. This is a minimal error handling package with custom error types, user friendly messages, Unwrap & Is. With very easy to use and straightforward helper functions.
errors - Go error library with error portability over the network.
errorx - A feature rich error package with stack traces, composition of errors and more.
exception - A simple utility package for exception handling with try-catch in Golang.
Falcon - A Simple Yet Highly Powerful Package For Error Handling.
Fault - An ergonomic mechanism for wrapping errors in order to facilitate structured metadata and context for error values.
go-multierror - Go (golang) package for representing a list of errors as a single error.
metaerr - A library to create your custom error builders producing structured errors with metadata from different sources and optional stacktraces.
multierr - Package for representing a list of errors as a single error.
oops - Error handling with context, stack trace and source fragments.
tracerr - Golang errors with stack trace and source fragments.
go-exiftool - Go bindings for ExifTool, the well-known library used to extract as much metadata as possible (EXIF, IPTC, …) from files (pictures, PDF, office, …).
accounting - money and currency formatting for golang.
ach - A reader, writer, and validator for Automated Clearing House (ACH) files.
bbgo - A crypto trading bot framework written in Go. Including common crypto exchange API, standard indicators, back-testing and many built-in strategies.
currency - Handles currency amounts, provides currency information and formatting.
currency - High performant & accurate currency computation package.
dec128 - High performance 128-bit fixed-point decimal numbers.
decimal - Immutable decimal numbers with panic-free arithmetic.
fpdecimal - Fast and precise serialization and arithmetic for small fixed-point decimals
fpmoney - Fast and simple ISO4217 fixed-point decimal money.
go-finance - Library of financial functions for time value of money (annuities), cash flow, interest rate conversions, bonds and depreciation calculations.
go-finance - Module to fetch exchange rates, check VAT numbers via VIES and check IBAN bank account numbers.
go-money - Implementation of Fowler’s Money pattern.
go-nowpayments - Library for the crypto NOWPayments API.
gobl - Invoice and billing document framework. JSON Schema based. Automates tax calculations and validation, with tooling to convert into global formats.
ledger - A programmable financial ledger that provides a foundation for money-moving applications.
money - Immutable monetary amounts and exchange rates with panic-free arithmetic.
ofxgo - Query OFX servers and/or parse the responses (with example command-line client).
orderbook - Matching Engine for Limit Order Book in Golang.
payme - QR code generator (ASCII & PNG) for SEPA payments.
swift - Offline validity check of IBAN (International Bank Account Number) and retrieval of BIC (for some countries).
techan - Technical analysis library with advanced market analysis and trading strategies.
ticker - Terminal stock watcher and stock position tracker.
transaction - Embedded transactional database of accounts, running in multithreaded mode.
udecimal - High performance, high precision, zero allocation fixed-point decimal library for financial applications.
qs - Go module for encoding structs into URL query parameters.
queryparam - Decode url.Values into usable struct values of standard or custom types.
roamer - Eliminates boilerplate code for parsing HTTP requests by binding cookies, headers, query params, path params, body to structs and more by using simple tags.
FuncFrog - Functional helpers library providing Map, Filter, Reduce and other stream operations on generic slices Go1.18+ with lazy evaluation and error handling mechanisms.
simplefeatures - simplesfeatures is a 2D geometry library that provides Go types that model geometries, as well as algorithms that operate on them.
Tile38 - Geolocation DB with spatial index and realtime geofencing.
Web-Mercator-Projection A project to easily use and convert LonLat, Point and Tile to display info, markers, etc, in a map using the Web Mercator Projection.
WGS84 - Library for Coordinate Conversion and Transformation (ETRS89, OSGB36, NAD83, RGF93, Web Mercator, UTM).
anchor - Library to manage component lifecycle in microservice architectures.
ants - A high-performance and low-cost goroutine pool in Go.
artifex - Simple in-memory job queue for Golang using worker-based dispatching.
async - An asynchronous task package with async/await style for Go.
async - An alternative sync library for Go (Future, Promise, Locks).
async - A safe way to execute functions asynchronously, recovering them in case of panic.
async-job - AsyncJob is an asynchronous queue job manager with light code, clear and speed.
breaker - Flexible mechanism to make execution flow interruptible.
channelify - Transform your function to return channels for easy and powerful parallel processing.
conc - conc is your toolbelt for structured concurrency in go, making common tasks easier and safer.
concurrency-limiter - Concurrency limiter with support for timeouts, dynamic priority and context cancellation of goroutines.
conexec - A concurrent toolkit to help execute funcs concurrently in an efficient and safe way. It supports specifying the overall timeout to avoid blocking and uses goroutine pool to improve efficiency.
execpool - A pool built around exec.Cmd that spins up a given number of processes in advance and attaches stdin and stdout to them when needed. Very similar to FastCGI or Apache Prefork MPM but works for any command.
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.
go-waitgroup - Like sync.WaitGroup with error handling and concurrency control.
go-workerpool - Inspired from Java Thread Pool, Go WorkerPool aims to control heavy Go Routines.
goccm - Go Concurrency Manager package limits the number of goroutines that allowed to run concurrently.
gohive - A highly performant and easy to use Goroutine pool for Go.
gollback - asynchronous simple function utilities, for managing execution of closures and callbacks.
gowl - Gowl is a process management and process monitoring tool at once. An infinite worker pool gives you the ability to control the pool and processes and monitor their status.
goworker - goworker is a Go-based background worker.
gowp - gowp is concurrency limiting goroutine pool.
gpool - manages a resizeable pool of context-aware goroutines to bound concurrency.
pond - Minimalistic and High-performance goroutine worker pool written in Go.
pool - Limited consumer goroutine or unlimited goroutine pool for easier goroutine handling and cancellation.
rill - Go toolkit for clean, composable, channel-based concurrency.
routine - routine is a ThreadLocal for go library. It encapsulates and provides some easy-to-use, non-competitive, high-performance goroutine context access interfaces, which can help you access coroutine context information more gracefully.
routine - go routine control with context, support: Main, Go, Pool and some useful Executors.
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.
Cogent Core - A framework for building 2D and 3D apps that run on macOS, Windows, Linux, iOS, Android, and the web.
DarwinKit - Build native macOS applications using Go.
energy - Cross-platform based on LCL(Native System UI Control Library) and CEF(Chromium Embedded Framework) (Windows/ macOS / Linux)
fyne - Cross platform native GUIs designed for Go based on Material Design. Supports: Linux, macOS, Windows, BSD, iOS and Android.
gio - Gio is a library for writing cross-platform immediate mode GUI-s in Go. Gio supports all the major platforms: Linux, macOS, Windows, Android, iOS, FreeBSD, OpenBSD and WebAssembly.
cdule - Job scheduler library with database support
cheek - A simple crontab like scheduler that aims to offer a KISS approach to job scheduling.
clockwerk - Go package to schedule periodic jobs using a simple, fluent syntax.
cronticker - A ticker implementation to support cron schedules.
go-cron - Simple Cron library for go that can execute closures or functions at varying intervals, from once a second to once a year on a specific date and time. Primarily for web applications and long running daemons.
go-job - A flexible and extensible job scheduling and execution library for Go.
go-quartz - Simple, zero-dependency scheduling library for Go.
go-scheduler - Job scheduler supporting standard cron expressions, custom descriptors, intervals, and task dependencies.
gocron - Easy and fluent Go job scheduling. This is an actively maintained fork of jasonlvhit/gocron.
goflow - A simple but powerful DAG scheduler and dashboard.
gron - Define time-based tasks using a simple Go API and Gron’s scheduler will run them accordingly.
gronx - Cron expression parser, task runner and daemon consuming crontab like task list.
JobRunner - Smart and featureful cron job scheduler with job queuing and live monitoring built in.
leprechaun - Job scheduler that supports webhooks, crons and classic scheduling.
sched - A job scheduler with the ability to fast-forward time.
ajson - Abstract JSON for golang with JSONPath support.
ask - Easy access to nested values in maps and slices. Works in combination with encoding/json and other packages that “Unmarshal” arbitrary data into Go data-types.
dynjson - Client-customizable JSON formats for dynamic APIs.
ej - Write and read JSON from different sources succinctly.
epoch - Contains primitives for marshaling/unmarshalling Unix timestamp/epoch to/from build-in time.Time type in JSON.
fastjson - Fast JSON parser and validator for Go. No custom structs, no code generation, no reflection.
gabs - For parsing, creating and editing unknown or dynamic JSON in Go.
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.
noodlog - Parametrized JSON logging library which lets you obfuscate sensitive data and marshal any kind of content. No more printed pointers instead of values, nor escape chars for the JSON strings.
onelog - Onelog is a dead simple but very efficient JSON logger. It is the fastest JSON logger out there in all scenarios. 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.
sentry-go - Sentry SDK for Go. Helps monitor and track errors with real-time alerts and performance monitoring.
slf4g - Simple Logging Facade for Golang: Simple structured logging; but powerful, extendable and customizable, with huge amount of learnings from decades of past logging frameworks.
slog - Lightweight, configurable, extensible logger for Go.
slog-formatter - Common formatters for slog and helpers to build your own.
slog-multi - Chain of slog.Handler (pipeline, fanout…).
bayesian - Naive Bayesian Classification for Golang.
born - Deep learning framework inspired by Burn (Rust), with autograd, type-safe tensors, and zero-CGO GPU acceleration.
catboost-cgo - Fast, scalable, high performance Gradient Boosting on Decision Trees library. Golang using Cgo for blazing fast inference CatBoost Model.
CloudForest - Fast, flexible, multi-threaded ensembles of decision trees for machine learning in pure Go.
ddt - Dynamic decision tree, create trees defining customizable rules.
Goptuna - Bayesian optimization framework for black-box functions written in Go. Everything will be optimized.
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 - An offline recommender system backend based on collaborative filtering written in Go.
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.
Go-MediatR - A library for handling mediator patterns and simplified CQRS patterns within an event-driven architecture, inspired by csharp MediatR library.
go-mq - RabbitMQ client with declarative configuration.
go-notify - Native implementation of the freedesktop notification spec.
go-res - Package for building REST/real-time services where clients are synchronized seamlessly, using NATS and Resgate.
go-vitotrol - Client library to Viessmann Vitotrol web service.
GoEventBus - A blazing‑fast, in‑memory, lock‑free event bus library
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.
gopush-cluster - gopush-cluster is a go push server cluster.
gorush - Push notification server using APNs2 and google GCM.
gosd - A library for scheduling when to dispatch a message to a channel.
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.
hare - A user friendly library for sending messages and listening to TCP sockets.
hub - A Message/Event Hub for Go applications, using publish/subscribe pattern with support for alias like rabbitMQ exchanges.
hypermatch - A very fast and efficient Go library for matching events to a large set of rules
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 (“Scalability 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 - Go client for the NATS
messaging system.
nsq-event-bus - A tiny wrapper around NSQ topic and channel.
oplog - Generic oplog/replication system for REST APIs.
Quamina - Fast pattern-matching for filtering messages and events.
rabbitroutine - Lightweight library that handles RabbitMQ auto-reconnect and publishing retries. The library takes into account the need to re-declare entities in RabbitMQ after reconnection.
rabbus - A tiny wrapper over amqp exchanges and queues.
RapidMQ - RapidMQ is a lightweight and reliable library for managing of the local messages queue.
Ratus - Ratus is a RESTful asynchronous task queue server.
redisqueue - redisqueue provides a producer and consumer of a queue that uses Redis streams.
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.
Uniqush-Push - Redis backed unified push service for server-side notifications to mobile devices.
varmq - A storage-agnostic message queue and worker pool for concurrent Go programs.
Watermill - Working efficiently with message streams. Building event driven applications, enabling event sourcing, RPC over messages, sagas. Can use conventional pub/sub implementations like Kafka or RabbitMQ, but also HTTP or MySQL binlog.
alice - Additive dependency injection container for Golang.
autowire - Dependency injection using Generics and reflection.
boot-go - Component-based development with dependency injection using reflections for Go developers.
componego - A dependency injection framework based on components, allowing dynamic dependency replacement without duplicating code in tests.
cosban/di - A code generation based dependency injection wiring tool.
di - A dependency injection container for go programming language.
dig - A reflection based dependency injection toolkit for Go.
dingo - A dependency injection toolkit for Go, based on Guice.
do - A dependency injection framework based on Generics.
fx - A dependency injection based application framework for Go (built on top of dig).
Go-Spring - A high-performance Go framework inspired by Spring Boot, offering DI, auto-configuration, and lifecycle management while maintaining Go’s simplicity and efficiency.
GoLobby/Container - GoLobby Container is a lightweight yet powerful IoC dependency injection container for the Go programming language.
gontainer - A dependency injection service container for Go projects.
gontainer/gontainer - A YAML-based Dependency Injection container for GO. It supports dependencies’ scopes, and auto-detection of circular dependencies. Gontainer is concurrent-safe.
HnH/di - DI container library that is focused on clean API and flexibility.
kinit - Customizable dependency injection container with the global mode, cascade initialization and panic-safe finalization.
kod - A generics based dependency injection framework for Go.
linker - A reflection based dependency injection and inversion of control library with components lifecycle support.
nject - A type safe, reflective framework for libraries, tests, http endpoints, and service startup.
parsley - A flexible and modular reflection-based DI library with advanced features like scoped contexts and proxy generation, designed for large-scale Go applications.
wire - Strict Runtime Dependency Injection for Golang.
cookiecutter-golang - A Go application boilerplate template for quick starting projects following production best practices.
go-blueprint - Allows users to spin up a quick Go project using a popular framework.
go-module - Template for a typical module written on Go.
go-sample - A sample layout for Go application projects with the real code.
go-starter - An opinionated production-ready RESTful JSON backend template, highly integrated with VSCode DevContainers.
go-todo-backend - Go Todo Backend example using modular project layout for product microservice.
goapp - An opinionated guideline to structure & develop a Go web application/service.
gobase - A simple skeleton for golang application with basic setup for real golang application.
golang-standards/project-layout - Set of common historical and emerging project layout patterns in the Go ecosystem. Note: despite the org-name they do not represent official golang standards, see this issue for more information. Nonetheless, some may find the layout useful.
These libraries were placed here because none of the other categories seemed to fit.
anagent - Minimalistic, pluggable Golang evloop/timer handler with dependency-injection.
antch - A fast, powerful and extensible web crawling & scraping framework.
archives - a cross-platform, multi-format Go library for working with archives and compression formats with a unified API and as virtual file systems compatible with io/fs.
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.
detectlanguage - Language Detection API Go Client. Supports batch requests, short phrase or single word language detection.
getlang - Fast natural language detection package.
guesslanguage - Functions to determine the natural language of a unicode text.
lingua-go - An accurate natural language detection library, suitable for long and short text alike. Supports detecting multiple languages in mixed-language text.
whatlanggo - Natural language detection package for Go. Supports 84 languages and 24 scripts (writing systems e.g. Latin, Cyrillic, etc).
Morphological Analyzers
go-stem - Implementation of the porter stemming algorithm.
go2vec - Reader and utility functions for word2vec embeddings.
golibstemmer - Go bindings for the snowball libstemmer library including porter 2.
gosentiwordnet - Sentiment analyzer using sentiwordnet lexicon in Go.
sentences - Sentence tokenizer: converts text into a list of sentences.
shamoji - The shamoji is word filtering package written in Go.
stemmer - Stemmer packages for Go programming language. Includes English and German stemmers.
textcat - Go package for n-gram based text categorization, with support for utf-8 and raw text.
Translation
ctxi18n - Context aware i18n with a short and consise API, pluralization, interpolation, and fs.FS support. YAML locale definitions are based on Rails i18n.
go-i18n - Package and an accompanying tool to work with localized text.
go-mystem - CGo bindings to Yandex.Mystem - russian morphology analyzer.
iuliia-go - Transliterate Cyrillic → Latin in every possible way.
spreak - Flexible translation and humanization library for Go, based on the concepts behind gettext.
t - Another i18n pkg for golang, which follows GNU gettext style and supports .po/.mo files: t.T (gettext), t.N (ngettext), etc. And it contains a cmd tool xtemplate, which can extract messages as a pot file from text/html template.
Transliteration
enca - Minimal cgo bindings for libenca, which detects character encodings.
go-unidecode - ASCII transliterations of Unicode text.
gounidecode - Unicode transliterator (also known as unidecode) for Go.
transliterator - Provides one-way string transliteration with supporting of language-specific transliteration rules.
dnsmonster - Passive DNS Capture/Monitoring Framework.
easytcp - A light-weight TCP framework written in Go (Golang), built with message router. EasyTCP helps you build a TCP server easily fast and less painful.
ether - Cross-platform Go package for sending and receiving ethernet frames.
ethernet - Package ethernet implements marshaling and unmarshalling of IEEE 802.3 Ethernet II frames and IEEE 802.1Q VLAN tags.
event - Simple I/O event notification library written in Golang.
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.
fullproxy - A fully featured scriptable and daemon configurable proxy and pivoting toolkit with SOCKS5, HTTP, raw ports and reverse proxy protocols.
fwdctl - A simple and intuitive CLI to manage IPTables forwards in your Linux server.
gaio - High performance async-io networking for Golang in proactor mode.
gev - gev is a lightweight, fast non-blocking TCP network library based on Reactor mode.
gldap - gldap provides an ldap server implementation and you provide handlers for its ldap operations.
gmqtt - Gmqtt is a flexible, high-performance MQTT broker library that fully implements the MQTT protocol V3.1.1.
gnet - gnet is a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go.
gnet - gnet is a high-performance networking framework,especially for game servers.
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-multiproxy - Library for making HTTP requests through a pool of proxies offering fault tolerance, load balancing, automatic retries, cookie management, and more, via http.Get/Post replacement or http.Client RoundTripper drop-in
go-pcaplite - Lightweight live packet capture library with HTTPS SNI extraction.
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.
natiu-mqtt - A dead-simple, non-allocating, low level implementation of MQTT well suited for embedded systems.
nbio - Pure Go 1000k+ connections solution, support tls/http1.x/websocket and basically compatible with net/http, with high-performance and low memory cost, non-blocking, event-driven, easy-to-use.
net - This repository holds supplementary Go networking libraries.
netpoll - A high-performance non-blocking I/O networking framework, which focused on RPC scenarios, developed by ByteDance.
NFF-Go - Framework for rapid development of performant network functions for cloud and bare-metal (former YANFF).
nodepass - A secure, efficient TCP/UDP tunneling solution that delivers fast, reliable access across network restrictions using pre-established TCP/QUIC/WebSocket or HTTP/2 connections.
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.
psql-wire - PostgreSQL server wire protocol. Build your own server and start serving connections..
publicip - Package publicip returns your public facing IPv4 address (internet egress).
quic-go - An implementation of the QUIC protocol in pure Go.
sdns - A high-performance, recursive DNS resolver server with DNSSEC support, focused on preserving privacy.
go-zoox/fetch - A Powerful, Lightweight, Easy Http Client, inspired by Web Fetch API.
Grequest - Simple and lightweight golang package for http requests. based on powerful net/http
grequests - A Go “clone” of the great and famous Requests library.
heimdall - An enhanced http client with retry and hystrix capabilities.
httpretry - Enriches the default go HTTP client with retry functionality.
pester - Go HTTP client calls with retries, backoff, and concurrency.
req - Simple Go HTTP client with Black Magic (Less code and More efficiency).
request - HTTP client for golang. If you have experience about axios or requests, you will love it. No 3rd dependency.
requests - HTTP requests for Gophers. Uses context.Context and doesn’t hide the underlying net/http.Client, making it compatible with standard Go APIs. Also includes testing tools.
resty - Simple HTTP and REST client for Go inspired by Ruby rest-client.
rq - A nicer interface for golang stdlib HTTP client.
sling - Sling is a Go HTTP client library for creating and sending API requests.
surf - Advanced HTTP client with HTTP/1.1, HTTP/2, HTTP/3 (QUIC), SOCKS5 proxy support and browser-grade TLS fingerprinting.
tls-client - net/http.Client like HTTP Client with options to select specific client TLS Fingerprints to use for requests.
Official tooling for dependency and package management
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.
Unofficial libraries for package and dependency management.
dasel - Query and update data structures using selectors from the command line. Comparable to jq/yq but supports JSON, YAML, TOML and XML with zero runtime dependencies.
gojsonq - A simple Go package to Query over JSON Data.
goven - A drop-in query language for any database schema.
gqlgen - go generate based graphql server library.
grapher - A GraphQL field builder utilizing Go generics with extra utilities and features.
graphql - GraphQL server with a focus on ease of use.
goenum - A common enumeration struct based on generics and reflection that allows you to quickly define enumerations and use a set of useful default methods.
gotype - Golang source code parsing, usage like reflect package.
gpath - Library to simplify access struct fields with Go’s expression in reflection.
gograph - A golang generic graph library that provides mathematical graph-theory and algorithms.
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, algorithm 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.
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.
topk - Sliding-window and regular top-K sketches, based on the HeavyKeeper algorithm.
triangolatte - 2D triangulation library. Allows translating lines and polygons (both based on points) to the language of GPUs.
entpassgen - Entropy Password Generator with extensive command line arguments to generate random strings securely including digits, passwords, and passwords built using obscure dictionary words mixed with symbols and digits.
firewalld-rest - A rest application to dynamically update firewalld rules on a linux server.
go-generate-password - Password generator that can be used on the cli or as a library.
sslmgr - SSL certificates made easy with a high level wrapper around acme/autocert.
teler-waf - teler-waf is a Go HTTP middleware that provide teler IDS functionality to protect against web-based attacks and improve the security of Go-based web applications. It is highly configurable and easy to integrate into existing Go applications.
themis - high-level cryptographic library for solving typical data security tasks (secure data storage, secure messaging, zero-knowledge proof authentication), available for 14 languages, best fit for multi-platform apps.
urusai - Urusai (“noisy” in Japanese) is a Go implementation of a random HTTP/DNS traffic noise generator that helps protect privacy by creating digital smokescreens while browsing.
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.
cbor - Small, safe, and easy CBOR encoding and decoding library.
colfer - Code generation for the Colfer binary format.
csvutil - High Performance, idiomatic CSV record encoding and decoding to native Go structures.
elastic - Convert slices, maps or any other unknown value across different types at run-time, no matter what.
fixedwidth - Fixed-width text formatting (UTF-8 supported).
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.
go-csvlib - High level and rich functionalities CSV serialization/deserialization library.
goprotobuf - Go support, in the form of a library and protocol compiler plugin, for Google’s protocol buffers.
gotiny - Efficient Go serialization library, gotiny is almost as fast as serialization libraries that generate code.
jsoniter - High-performance 100% compatible drop-in replacement of “encoding/json”.
php_session_decoder - GoLang library for working with PHP session format and PHP Serialize/Unserialize functions.
pletter - A standard way to wrap a proto message for message brokers.
structomap - Library to easily and dynamically generate maps from static structures.
unitpacking - Library to pack unit vectors into as fewest bytes as possible.
lets-proxy2 - Reverse proxy for handle https with issue certificates in fly from lets-encrypt.
minio - Minio is a distributed object storage server.
Moxy - Moxy is a simple mocker and proxy application server, you can create mock endpoints as well as proxy requests in case no mock exists for the endpoint.
OpenRun - Open-source alternative to Google Cloud Run and AWS App Runner. Easily deploy internal tools across a team.
pocketbase - PocketBase is a realtime backend in 1 file consisting of embedded database (SQLite) with realtime subscriptions, built-in auth management and much more.
protoxy - A proxy server that converts JSON request bodies to Protocol Buffers.
psql-streamer - Stream database events from PostgreSQL to Kafka.
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.
SFTPGo - Fully featured and highly configurable SFTP server with optional FTP/S and WebDAV support. It can serve local filesystem and Cloud Storage backends such as S3 and Google Cloud Storage.
Trickster - HTTP reverse proxy cache and time series accelerator.
wd-41 - A (w)eb (d)evelopment server with automatic live-reload on file changes.
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.
gomponents - HTML 5 components in pure Go, that look something like this: func(name string) g.Node { return Div(Class("headline"), g.Textf("Hi %v!", name)) }.
got - A Go code generator inspired by Hero and Fasttemplate. Has include files, custom tag definitions, injected Go code, language translation, and more.
goview - Goview is a lightweight, minimalist and idiomatic template library based on golang html/template for building Go web application.
htmgo - build simple and scalable systems with go + htmx
Libraries for testing codebases and generating test data.
Testing Frameworks
apitest - Simple and extensible behavioural testing library for REST based services or HTTP handlers that supports mocking external http calls and rendering of sequence diagrams.
arch-go - Architecture testing tool for Go projects.
assert - Basic Assertion Library used along side native go testing, with building blocks for custom assertions.
baloo - Expressive and versatile end-to-end HTTP API testing made easy.
be - The minimalist generic test assertion library.
testcase - Idiomatic testing framework for Behavior Driven Development.
testcerts - Dynamically generate self-signed certificates and certificate authorities within your test functions.
testcontainers-go - A Go package that makes it simple to create and clean up container-based dependencies for automated integration/smoke tests. The clean, easy-to-use API enables developers to programmatically define containers that should be run as part of a test and clean up those resources when the test is done.
testfixtures - A helper for Rails’ like test fixtures to test database applications.
Testify - Sacred extension to the standard go testing package.
testsql - Generate test data from SQL files before testing and clear it after finished.
testza - Full-featured test framework with nice colorized output.
trial - Quick and easy extendable assertions without introducing much boilerplate.
godump - Pretty print any GO variable with ease, an alternative to Go’s fmt.Printf("%#v").
godump (goforj) - Pretty-print Go structs with Laravel/Symfony-style dumps, full type info, colorized CLI output, cycle detection, and private field access.
TySug - Alternative suggestions with respect to keyboard layouts.
uniwidth - High-performance Unicode character width calculation with SWAR optimization, O(1) lookup tables, and ZWJ emoji support.
w2vgrep - A semantic grep tool using word embeddings to find semantically similar matches. For example, searching for “death” will find “dead”, “killing”, “murder”.
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.
swag - No comments, simple go wrapper to create swagger 2.0 compatible APIs. Support most routing frameworks, such as built-in, gin, chi, mux, echo, httprouter, fasthttp and more.
textbelt - Go client for the textbelt.com txt messaging API.
contem - Drop-in context.Context replacement for graceful shutdown Go applications.
cookie - Cookie struct parsing and helper package.
copy-pasta - Universal multi-workstation clipboard that uses S3 like backend for the storage.
countries - Full implementation of ISO-3166-1, ISO-4217, ITU-T E.164, Unicode CLDR and IANA ccTLD standards.
countries - All you need when you are working with countries in Go.
create-go-app - A powerful CLI for create a new production-ready project with backend (Golang), frontend (JavaScript, TypeScript) & deploy automation (Ansible, Docker) by running one command.
cryptgo - Crytpgo is a TUI based application written purely in Go to monitor and observe cryptocurrency prices in real time!
ctop - Top-like interface (e.g. htop) for container metrics.
ctxutil - A collection of utility functions for contexts.
cvt - Easy and safe convert any value to another type.
dbt - A framework for running self-updating signed binaries from a central, trusted repository.
Death - Managing go application shutdown with signals.
debounce - A zero-allocation debouncer written in Go.
dive - A tool for exploring each layer in a Docker image.
dlog - Compile-time controlled logger to make your release smaller without removing debug calls.
EaseProbe - A simple, standalone, and lightWeight tool that can do health/status checking daemon, support HTTP/TCP/SSH/Shell/Client/… probes, and Slack/Discord/Telegram/SMS… notification.
equalizer - Quota manager and rate limiter collection for Go.
ergo - The management of multiple local services running over different ports made easy.
evaluator - Evaluate an expression dynamically based on s-expression. It’s simple and easy to extend.
Failsafe-go - Fault tolerance and resilience patterns for Go.
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.
structs - Implement simple functions to manipulate structs.
throttle - Throttle is an object that will perform exactly one action per duration.
tik - Simple and easy timing wheel package for Go.
tome - Tome was designed to paginate simple RESTful APIs.
toolbox - Slice, map, multimap, struct, function, data conversion utilities. Service router, macro evaluator, tokenizer.
UNIS - Common Architecture™ for String Utilities in Go.
upterm - A tool for developers to share terminal/tmux sessions securely over the web. It’s perfect for remote pair programming, accessing computers behind NATs/firewalls, remote debugging, and more.
usql - usql is a universal command-line interface for SQL databases.
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.
hvalid hvalid is a lightweight validation library written in Go language. It provides a custom validator interface and a series of common validation functions to help developers quickly implement data 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.
Validator - A lightweight model validator written in Go.Contains VFs:Min, Max, MinLength, MaxLength, Length, Enum, Regex.
Atreugo - High performance and extensible micro web framework with zero memory allocations in hot paths.
Barf - Basically, A Remarkable Framework for building JSON-based web APIs. It is entirely unobtrusive and re-invents no wheel. It is crafted such that getting started is easy and quick while being flexible enough for more complex use cases.
Beego - beego is an open-source, high-performance web framework for the Go programming language.
Confetti Framework - Confetti is a Go web application framework with an expressive, elegant syntax. Confetti combines the elegance of Laravel and the simplicity of Go.
Don - A highly performant and simple to use API framework.
Echo - High performance, minimalist Go web framework.
Fastschema - A flexible Go web framework and Headless CMS.
Fiber - An Express.js inspired web framework build on Fasthttp.
Flamingo - Framework for pluggable web projects. Including a concept for modules and offering features for DI, Configareas, i18n, template engines, graphql, observability, security, events, routing & reverse routing etc.
Flamingo Commerce - Providing e-commerce features using clean architecture like DDD and ports and adapters, that you can use to build flexible e-commerce applications.
Fuego - The framework for busy Go developers! Web framework generating OpenAPI 3 spec from source code.
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.
go-api-boot - A gRpc-first micro-service framework. Features include ODM support for Mongo, cloud resource support (AWS/Azure/Google), and a fluent dependency injection which is customized for gRpc. Additionally, grpc-web is supported directly, enabling browser access to all gRpc APIs without a proxy.
Goa - Goa provides a holistic approach for developing remote APIs and microservices in Go.
GoFr - Gofr is an opinionated microservice development framework.
GoFrame - GoFrame is a modular, powerful, high-performance and enterprise-class application development framework of Golang.
golamb - Golamb makes it easier to write API endpoints for use with AWS Lambda and API Gateway.
Gone - A lightweight dependency injection and web framework inspired by Spring.
goravel - A Laravel-inspired web framework with ORM, authentication, queue, task scheduling, and more built-in features.
Goyave - Feature-complete REST API framework aimed at clean code and fast development, with powerful built-in functionalities.
Hertz - A high-performance and strong-extensibility Go HTTP framework that helps developers build microservices.
hiboot - hiboot is a high performance web application framework with auto configuration and dependency injection support.
Huma - Framework for modern REST/GraphQL APIs with built-in OpenAPI 3, generated documentation, and a CLI.
iWF - iWF is an all-in-one platform for developing long-running business processes. It offers a convenient abstraction for utilizing databases, ElasticSearch, message queues, durable timers, and more, with a clean, simple, and user-friendly interface.
Lit - Highly performant declarative web framework for Golang, aiming for simplicity and quality of life.
Microservice - The framework for the creation of microservices, written in Golang.
patron - Patron is a microservice framework following best cloud practices with a focus on productivity.
Pnutmux - Pnutmux is a powerful Go web framework that uses regex for matching and handling HTTP requests. It offers features such as CORS handling, structured logging, URL parameters extraction, middlewares, and concurrency limiting.
Revel - High-productivity web framework for the Go language.
rk-boot - A bootstrapper library for building enterprise go microservice with Gin and gRPC quickly and easily.
Ronykit - Web framework with pluggable architecture and very performant.
rux - Simple and fast web framework for build golang HTTP applications.
uAdmin - Fully featured web framework for Golang, inspired by Django.
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)..
Xun - Web framework built on Go’s built-in html/template and net/http package’s router. It is designed to be lightweight, fast, and easy to use while providing a simple and intuitive API for building web applications with advanced features such as middleware, routing, and template rendering.
Yokai - Simple, modular, and observable Go framework for backend applications.
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.
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.
Libraries and tools to implement Zero Trust architectures.
Cosign - Container Signing, Verification and Storage in an OCI registry.
in-toto - Go implementation of the in-toto (provides a framework to protect the integrity of the software supply chain) python reference implementation.
OpenZiti - A full, open source zero trust overlay network. Including numerous SDKs for numerous languages such as golang allowing you to embed zero trust principles directly into your applications. The OpenZiti Test Kitchen has numerous examples to draw inspiration from including a zero trust ssh client - zssh
Spiffe-Vault - Utilizes Spiffe JWT authentication with Hashicorp Vault for secretless authentication.
Spire - SPIRE (the SPIFFE Runtime Environment) is a toolchain of APIs for establishing trust between software systems across a wide variety of hosting platforms.
Code Analysis
Source code analysis tools, also known as Static Application Security Testing (SAST) Tools.
apicompat - Checks recent changes to a Go project for backwards incompatible changes.
asty - Converts golang AST to JSON and JSON to AST.
blanket - blanket is a tool that helps you catch functions which don’t have direct unit tests in your Go packages.
ChainJacking - Find which of your Go lang direct GitHub dependencies is susceptible to ChainJacking attack.
errcheck - Errcheck is a program for checking for unchecked errors in Go programs.
fatcontext - Fatcontext detects nested contexts in loops or function literals.
go-checkstyle - checkstyle is a style check tool like java checkstyle. This tool inspired by java checkstyle, golint. The style referred 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.
golangci-lint – A fast Go linters runner. It runs linters in parallel, uses caching, supports yaml config, has integrations with all major IDE and has dozens of linters included.
golines - Formatter that automatically shortens long lines in Go code.
GoPlantUML - Library and CLI that generates text plantump class diagram containing information about structures and interfaces with the relationship among them.
goreturns - Adds zero-value return statements to match the func return types.
gostatus - Command line tool, shows the status of repositories that contain Go packages.
abbreviate - abbreviate is a tool turning long strings in to shorter ones with configurable separators, for example to embed branch names in to deployment stack IDs.
Gogs - A Self Hosted Git Service in the Go Programming Language.
goma-gateway - A Lightweight API Gateway and Reverse Proxy with declarative config, robust middleware, and support for REST, GraphQL, TCP, UDP, and gRPC.
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.
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.
httpref - httpref is a handy CLI reference for HTTP methods, status codes, headers, and TCP and UDP ports.
jcli - Jenkins CLI allows you manage your Jenkins as an easy way.
KubeVPN - KubeVPN offers a Cloud-Native Dev Environment that seamlessly connects to your Kubernetes cluster network.
KusionStack - A unified programmable configuration techstack to deliver modern app in ‘platform as code’ and ‘infra as code’ approach.
kwatch - Monitor & detect crashes in your Kubernetes(K8s) cluster instantly.
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.
Mantil - Go specific framework for building serverless applications on AWS that enables you to focus on pure Go code while Mantil takes care of the infrastructure.
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.
PipeCD - A GitOps-style continuous delivery platform that provides consistent deployment and operations experience for any applications.
podinfo - Podinfo is a tiny web application made with Go that showcases best practices of running microservices in Kubernetes. Podinfo is used by CNCF projects like Flux and Flagger for end-to-end testing and workshops.
Pomerium - Pomerium is an identity-aware access proxy.
Rodent - Rodent helps you manage Go versions, projects and track dependencies.
s3-proxy - S3 Proxy with GET, PUT and DELETE methods and authentication (OpenID Connect and Basic Auth).
s3gof3r - Small utility/library optimized for high speed transfer of large objects into and out of Amazon S3.
s5cmd - Blazing fast S3 and local filesystem execution tool.
Scaleway-cli - Manage BareMetal Servers from Command Line (as easily as with Docker).
script - Making it easy to write shell-like scripts in Go for DevOps and system administration tasks.
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.
sigma - OCI-native container image registry, support OCI-native artifact, scan artifact, image build etc.
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.
tau - Easily build Cloud Computing Platforms with features like Serverless WebAssembly Functions, Frontend Hosting, CI/CD, Object Storage, K/V Database, and Pub-Sub Messaging.
terraform-provider-openapi - Terraform provider plugin that dynamically configures itself at runtime based on an OpenAPI document (formerly known as swagger file) containing the definitions of the APIs exposed.
tf-profile - Profiler for Terraform runs. Generate global stats, resource-level stats or visualizations.
traefik - Reverse proxy and load balancer with support for multiple backends.
trubka - A CLI tool to manage and troubleshoot Apache Kafka clusters with the ability of generically publishing/consuming protocol buffer and plain text events to/from Kafka.
uTask - Automation engine that models and executes business processes declared in yaml.
Vegeta - HTTP load testing tool and library. It’s over 9000!
wait-for - Wait for something to happen (from the command line) before continuing. Easy orchestration of Docker services and other things.
Chapar - Chapar is a a cross-platform Postman alternative built with go, aims to help developers to test their api endpoints. it support http and grpc protocols.
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.
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.
tinycare-tui - Small terminal app that shows git commits from the last 24 hours and week, current weather, some self care advice, a joke, and you current todo list tasks.
toxiproxy - Proxy to simulate network and system conditions for automated tests.
tsuru - Extensible and open source Platform as a Service software.
vaku - CLI & API for folder-based functions in Vault like copy, move, and search.
vFlow - High-performance, scalable and reliable IPFIX, sFlow and Netflow collector.
Wave Terminal - Wave is an open-source, AI-native terminal built for seamless developer workflows with inline rendering, a modern UI, and persistent sessions.
wellington - Sass project management tool, extends the language with sprite functions (like Compass).
woke - Detect non-inclusive language in your source code.
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.
Continuous Delivery in Go - This practical guide to continuous delivery shows you how to rapidly establish an automated pipeline that will improve your testing, code quality, and final product.
Go in Practice, Second Edition - Your practical guide on the ins-and-outs of Go development, covering the standard library and the most important tools from Go’s powerful ecosystem.
Know Go: Generics - A guide to understanding and using generics in Go.
Lets-Go - A step-by-step guide to creating fast, secure and maintanable web applications with Go.
Lets-Go-Further - Advanced patterns for building APIs and web applications in Go.
Writing An Interpreter In Go - Book that introduces dozens of techniques for writing idiomatic, expressive, and efficient Go code that avoids common pitfalls.
50 Shades of Go - Traps, Gotchas, and Common Mistakes for New Golang Devs.
A Comprehensive Guide to Structured Logging in Go - Delve deep into the world of structured logging in Go with a specific focus on recently accepted slog proposal which aims to bring high performance structured logging with levels to the standard library.
CodeCrafters Golang Track - Achieve mastery in advanced Go by building your own Redis, Docker, Git, and SQLite. Featuring goroutines, systems programming, file I/O, and more.
Design Patterns in Go - Collection of programming design patterns implemented in Go.
Games With Go - A video series teaching programming and game development.
Go By Example - Hands-on introduction to Go using annotated example programs.
Awesome Go
We use the Golang Bridge community Slack for instant communication, follow the form here to join.
Sponsorships:
Special thanks to
Awesome Go has no monthly fee, but we have employees who work hard to keep it running. With money raised, we can repay the effort of each person involved! You can see how we calculate our billing and distribution as it is open to the entire community. Want to be a supporter of the project click here.
Contributing:
Please take a quick gander at the contribution guidelines first. Thanks to all contributors; you rock!
Contents
Expand contents
⬆ back to top
Actor Model
Libraries for building actor-based programs.
⬆ back to top
Artificial Intelligence
Libraries for building programs that leverage AI.
⬆ back to top
Audio and Music
Libraries for manipulating audio and music.
⬆ back to top
Authentication and Authorization
Libraries for implementing authentication and authorization.
⬆ back to top
Blockchain
Tools for building blockchains.
⬆ back to top
Bot Building
Libraries for building and working with bots.
⬆ back to top
Build Automation
Libraries and tools help with build automation.
⬆ back to top
Command Line
Advanced Console UIs
Libraries for building Console Applications and Console User Interfaces.
⬆ back to top
Standard CLI
Libraries for building standard or basic Command Line applications.
flagpackage to support sub commands and more in idiomatic way.flagpackage.getopt, validated against the GNU libc implementation.kong; see below).flagpackage.⬆ back to top
Configuration
Libraries for configuration parsing.
.env).kingpin).⬆ back to top
Continuous Integration
Tools for help with continuous integration.
⬆ back to top
CSS Preprocessors
Libraries for preprocessing CSS files.
⬆ back to top
Data Integration Frameworks
Frameworks for performing ELT / ETL
⬆ back to top
Data Structures and Algorithms
Bit-packing and Compression
Bit Sets
Bloom and Cuckoo Filters
Data Structure and Algorithm Collections
Iterators
Maps
See also Database for more complex key-value stores, and Trees for additional ordered map implementations.
interface{}as key and auto scale up shards.Miscellaneous Data Structures and Algorithms
bufio.Writer.Nullable Types
Queues
Sets
Text Analysis
Trees
Pipes
⬆ back to top
Database
Caches
Data stores with expiring records, in-memory distributed data stores, or in-memory subsets of file-based databases.
GCache, cache support for expirable Cache, LFU, LRU and ARC.Databases Implemented in Go
Database Schema Migration
Database Tools
SQL Query Builders
Libraries for building and using SQL.
⬆ back to top
Database Drivers
Interfaces to Multiple Backends
Relational Database Drivers
NoSQL Database Drivers
database/sqldriver for Azure Cosmos DB.Search and Analytic Databases
database/sqlcompatibility.⬆ back to top
Date and Time
Libraries for working with dates and times.
time.Now()that honors the faketime(1) utility.⬆ back to top
Distributed Systems
Packages that help with building Distributed Systems.
⬆ back to top
Dynamic DNS
Tools for updating dynamic DNS records.
⬆ back to top
Email
Libraries and tools that implement email creation and sending.
net/smtp.⬆ back to top
Embeddable Scripting Languages
Embedding other languages inside your go code.
net/httphandler.⬆ back to top
Error Handling
Libraries for handling errors.
⬆ back to top
File Handling
Libraries for handling files and file systems.
⬆ back to top
Financial
Packages for accounting and finance.
⬆ back to top
Forms
Libraries for working with forms.
url.Valuesinto usable struct values of standard or custom types.⬆ back to top
Functional
Packages to support functional programming in Go.
⬆ back to top
Game Development
Awesome game development libraries.
⬆ back to top
Generators
Tools that generate Go code.
⬆ back to top
Geographic
Geographic tools and servers
⬆ back to top
Go Compilers
Tools for compiling Go to other languages and vice-versa.
⬆ back to top
Goroutines
Tools for managing and working with Goroutines.
concis your toolbelt for structured concurrency in go, making common tasks easier and safer.sync.WaitGroupwith error handling and concurrency control.All,First,Retry,Waterfalletc., that makes asynchronous flow control more intuitive.sync/errgroup, limited to a pool of N worker goroutines.routineis aThreadLocalfor go library. It encapsulates and provides some easy-to-use, non-competitive, high-performancegoroutinecontext access interfaces, which can help you access coroutine context information more gracefully.⬆ back to top
GUI
Libraries for building GUI Applications.
Toolkits
Interaction
⬆ back to top
Hardware
Libraries, tools, and tutorials for interacting with hardware.
⬆ back to top
Images
Libraries for manipulating images.
⬆ back to top
IoT (Internet of Things)
Libraries for programming devices of the IoT.
⬆ back to top
Job Scheduler
Libraries for scheduling jobs.
⬆ back to top
JSON
Libraries for working with JSON.
encoding/jsonthat outputs colorized JSON.encoding/json.⬆ back to top
Logging
Libraries for generating and working with log files.
io.Writerimplementation using logrus logger.io.Writerimplementation with multi policies to provide log file rotation.net/contextaware HTTP handlers with flexible dispatching.⬆ back to top
Machine Learning
Libraries for Machine Learning.
⬆ back to top
Messaging
Libraries that implement messaging systems.
⬆ back to top
Microsoft Office
Microsoft Excel
Libraries for working with Microsoft Excel.
Microsoft Word
Libraries for working with Microsoft Word.
⬆ back to top
Miscellaneous
Dependency Injection
Libraries for working with dependency injection.
⬆ back to top
Project Layout
Unofficial set of patterns for structuring projects.
⬆ back to top
Strings
Libraries for working with strings.
{}format strings.⬆ back to top
Uncategorized
These libraries were placed here because none of the other categories seemed to fit.
⬆ back to top
Natural Language Processing
Libraries for working with human languages.
See also Text Processing and Text Analysis.
Language Detection
Morphological Analyzers
Slugifiers
Tokenizers
Translation
fs.FSsupport. YAML locale definitions are based on Rails i18n.t.T (gettext),t.N (ngettext), etc. And it contains a cmd tool xtemplate, which can extract messages as a pot file from text/html template.Transliteration
⬆ back to top
Networking
Libraries for working with various layers of the network.
gnetis a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go.gnetis a high-performance networking framework,especially for game servers.⬆ back to top
HTTP Clients
Libraries for making HTTP requests.
⬆ back to top
OpenGL
Libraries for using OpenGL in Go.
⬆ back to top
ORM
Libraries that implement Object-Relational Mapping or datamapping techniques.
⬆ back to top
Package Management
Official tooling for dependency and package management
Unofficial libraries for package and dependency management.
⬆ back to top
Performance
⬆ back to top
Query Language
AND,ORoperations are supported directly in the query.⬆ back to top
Reflection
⬆ back to top
Resource Embedding
embed.FSfrom an existingembed.FSsubdirectory.embed.FStype⬆ back to top
Science and Data Analysis
Libraries for scientific computing and data analyzing.
⬆ back to top
Security
Libraries that are used to help make your application more secure.
io.ReadWriteCloserbased on XChaCha20-poly1305, ECDH and ED25519.⬆ back to top
Serialization
Libraries and tools for binary serialization.
⬆ back to top
Server Applications
⬆ back to top
Stream Processing
Libraries and tools for stream processing and reactive programming.
⬆ back to top
Template Engines
Libraries and tools for templating and lexing.
func(name string) g.Node { return Div(Class("headline"), g.Textf("Hi %v!", name)) }.⬆ back to top
Testing
Libraries for testing codebases and generating test data.
Testing Frameworks
database_cleanerin Ruby.testingby leveraging Go1.7’s Subtests.Mock
testing/fstest.MapFS.timepackage.Fuzzing and delta-debugging/reducing/shrinking
Selenium and browser control tools
Fail injection
⬆ back to top
Text Processing
Libraries for parsing and manipulating texts.
See also Natural Language Processing and Text Analysis.
Formatters
textwrapmodule from Python.Markup Languages
Parsers/Encoders/Decoders
fmt.Printf("%#v").Regular Expressions
Sanitation
Scrapers
RSS
Utility/Miscellaneous
⬆ back to top
Third-party APIs
Libraries for accessing third party APIs.
⬆ back to top
Utilities
General utilities and tools to make your life easier.
.envor anyio.Readerin Go.sql.Rowsdirectly to structs, slices, or primitive types.os.Signalhandling.⬆ back to top
UUID
Libraries for working with UUIDs.
uuid).⬆ back to top
Validation
Libraries for validation.
Version Control
Libraries for version control.
⬆ back to top
Video
Libraries for manipulating video.
⬆ back to top
Web Frameworks
Full stack web frameworks.
http.HandlerFunc)..⬆ back to top
Middlewares
Actual middlewares
X-Forwarded-Forheader and friends.Libraries for creating HTTP middlewares
http.Clientto allow dumping/shaping/tracing/… of requests/responses.⬆ back to top
Routers
httprouter. The first router fit forfasthttp.net/context.net/context.httprouterwithnet/contextsupport.⬆ back to top
WebAssembly
⬆ back to top
Webhooks Server
⬆ back to top
Windows
⬆ back to top
Workflow Frameworks
Libraries for creating Workflows.
⬆ back to top
XML
Libraries and tools for manipulating XML.
Zero Trust
Libraries and tools to implement Zero Trust architectures.
Code Analysis
Source code analysis tools, also known as Static Application Security Testing (SAST) Tools.
yamlconfig, has integrations with all major IDE and has dozens of linters included.golint.go veton steroids, applying a ton of static analysis checks you might be used to from tools like ReSharper for C#.git blameto identify the author.⬆ back to top
Editor Plugins
Plugin for text editors and IDEs.
⬆ back to top
Go Generate Tools
⬆ back to top
Go Tools
dbg!macro for quick and easy debugging during development.text/templatetemplates live.go testoutputs with text decorations.⬆ back to top
Software Packages
Software written in Go.
⬆ back to top
DevOps Tools
ProxyCommand.⬆ back to top
Other Software
⬆ back to top
Resources
Where to discover new Go libraries.
⬆ back to top
Benchmarks
⬆ back to top
Conferences
⬆ back to top
E-Books
E-books for purchase
Free e-books
go/*packages.⬆ back to top
Gophers
⬆ back to top
Meetups
Add the group of your city/country here (send PR)
⬆ back to top
Style Guides
⬆ back to top
Social Media
Twitter
⬆ back to top
Reddit
⬆ back to top
Websites
⬆ back to top
Tutorials
⬆ back to top
Guided Learning
⬆ back to top
Contribution
We welcome contributions! Please refer to our CONTRIBUTING.md for guidelines.
License
This project is licensed under the MIT License - see the LICENSE file for details.