Skip to content

cloudxaas/zero-alloc-awesome-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

Zero Alloc Awesome Go

Please help update this list. Thanks avelino/awesome-go for the template

Build Status Awesome Slack Widget Netlify Status Track Awesome List

We use the Golang Bridge community Slack for instant communication, follow the form here to join.

awesome-go - Curated list awesome Go frameworks, libraries and software | Product Hunt

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.

A curated list of awesome Go frameworks, libraries, and software. Inspired by awesome-python.

Contributing:

Please take a quick gander at the contribution guidelines first. Thanks to all contributors; you rock!

If you see a package or project here that is no longer maintained or is not a good fit, please submit a pull request to improve this file. Thank you!

Contents

⬆ back to top

Audio and Music

Libraries for manipulating audio.

⬆ back to top

Authentication and OAuth

Libraries for implementing authentication schemes.

⬆ 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.

⬆ back to top

Configuration

Libraries for configuration parsing.

⬆ 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 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.

Miscellaneous Data Structures and Algorithms

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. 100% zero alloc

  • scache - LRU SCache with in mem, mmap features

Close to zero alloc

  • fastcache - fast thread-safe inmemory cache for big number of entries. Minimizes GC overhead.

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

Search and Analytic Databases

⬆ back to top

Date and Time

Libraries for working with dates and times.

⬆ 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.

⬆ back to top

Embeddable Scripting Languages

Embedding other languages inside your go code.

⬆ 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.

⬆ 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.

⬆ back to top

Goroutines

Tools for managing and working with Goroutines.

  • ants - A high-performance and low-cost goroutine pool in Go.

⬆ back to top

GUI

Libraries for building GUI Applications.

Toolkits

WebAssembly.

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.

⬆ back to top

Logging

Libraries for generating and working with log files.

  • zerolog - Zero-allocation JSON logger.

⬆ back to top

Machine Learning

Libraries for Machine Learning.

  • bayesian - Naive Bayesian Classification for Golang.
  • CloudForest - Fast, flexible, multi-threaded ensembles of decision trees for machine learning in pure Go.
  • ddt - Dynamic decision tree, create trees defining customizable rules.
  • eaopt - An evolutionary optimization library.
  • evoli - Genetic Algorithm and Particle Swarm Optimization library.
  • fonet - A Deep Neural Network library written in Go.
  • go-cluster - Go implementation of the k-modes and k-prototypes clustering algorithms.
  • go-deep - A feature-rich neural network library in Go.
  • go-fann - Go bindings for Fast Artificial Neural Networks(FANN) library.
  • go-featureprocessing - Fast and convenient feature processing for low latency machine learning in Go.
  • go-galib - Genetic Algorithms library written in Go / golang.
  • go-pr - Pattern recognition package in Go lang.
  • gobrain - Neural Networks written in go.
  • godist - Various probability distributions, and associated methods.
  • goga - Genetic algorithm library for Go.
  • GoLearn - General Machine Learning library for Go.
  • golinear - liblinear bindings for Go.
  • GoMind - A simplistic Neural Network Library in Go.
  • goml - On-line Machine Learning in Go.
  • gonet - Neural Network for Go.
  • 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.
  • goscore - Go Scoring API for PMML.
  • gosseract - Go package for OCR (Optical Character Recognition), by using Tesseract C++ library.
  • libsvm - libsvm golang version derived work based on LIBSVM 3.14.
  • m2cgen - A CLI tool to transpile trained classic ML models into a native Go code with zero dependencies, written in Python with Go language support.
  • neat - Plug-and-play, parallel Go framework for NeuroEvolution of Augmenting Topologies (NEAT).
  • neural-go - Multilayer perceptron network implemented in Go, with training via backpropagation.
  • ocrserver - A simple OCR API server, seriously easy to be deployed by Docker and Heroku.
  • onnx-go - Go Interface to Open Neural Network Exchange (ONNX).
  • probab - Probability distribution functions. Bayesian inference. Written in pure Go.
  • randomforest - Easy to use Random Forest library for Go.
  • regommend - Recommendation & collaborative filtering engine.
  • shield - Bayesian text classifier with flexible tokenizers and storage backends for Go.
  • tfgo - Easy to use Tensorflow bindings: simplifies the usage of the official Tensorflow Go bindings. Define computational graphs in Go, load and execute models trained in Python.
  • Varis - Golang Neural Network.

⬆ back to top

Messaging

Libraries that implement messaging systems.

  • ami - Go client to reliable queues based on Redis Cluster Streams.
  • amqp - Go RabbitMQ Client Library.
  • APNs2 - HTTP/2 Apple Push Notification provider for Go — Send push notifications to iOS, tvOS, Safari and OSX apps.
  • Asynq - A simple, reliable, and efficient distributed task queue for Go built on top of Redis.
  • Beaver - A real time messaging server to build a scalable in-app notifications, multiplayer games, chat apps in web and mobile apps.
  • Benthos - A message streaming bridge between a range of protocols.
  • Bus - Minimalist message bus implementation for internal communication.
  • Centrifugo - Real-time messaging (Websockets or SockJS) server in Go.
  • Chanify - A push notification server send message to your iOS devices.
  • Commander - A high-level event driven consumer/producer supporting various "dialects" such as Apache Kafka.
  • Confluent Kafka Golang Client - confluent-kafka-go is Confluent's Golang client for Apache Kafka and the Confluent Platform.
  • dbus - Native Go bindings for D-Bus.
  • drone-line - Sending Line notifications using a binary, docker or Drone CI.
  • emitter - Emits events using Go way, with wildcard, predicates, cancellation possibilities and many other good wins.
  • event - Implementation of the pattern observer.
  • EventBus - The lightweight event bus with async compatibility.
  • gaurun-client - Gaurun Client written in Go.
  • Glue - Robust Go and Javascript Socket Library (Alternative to Socket.io).
  • go-mq - RabbitMQ client with declarative configuration.
  • go-notify - Native implementation of the freedesktop notification spec.
  • go-nsq - the official Go package for NSQ.
  • go-res - Package for building REST/real-time services where clients are synchronized seamlessly, using NATS and Resgate.
  • go-socket.io - socket.io library for golang, a realtime application framework.
  • go-vitotrol - Client library to Viessmann Vitotrol web service.
  • Gollum - A n:m multiplexer that gathers messages from different sources and broadcasts them to a set of destinations.
  • golongpoll - HTTP longpoll server library that makes web pub-sub simple.
  • 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.
  • 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.
  • mob - mob is a generic-based, simple mediator / event aggregator library. It supports in-process requests / events processing.
  • NATS Go Client - Lightweight and high performance publish-subscribe and distributed queueing messaging system - this is the Go library.
  • nsq-event-bus - A tiny wrapper around NSQ topic and channel.
  • oplog - Generic oplog/replication system for REST APIs.
  • pubsub - Simple pubsub package for go.
  • Quamina - Fast pattern-matching for filtering messages and events.
  • rabbus - A tiny wrapper over amqp exchanges and queues.
  • rabtap - RabbitMQ swiss army knife cli app.
  • RapidMQ - RapidMQ is a lightweight and reliable library for managing of the local messages queue.
  • 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.
  • sarama - Go library for Apache Kafka.
  • Uniqush-Push - Redis backed unified push service for server-side notifications to mobile devices.
  • 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.
  • zmq4 - Go interface to ZeroMQ version 4. Also available for version 3 and version 2.

⬆ back to top

Microsoft Office

  • unioffice - Pure go library for creating and processing Office Word (.docx), Excel (.xlsx) and Powerpoint (.pptx) documents.

Microsoft Excel

Libraries for working with Microsoft Excel.

  • excelize - Golang library for reading and writing Microsoft Excel™ (XLSX) files.
  • exl - Excel binding to struct written in Go.(Only supports Go1.18+)
  • go-excel - A simple and light reader to read a relate-db-like excel as a table.
  • goxlsxwriter - Golang bindings for libxlsxwriter for writing XLSX (Microsoft Excel) files.
  • xlsx - Library to simplify reading the XML format used by recent version of Microsoft Excel in Go programs.
  • xlsx - Fast and safe way to read/update your existing Microsoft Excel files in Go programs.

⬆ back to top

Miscellaneous

Dependency Injection

Libraries for working with dependency injection.

  • alice - Additive dependency injection container for Golang.
  • 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).
  • gocontainer - Simple Dependency Injection Container.
  • goioc/di - Spring-inspired Dependency Injection Container.
  • GoLobby/Container - GoLobby Container is a lightweight yet powerful IoC dependency injection container for the Go programming language.
  • google/wire - Automated Initialization in Go.
  • 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.
  • 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.
  • wire - Strict Runtime Dependency Injection for Golang.

⬆ back to top

Project Layout

Unofficial set of patterns for structuring projects.

  • ardanlabs/service - A starter kit for building production grade scalable web service applications.
  • cookiecutter-golang - A Go application boilerplate template for quick starting projects following production best practices.
  • 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.
  • 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.
  • golang-templates/seed - Go application GitHub repository template.
  • insidieux/inizio - Golang project layout generator with plugins.
  • modern-go-application - Go application boilerplate and example applying modern practices.
  • pagoda - Rapid, easy full-stack web development starter kit built in Go.
  • scaffold - Scaffold generates a starter Go project layout. Lets you focus on business logic implemented.
  • wangyoucao577/go-project-layout - Set of practices and discussions on how to structure Go project layout.

⬆ back to top

Strings

Libraries for working with strings.

  • bexp - Go implementation of Brace Expansion mechanism to generate arbitrary strings.
  • caps - A case conversion library.
  • go-formatter - Implements replacement fields surrounded by curly braces {} format strings.
  • gobeam/Stringy - String manipulation library to convert string to camel case, snake case, kebab case / slugify etc.
  • strutil - String utilities.
  • sttr - cross-platform, cli app to perform various operations on string.
  • xstrings - Collection of useful string functions ported from other languages.

⬆ back to top

Uncategorized

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.
  • archiver - Library and command for making and extracting .zip and .tar.gz archives.
  • autoflags - Go package to automatically define command line flags from struct fields.
  • avgRating - Calculate average score and rating based on Wilson Score Equation.
  • banner - Add beautiful banners into your Go applications.
  • base64Captcha - Base64captch supports digit, number, alphabet, arithmetic, audio and digit-alphabet captcha.
  • basexx - Convert to, from, and between digit strings in various number bases.
  • battery - Cross-platform, normalized battery information library.
  • bitio - Highly optimized bit-level Reader and Writer for Go.
  • browscap_go - GoLang Library for Browser Capabilities Project.
  • captcha - Package captcha provides an easy to use, unopinionated API for captcha generation.
  • common - A library for server framework.
  • conv - Package conv provides fast and intuitive conversions across Go types.
  • datacounter - Go counters for readers/writer/http.ResponseWriter.
  • faker - Fake data generator.
  • faker - Random fake data and struct generator for Go.
  • ffmt - Beautify data display for Humans.
  • gatus - Automated service health dashboard.
  • go-commandbus - A slight and pluggable command-bus for Go.
  • go-commons-pool - Generic object pool for Golang.
  • go-openapi - Collection of packages to parse and utilize open-api schemas.
  • go-resiliency - Resiliency patterns for golang.
  • go-unarr - Decompression library for RAR, TAR, ZIP and 7z archives.
  • gofakeit - Random data generator written in go.
  • gommit - Analyze git commit messages to ensure they follow defined patterns.
  • gopsutil - Cross-platform library for retrieving process and system utilization(CPU, Memory, Disks, etc).
  • gosh - Provide Go Statistics Handler, Struct, Measure Method.
  • gosms - Your own local SMS gateway in Go that can be used to send SMS.
  • gotoprom - Type-safe metrics builder wrapper library for the official Prometheus client.
  • gountries - Package that exposes country and subdivision data.
  • gtree - Provide CLI, Package and Web for tree output and directories creation from Markdown or programmatically.
  • health - A simple and flexible health check library for Go.
  • health - Easy to use, extensible health check library.
  • healthcheck - An opinionated and concurrent health-check HTTP handler for RESTful services.
  • hostutils - A golang library for packing and unpacking FQDNs list.
  • indigo - Distributed unique ID generator of using Sonyflake and encoded by Base58.
  • lk - A simple licensing library for golang.
  • llvm - Library for interacting with LLVM IR in pure Go.
  • metrics - Library for metrics instrumentation and Prometheus exposition.
  • morse - Library to convert to and from morse code.
  • numa - NUMA is a utility library, which is written in go. It help us to write some NUMA-AWARED code.
  • openapi - OpenAPI 3.x parser.
  • pdfgen - HTTP service to generate PDF from Json requests.
  • persian - Some utilities for Persian language in go.
  • sandid - Every grain of sand on earth has its own ID.
  • shellwords - A Golang library to manipulate strings according to the word parsing rules of the UNIX Bourne shell.
  • shortid - Distributed generation of super short, unique, non-sequential, URL friendly IDs.
  • shoutrrr - Notification library providing easy access to various messaging services like slack, mattermost, gotify and smtp among others.
  • sitemap-format - A simple sitemap generator, with a little syntactic sugar.
  • stateless - A fluent library for creating state machines.
  • stats - Monitors Go MemStats + System stats such as Memory, Swap and CPU and sends via UDP anywhere you want for logging etc...
  • turtle - Emojis for Go.
  • url-shortener - A modern, powerful, and robust URL shortener microservice with mysql support.
  • VarHandler - Generate boilerplate http input and output handling.
  • varint - A faster varying length integer encoder/decoder than the one provided in the standard library.
  • xdg - FreeDesktop.org (xdg) Specs implemented in Go.
  • xkg - X Keyboard Grabber.
  • xz - Pure golang package for reading and writing xz-compressed files.

⬆ back to top

Natural Language Processing

Libraries for working with human languages.

See also Text Processing and Text Analysis.

Language Detection

  • 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.
  • 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.
  • govader - Go implementation of VADER Sentiment Analysis.
  • govader-backend - Microservice implementation of GoVader.
  • kagome - JP morphological analyzer written in pure Go.
  • libtextcat - Cgo binding for libtextcat C library. Guaranteed compatibility with version 2.2.
  • nlp - Extract values from strings and fill your structs with nlp.
  • nlp - Go Natural Language Processing library supporting LSA (Latent Semantic Analysis).
  • paicehusk - Golang implementation of the Paice/Husk Stemming Algorithm.
  • porter - This is a fairly straightforward port of Martin Porter's C implementation of the Porter stemming algorithm.
  • porter2 - Really fast Porter 2 stemmer.
  • RAKE.go - Go port of the Rapid Automatic Keyword Extraction Algorithm (RAKE).
  • snowball - Snowball stemmer port (cgo wrapper) for Go. Provides word stem extraction functionality Snowball native.
  • spaGO - Self-contained Machine Learning and Natural Language Processing library in Go.
  • spelling-corrector - A spelling corrector for the Spanish language or create your own.

Slugifiers

  • go-slugify - Make pretty slug with multiple languages support.
  • slug - URL-friendly slugify with multiple languages support.
  • Slugify - Go slugify application that handles string.

Tokenizers

  • gojieba - This is a Go implementation of jieba which a Chinese word splitting algorithm.
  • gotokenizer - A tokenizer based on the dictionary and Bigram language models for Golang. (Now only support chinese segmentation)
  • gse - Go efficient text segmentation; support english, chinese, japanese and other.
  • MMSEGO - This is a GO implementation of MMSEG which a Chinese word splitting algorithm.
  • prose - Library for text processing that supports tokenization, part-of-speech tagging, named-entity extraction, and more. English only.
  • segment - Go library for performing Unicode Text Segmentation as described in Unicode Standard Annex #29
  • 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

  • go-i18n - Package and an accompanying tool to work with localized text.
  • go-localize - Simple and easy to use i18n (Internationalization and localization) engine - used for translating locale strings.
  • go-mystem - CGo bindings to Yandex.Mystem - russian morphology analyzer.
  • go-pinyin - CN Hanzi to Hanyu Pinyin converter.
  • gotext - GNU gettext utilities for Go.
  • icu - Cgo binding for icu4c C library detection and conversion functions. Guaranteed compatibility with version 50.1.
  • 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.

⬆ back to top

Networking

Libraries for working with various layers of the network.

  • arp - Package arp implements the ARP protocol, as described in RFC 826.
  • buffstreams - Streaming protocolbuffer data over TCP made easy.
  • canopus - CoAP Client/Server implementation (RFC 7252).
  • cidranger - Fast IP to CIDR lookup for Go.
  • dhcp6 - Package dhcp6 implements a DHCPv6 server, as described in RFC 3315.
  • dns - Go library for working with DNS.
  • 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 unmarshaling of IEEE 802.3 Ethernet II frames and IEEE 802.1Q VLAN tags.
  • fasthttp - Package fasthttp is a fast HTTP implementation for Go, up to 10 times faster than net/http.
  • fortio - Load testing library and command line tool, advanced echo server and web UI. Allows to specify a set query-per-second load and record latency histograms and other useful stats and graph them. Tcp, Http, gRPC.
  • ftp - Package ftp implements a FTP client as described in RFC 959.
  • ftpserverlib - Fully featured FTP server library.
  • fullproxy - A fully featured scriptable and daemon configurable proxy and pivoting toolkit with SOCKS5, HTTP, raw ports and reverse proxy protocols.
  • 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.
  • 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-powerdns - PowerDNS API bindings for Golang.
  • go-sse - Go client and server implementation of HTML server-sent events.
  • go-stun - Go implementation of the STUN client (RFC 3489 and RFC 5389).
  • gobgp - BGP implemented in the Go Programming Language.
  • golibwireshark - Package golibwireshark use libwireshark library to decode pcap file and analyse dissection data.
  • gopacket - Go library for packet processing with libpcap bindings.
  • gopcap - Go wrapper for libpcap.
  • goshark - Package goshark use tshark to decode IP packet and create data struct to analyse packet.
  • gosnmp - Native Go library for performing SNMP actions.
  • gotcp - Go package for quickly writing tcp applications.
  • grab - Go package for managing file downloads.
  • graval - Experimental FTP server framework.
  • gws - High-Performance WebSocket Server & Client With AsyncIO Supporting .
  • HTTPLab - HTTPLabs let you inspect HTTP requests and forge responses.
  • httpproxy - HTTP proxy handler and dialer.
  • iplib - Library for working with IP addresses (net.IP, net.IPNet), inspired by python ipaddress and ruby ipaddr
  • jazigo - Jazigo is a tool written in Go for retrieving configuration for multiple network devices.
  • kcp-go - KCP - Fast and Reliable ARQ Protocol.
  • kcptun - Extremely simple & fast udp tunnel based on KCP protocol.
  • lhttp - Powerful websocket framework, build your IM server more easily.
  • linkio - Network link speed simulation for Reader/Writer interfaces.
  • llb - It's a very simple but quick backend for proxy servers. Can be useful for fast redirection to predefined domain with zero memory allocation and fast response.
  • mdns - Simple mDNS (Multicast DNS) client/server library in Golang.
  • mqttPaho - The Paho Go Client provides an MQTT client library for connection to MQTT brokers via TCP, TLS or WebSockets.
  • 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.
  • 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).
  • packet - Send packets over TCP and UDP. It can buffer messages and hot-swap connections if needed.
  • panoptes-stream - A cloud native distributed streaming network telemetry (gNMI, Juniper JTI and Cisco MDT).
  • peerdiscovery - Pure Go library for cross-platform local peer discovery using UDP multicast.
  • portproxy - Simple TCP proxy which adds CORS support to API's which don't support it.
  • publicip - Package publicip returns your public facing IPv4 address (internet egress).
  • quic-go - An implementation of the QUIC protocol in pure Go.
  • raw - Package raw enables reading and writing data at the device driver level for a network interface.
  • sftp - Package sftp implements the SSH File Transfer Protocol as described in https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt.
  • ssh - Higher-level API for building SSH servers (wraps crypto/ssh).
  • sslb - It's a Super Simples Load Balancer, just a little project to achieve some kind of performance.
  • stun - Go implementation of RFC 5389 STUN protocol.
  • tcp_server - Go library for building tcp servers faster.
  • tspool - A TCP Library use worker pool to improve performance and protect your server.
  • utp - Go uTP micro transport protocol implementation.
  • vssh - Go library for building network and server automation over SSH protocol.
  • water - Simple TUN/TAP library.
  • webrtc - A pure Go implementation of the WebRTC API.
  • winrm - Go WinRM client to remotely execute commands on Windows machines.
  • xtcp - TCP Server Framework with simultaneous full duplex communication, graceful shutdown, and custom protocol.

⬆ back to top

HTTP Clients

Libraries for making HTTP requests.

  • gentleman - Full-featured plugin-driven HTTP client library.
  • go-cleanhttp - Get easily stdlib HTTP client, which does not share any state with other clients.
  • go-http-client - Make http calls simply and easily.
  • go-otelroundtripper - Go http.RoundTripper that emits open telemetry metrics for HTTP requests.
  • go-req - Declarative golang HTTP client.
  • go-retryablehttp - Retryable HTTP client in Go.
  • go-zoox/fetch - A Powerful, Lightweight, Easy Http Client, inspired by Web Fetch API.
  • 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.

⬆ back to top

OpenGL

Libraries for using OpenGL in Go.

  • gl - Go bindings for OpenGL (generated via glow).
  • glfw - Go bindings for GLFW 3.
  • go-glmatrix - Go port of glMatrix library.
  • goxjs/gl - Go cross-platform OpenGL bindings (OS X, Linux, Windows, browsers, iOS, Android).
  • goxjs/glfw - Go cross-platform glfw library for creating an OpenGL context and receiving events.
  • mathgl - Pure Go math package specialized for 3D math, with inspiration from GLM.

⬆ back to top

ORM

Libraries that implement Object-Relational Mapping or datamapping techniques.

  • bun - SQL-first Golang ORM. Successor of go-pg.
  • cacheme - Schema based, typed Redis caching/memoize framework for Go.
  • ent - An entity framework for Go. Simple, yet powerful ORM for modeling and querying data.
  • go-firestorm - A simple ORM for Google/Firebase Cloud Firestore.
  • go-sql - A easy ORM for mysql.
  • go-sqlbuilder - A flexible and powerful SQL string builder library plus a zero-config ORM.
  • go-store - Simple and fast Redis backed key-value store library for Go.
  • golobby/orm - Simple, fast, type-safe, generic orm for developer happiness.
  • GORM - The fantastic ORM library for Golang, aims to be developer friendly.
  • gormt - Mysql database to golang gorm struct.
  • gorp - Go Relational Persistence, ORM-ish library for Go.
  • grimoire - Grimoire is a database access layer and validation for golang. (Support: MySQL, PostgreSQL and SQLite3).
  • lore - Simple and lightweight pseudo-ORM/pseudo-struct-mapping environment for Go.
  • marlow - Generated ORM from project structs for compile time safety assurances.
  • pop/soda - Database migration, creation, ORM, etc... for MySQL, PostgreSQL, and SQLite.
  • Prisma - Prisma Client Go, Typesafe database access for Go.
  • reform - Better ORM for Go, based on non-empty interfaces and code generation.
  • rel - Modern Database Access Layer for Golang - Testable, Extendable and Crafted Into a Clean and Elegant API.
  • SQLBoiler - ORM generator. Generate a featureful and blazing-fast ORM tailored to your database schema.
  • upper.io/db - Single interface for interacting with different data sources through the use of adapters that wrap mature database drivers.
  • XORM - Simple and powerful ORM for Go. (Support: MySQL, MyMysql, PostgreSQL, Tidb, SQLite3, MsSql and Oracle).
  • Zoom - Blazing-fast datastore and querying engine built on Redis.

⬆ back to top

Package Management

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.

Official experimental tooling for package management

  • dep - Go dependency tool.
  • vgo - Versioned Go.

Unofficial libraries for package and dependency management.

  • glide - Manage your golang vendor and vendored packages with ease. Inspired by tools like Maven, Bundler, and Pip.
  • godep - dependency tool for go, godep helps build packages reproducibly by fixing their dependencies.
  • gom - Go Manager - bundle for go.
  • goop - Simple dependency manager for Go (golang), inspired by Bundler.
  • gop - Build and manage your Go applications out of GOPATH.
  • gopm - Go Package Manager.
  • govendor - Go Package Manager. Go vendor tool that works with the standard vendor file.
  • gpm - Barebones dependency manager for Go.
  • gup - Update binaries installed by "go install".
  • johnny-deps - Minimal dependency version using Git.
  • modgv - Converts 'go mod graph' output into Graphviz's DOT language.
  • mvn-golang - plugin that provides way for auto-loading of Golang SDK, dependency management and start build environment in Maven project infrastructure.
  • nut - Vendor Go dependencies.
  • VenGO - create and manage exportable isolated go virtual environments.

⬆ back to top

Performance

  • go-instrument - Automatically add spans to all methods and functions.
  • jaeger - A distributed tracing system.
  • pixie - No instrumentation tracing for Golang applications via eBPF.
  • profile - Simple profiling support package for Go.
  • statsviz - Live visualization of your Go application runtime statistics.
  • tracer - Simple, lightweight tracing.

⬆ back to top

Query Language

  • api-fu - Comprehensive GraphQL implementation.
  • 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.
  • graphql - graphql parser + utilities.
  • graphql - GraphQL server with a focus on ease of use.
  • graphql-go - Implementation of GraphQL for Go.
  • gws - Apollos' "GraphQL over Websocket" client and server implementation.
  • jsonpath - A query library for retrieving part of JSON based on JSONPath syntax.
  • jsonql - JSON query expression library in Golang.
  • jsonslice - Jsonpath queries with advanced filters.
  • rql - Resource Query Language for REST API.
  • rqp - Query Parser for REST API. Filtering, validations, both AND, OR operations are supported directly in the query.
  • straf - Easily Convert Golang structs to GraphQL objects.

⬆ back to top

Resource Embedding

  • debme - Create an embed.FS from an existing embed.FS subdirectory.
  • esc - Embeds files into Go programs and provides http.FileSystem interfaces to them.
  • fileb0x - Simple tool to embed files in go with focus on "customization" and ease to use.
  • go-resources - Unfancy resources embedding with Go.
  • go.rice - go.rice is a Go package that makes working with resources such as HTML, JS, CSS, images, and templates very easy.
  • mule - Embed external resources like images, movies ... into Go source code to create single file binaries using go generate. Focused on simplicity.
  • packr - The simple and easy way to embed static files into Go binaries.
  • rebed - Recreate folder structures and files from Go 1.16's embed.FS type
  • statics - Embeds static resources into go files for single binary compilation + works with http.FileSystem + symlinks.
  • statik - Embeds static files into a Go executable.
  • templify - Embed external template files into Go code to create single file binaries.
  • vfsgen - Generates a vfsdata.go file that statically implements the given virtual filesystem.

⬆ back to top

Science and Data Analysis

Libraries for scientific computing and data analyzing.

  • assocentity - Package assocentity returns the average distance from words to a given entity.
  • bradleyterry - Provides a Bradley-Terry Model for pairwise comparisons.
  • calendarheatmap - Calendar heatmap in plain Go inspired by Github contribution activity.
  • chart - Simple Chart Plotting library for Go. Supports many graphs types.
  • dataframe-go - Dataframes for machine-learning and statistics (similar to pandas).
  • decimal - Package decimal implements arbitrary-precision decimal floating-point arithmetic.
  • evaler - Simple floating point arithmetic expression evaluator.
  • ewma - Exponentially-weighted moving averages.
  • geom - 2D geometry for golang.
  • go-dsp - Digital Signal Processing for Go.
  • go-estimate - State estimation and filtering algorithms in Go.
  • go-gt - Graph theory algorithms written in "Go" language.
  • godesim - Extended/multivariable ODE solver framework for event-based simulations with simple API.
  • goent - GO Implementation of Entropy Measures.
  • gograph - A golang generic graph library that provides mathematical graph-theory and algorithms.
  • gohistogram - Approximate histograms for data streams.
  • gonum - Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more.
  • gonum/plot - gonum/plot provides an API for building and drawing plots in Go.
  • goraph - Pure Go graph theory library(data structure, 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.
  • graph - Library of basic graph algorithms.
  • jsonl-graph - Tool to manipulate JSONL graphs with graphviz support.
  • ode - Ordinary differential equation (ODE) solver which supports extended states and channel-based iteration stop conditions.
  • orb - 2D geometry types with clipping, GeoJSON and Mapbox Vector Tile support.
  • pagerank - Weighted PageRank algorithm implemented in Go.
  • piecewiselinear - Tiny linear interpolation library.
  • PiHex - Implementation of the "Bailey-Borwein-Plouffe" algorithm for the hexadecimal number Pi.
  • rootfinding - root-finding algorithms library for finding roots of quadratic functions.
  • sparse - Go Sparse matrix formats for linear algebra supporting scientific and machine learning applications, compatible with gonum matrix libraries.
  • stats - Statistics package with common functions missing from the Golang standard library.
  • streamtools - general purpose, graphical tool for dealing with streams of data.
  • TextRank - TextRank implementation in Golang with extendable features (summarization, weighting, phrase extraction) and multithreading (goroutine) support.
  • triangolatte - 2D triangulation library. Allows translating lines and polygons (both based on points) to the language of GPUs.

⬆ back to top

Security

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

  • acmetool - ACME (Let's Encrypt) client tool with automatic renewal.
  • acra - Network encryption proxy to protect database-based applications from data leaks: strong selective encryption, SQL injections prevention, intrusion detection system.
  • age - A simple, modern and secure encryption tool (and Go library) with small explicit keys, no config options, and UNIX-style composability.
  • argon2-hashing - light wrapper around Go's argon2 package that closely mirrors with Go's standard library Bcrypt and simple-scrypt package.
  • argon2pw - Argon2 password hash generation with constant-time password comparison.
  • autocert - Auto provision Let's Encrypt certificates and start a TLS server.
  • BadActor - In-memory, application-driven jailer built in the spirit of fail2ban.
  • booster - Fast initramfs generator with full-disk encryption support.
  • Cameradar - Tool and library to remotely hack RTSP streams from surveillance cameras.
  • certificates - An opinionated tool for generating tls certificates.
  • CertMagic - Mature, robust, and powerful ACME client integration for fully-managed TLS certificate issuance and renewal.
  • Coraza - Enterprise-ready, modsecurity and OWASP CRS compatible WAF library.
  • dongle - A simple, semantic and developer-friendly golang package for encoding&decoding and encryption&decryption.
  • 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.
  • go-htpasswd - Apache htpasswd Parser for Go.
  • go-password-validator - Password validator based on raw cryptographic entropy values.
  • go-yara - Go Bindings for YARA, the "pattern matching swiss knife for malware researchers (and everyone else)".
  • goArgonPass - Argon2 password hash and verification designed to be compatible with existing Python and PHP implementations.
  • goSecretBoxPassword - A probably paranoid package for securely hashing and encrypting passwords.
  • Interpol - Rule-based data generator for fuzzing and penetration testing.
  • lego - Pure Go ACME client library and CLI tool (for use with Let's Encrypt).
  • memguard - A pure Go library for handling sensitive values in memory.
  • nacl - Go implementation of the NaCL set of API's.
  • optimus-go - ID hashing and Obfuscation using Knuth's Algorithm.
  • passlib - Futureproof password hashing library.
  • secret - Prevent your secrets from leaking into logs, std* etc.
  • secure - HTTP middleware for Go that facilitates some quick security wins.
  • secureio - An keyexchanging+authenticating+encrypting wrapper and multiplexer for io.ReadWriteCloser based on XChaCha20-poly1305, ECDH and ED25519.
  • simple-scrypt - Scrypt package with a simple, obvious API and automatic cost calibration built-in.
  • ssh-vault - encrypt/decrypt using ssh keys.
  • 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.

⬆ back to top

Serialization

Libraries and tools for binary serialization.

  • asn1 - Asn.1 BER and DER encoding library for golang.
  • bambam - generator for Cap'n Proto schemas from go.
  • bel - Generate TypeScript interfaces from Go structs/interfaces. Useful for JSON RPC.
  • binstruct - Golang binary decoder for mapping data into the structure.
  • 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-lctree - Provides a CLI and primitives to serialize and deserialize LeetCode binary trees.
  • gogoprotobuf - Protocol Buffers for Go with Gadgets.
  • goprotobuf - Go support, in the form of a library and protocol compiler plugin, for Google's protocol buffers.
  • jsoniter - High-performance 100% compatible drop-in replacement of "encoding/json".
  • mapstructure - Go library for decoding generic map values into native Go structures.
  • php_session_decoder - GoLang library for working with PHP session format and PHP Serialize/Unserialize functions.
  • 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.

⬆ back to top

Server Applications

  • algernon - HTTP/2 web server with built-in support for Lua, Markdown, GCSS and Amber.
  • Caddy - Caddy is an alternative, HTTP/2 web server that's easy to configure and use.
  • consul - Consul is a tool for service discovery, monitoring and configuration.
  • cortex-tenant - Prometheus remote write proxy that adds add Cortex tenant ID header based on metric labels.
  • devd - Local webserver for developers.
  • discovery - A registry for resilient mid-tier load balancing and failover.
  • dudeldu - A simple SHOUTcast server.
  • dummy - Run mock server based off an API contract with one command.
  • Easegress - A cloud native high availability/performance traffic orchestration system with observability and extensibility.
  • etcd - Highly-available key value store for shared configuration and service discovery.
  • Euterpe - Self-hosted music streaming server with built-in web UI and REST API.
  • Fider - Fider is an open platform to collect and organize customer feedback.
  • Flagr - Flagr is an open-source feature flagging and A/B testing service.
  • flipt - A self contained feature flag solution written in Go and Vue.js
  • go-feature-flag - A feature flag solution, with only a YAML file in the backend (S3, GitHub, HTTP, local file ...), no server to install, just add a file in a central system and refer to it.
  • go-proxy-cache - Simple Reverse Proxy with Caching, written in Go, using Redis.
  • jackal - An XMPP server written in Go.
  • 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.
  • nginx-prometheus - Nginx log parser and exporter to Prometheus.
  • nsq - A realtime distributed messaging platform.
  • 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.
  • simple-jwt-provider - Simple and lightweight provider which exhibits JWTs, supports login, password-reset (via mail) and user management.
  • Trickster - HTTP reverse proxy cache and time series accelerator.
  • Wish - Make SSH apps, just like that!

⬆ back to top

Stream Processing

Libraries and tools for stream processing and reactive programming.

  • go-streams - Go stream processing library.
  • goio - An implementation of IO, Stream, Fiber for Golang, inspired by awesome Scala libraries cats and fs2.
  • machine - Go library for writing and generating stream workers with built in metrics and traceability.
  • stream - Go Stream, like Java 8 Stream: Filter/Map/FlatMap/Peek/Sorted/ForEach/Reduce...

⬆ back to top

Template Engines

Libraries and tools for templating and lexing.

  • 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.
  • gospin - Article spinning and spintax/spinning syntax engine, useful for A/B, testing pieces of text/articles and creating more natural conversations.
  • 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.
  • jet - Jet template engine.
  • liquid - Go implementation of Shopify Liquid templates.
  • maroto - A maroto way to create PDFs. Maroto is inspired in Bootstrap and uses gofpdf. Fast and simple.
  • pongo2 - Django-like template-engine for Go.
  • quicktemplate - Fast, powerful, yet easy to use template engine. Converts templates into Go code and then compiles it.
  • raymond - Complete handlebars implementation in Go.
  • Razor - Razor view engine for Golang.
  • Soy - Closure templates (aka Soy templates) for Go, following the official spec.
  • sprig - Useful template functions for Go templates.
  • tbd - A really simple way to create text templates with placeholders - exposes extra builtin Git repo metadata.

⬆ back to top

Testing

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.
    • assert - Basic Assertion Library used along side native go testing, with building blocks for custom assertions.
    • badio - Extensions to Go's testing/iotest package.
    • baloo - Expressive and versatile end-to-end HTTP API testing made easy.
    • be - The minimalist generic test assertion library.
    • biff - Bifurcation testing framework, BDD compatible.
    • charlatan - Tool to generate fake interface implementations for tests.
    • commander - Tool for testing cli applications on windows, linux and osx.
    • covergates - Self-hosted code coverage report review and management service.
    • cupaloy - Simple snapshot testing addon for your test framework.
    • dbcleaner - Clean database for testing purpose, inspired by database_cleaner in Ruby.
    • dsunit - Datastore testing for SQL, NoSQL, structured files.
    • embedded-postgres - Run a real Postgres database locally on Linux, OSX or Windows as part of another Go application or test.
    • endly - Declarative end to end functional testing.
    • fixenv - Fixture manage engine, inspired by pytest fixtures.
    • fluentassert - Extensible, type-safe, fluent assertion Go library.
    • flute - HTTP client testing framework.
    • frisby - REST API testing framework.
    • gherkingen - BDD boilerplate generator and framework.
    • ginkgo - BDD Testing Framework for Go.
    • gnomock - integration testing with real dependencies (database, cache, even Kubernetes or AWS) running in Docker, without mocks.
    • go-carpet - Tool for viewing test coverage in terminal.
    • go-cmp - Package for comparing Go values in tests.
    • go-hit - Hit is an http integration test framework written in golang.
    • go-mutesting - Mutation testing for Go source code.
    • go-mysql-test-container - Golang MySQL testcontainer to help with MySQL integration testing.
    • go-snaps - Jest-like snapshot testing in Golang.
    • go-testdeep - Extremely flexible golang deep comparison, extends the go testing package.
    • go-testpredicate - Test predicate style assertions library with extensive diagnostics output.
    • go-vcr - Record and replay your HTTP interactions for fast, deterministic and accurate tests.
    • goblin - Mocha like testing framework fo Go.
    • goc - Goc is a comprehensive coverage testing system for The Go Programming Language.
    • gocheck - More advanced testing framework alternative to gotest.
    • GoConvey - BDD-style framework with web UI and live reload.
    • gocrest - Composable hamcrest-like matchers for Go assertions.
    • godog - Cucumber BDD framework for Go.
    • gofight - API Handler Testing for Golang Router framework.
    • gogiven - YATSPEC-like BDD testing framework for Go.
    • gomatch - library created for testing JSON against patterns.
    • gomega - Rspec like matcher/assertion library.
    • Gont - Go network testing toolkit for testing building complex network topologies using Linux namespaces.
    • GoSpec - BDD-style testing framework for the Go programming language.
    • gospecify - This provides a BDD syntax for testing your Go code. It should be familiar to anybody who has used libraries such as rspec.
    • gosuite - Brings lightweight test suites with setup/teardown facilities to testing by leveraging Go1.7's Subtests.
    • got - An enjoyable golang test framework.
    • gotest.tools - A collection of packages to augment the go testing package and support common patterns.
    • Hamcrest - fluent framework for declarative Matcher objects that, when applied to input values, produce self-describing results.
    • httpexpect - Concise, declarative, and easy to use end-to-end HTTP and REST API testing.
    • is - Professional lightweight testing mini-framework for Go.
    • jsonassert - Package for verifying that your JSON payloads are serialized correctly.
    • omg.testingtools - The simple library for change a values of private fields for testing.
    • restit - Go micro framework to help writing RESTful API integration test.
    • schema - Quick and easy expression matching for JSON schemas used in requests and responses.
    • stop-and-go - Testing helper for concurrency.
    • testcase - Idiomatic testing framework for Behavior Driven Development.
    • 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.
    • testmd - Convert markdown snippets into testable go code.
    • 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.
    • Tt - Simple and colorful test tools.
    • wstest - Websocket client for unit-testing a websocket http.Handler.
  • Mock

    • counterfeiter - Tool for generating self-contained mock objects.
    • genmock - Go mocking system with code generator for building calls of the interface methods.
    • go-localstack - Tool for using localstack in AWS testing.
    • go-sqlmock - Mock SQL driver for testing database interactions.
    • go-txdb - Single transaction based database driver mainly for testing purposes.
    • gock - Versatile HTTP mocking made easy.
    • gomock - Mocking framework for the Go programming language.
    • govcr - HTTP mock for Golang: record and replay HTTP interactions for offline testing.
    • hoverfly - HTTP(S) proxy for recording and simulating REST/SOAP APIs with extensible middleware and easy-to-use CLI.
    • httpmock - Easy mocking of HTTP responses from external resources.
    • minimock - Mock generator for Go interfaces.
    • mockery - Tool to generate Go interfaces.
    • mockhttp - Mock object for Go http.ResponseWriter.
    • mockit - Allows functions and method easy mocking, without defining new types; it's similar to Mockito for Java.
    • mooncake - A simple way to generate mocks for multiple purposes
    • timex - A test-friendly replacement for the native time package.
  • Fuzzing and delta-debugging/reducing/shrinking.

    • go-fuzz - Randomized testing system.
    • gofuzz - Library for populating go objects with random values.
    • Tavor - Generic fuzzing and delta-debugging framework.
  • Selenium and browser control tools.

    • cdp - Type-safe bindings for the Chrome Debugging Protocol that can be used with browsers or other debug targets that implement it.
    • chromedp - a way to drive/test Chrome, Safari, Edge, Android Webviews, and other browsers supporting the Chrome Debugging Protocol.
    • ggr - a lightweight server that routes and proxies Selenium WebDriver requests to multiple Selenium hubs.
    • playwright-go - browser automation library to control Chromium, Firefox and WebKit with a single API.
    • rod - A Devtools driver to make web automation and scraping easy.
    • selenoid - alternative Selenium hub server that launches browsers within containers.
  • Fail injection

⬆ back to top

Text Processing

Libraries for parsing and manipulating texts.

See also Natural Language Processing and Text Analysis.

Formatters

  • address - Handles address representation, validation and formatting.
  • align - A general purpose application that aligns text.
  • bytes - Formats and parses numeric byte values (10K, 2M, 3G, etc.).
  • go-fixedwidth - Fixed-width text formatting (encoder/decoder with reflection).
  • go-humanize - Formatters for time, numbers, and memory size to human readable format.
  • gotabulate - Easily pretty-print your tabular data with Go.
  • textwrap - Wraps text at end of lines. Implementation of textwrap module from Python.

Markup Languages

  • bafi - Universal JSON, BSON, YAML, XML translator to ANY format using templates.
  • bbConvert - Converts bbCode to HTML that allows you to add support for custom bbCode tags.
  • blackfriday - Markdown processor in Go.
  • github_flavored_markdown - GitHub Flavored Markdown renderer (using blackfriday) with fenced code block highlighting, clickable header anchor links.
  • go-output-format - Output go structures into multiple formats (YAML/JSON/etc) in your command line app.
  • go-toml - Go library for the TOML format with query support and handy cli tools.
  • goldmark - A Markdown parser written in Go. Easy to extend, standard (CommonMark) compliant, well structured.
  • goq - Declarative unmarshaling of HTML using struct tags with jQuery syntax (uses GoQuery).
  • html-to-markdown - Convert HTML to Markdown. Even works with entire websites and can be extended through rules.
  • htmlquery - An XPath query package for HTML, lets you extract data or evaluate from HTML documents by an XPath expression.
  • htmlyaml - Rich rendering of YAML as HTML in Go
  • mxj - Encode / decode XML as JSON or map[string]interface{}; extract values with dot-notation paths and wildcards. Replaces x2j and j2x packages.
  • toml - TOML configuration format (encoder/decoder with reflection).

Parsers/Encoders/Decoders

  • allot - Placeholder and wildcard text parsing for CLI tools and bots.
  • codetree - Parses indented code (python, pixy, scarlet, etc.) and returns a tree structure.
  • commonregex - A collection of common regular expressions for Go.
  • did - DID (Decentralized Identifiers) Parser and Stringer in Go.
  • doi - Document object identifier (doi) parser in Go.
  • editorconfig-core-go - Editorconfig file parser and manipulator for Go.
  • encdec - Package provides a generic interface to encoders and decoders.
  • go-fasttld - High performance effective top level domains (eTLD) extraction module.
  • go-nmea - NMEA parser library for the Go language.
  • go-vcard - Parse and format vCard.
  • gofeed - Parse RSS and Atom feeds in Go.
  • gographviz - Parses the Graphviz DOT language.
  • gonameparts - Parses human names into individual name parts.
  • ltsv - High performance LTSV (Labeled Tab Separated Value) reader for Go.
  • normalize - Sanitize, normalize and compare fuzzy text.
  • 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.
  • parseargs-go - string argument parser that understands quotes and backslashes.
  • parth - URL path segmentation parsing.
  • sdp - SDP: Session Description Protocol [RFC 4566].
  • sh - Shell parser and formatter.
  • tokenizer - Parse any string, slice or infinite buffer to any tokens.
  • when - Natural EN and RU language date/time parser with pluggable rules.
  • xj2go - Convert xml or json to go struct.

Regular Expressions

  • genex - Count and expand Regular Expressions into all matching Strings.
  • go-wildcard - Simple and lightweight wildcard pattern matching.
  • goregen - Library for generating random strings from regular expressions.
  • regroup - Match regex expression named groups into go struct using struct tags and automatic parsing.
  • rex - Regular expressions builder.

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.

⬆ back to top

UUID

Libraries for working with UUIDs.

⬆ back to top

Validation

Libraries for validation.

⬆ back to top

Version Control

Libraries for version control.

⬆ back to top

Video

Libraries for manipulating video.

⬆ back to top

Web Frameworks

Full stack web frameworks.

⬆ back to top

Middlewares

Actual middlewares

Libraries for creating HTTP middlewares

⬆ back to top

Routers

⬆ back to top

WebAssembly

⬆ back to top

Windows

⬆ back to top

XML

Libraries and tools for manipulating XML.

Zero Trust

Code Analysis

Source code analysis tools, also known as Static Application Security Testing (SAST) Tools.

Editor Plugins

Plugin for text editors and IDEs.

⬆ back to top

Go Generate Tools

⬆ back to top

Go Tools

⬆ back to top

Software Packages

Software written in Go.

⬆ back to top

DevOps Tools

⬆ 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

⬆ 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

About

Zero Allocation Golang Packages / Stuff

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages