Browse free open source Go Libraries and projects below. Use the toggles on the left to filter open source Go Libraries by OS, license, language, programming language, and project status.

  • MongoDB Atlas runs apps anywhere Icon
    MongoDB Atlas runs apps anywhere

    Deploy in 115+ regions with the modern database for every enterprise.

    MongoDB Atlas gives you the freedom to build and run modern applications anywhere—across AWS, Azure, and Google Cloud. With global availability in over 115 regions, Atlas lets you deploy close to your users, meet compliance needs, and scale with confidence across any geography.
    Start Free
  • Our Free Plans just got better! | Auth0 Icon
    Our Free Plans just got better! | Auth0

    With up to 25k MAUs and unlimited Okta connections, our Free Plan lets you focus on what you do best—building great apps.

    You asked, we delivered! Auth0 is excited to expand our Free and Paid plans to include more options so you can focus on building, deploying, and scaling applications without having to worry about your security. Auth0 now, thank yourself later.
    Try free now
  • 1
    Stash

    Stash

    An organizer for your videos, written in Go

    Stash allows you to organize and view your own collection of adult video and image files. Think of it like a private Hub site for your personal porn collection. Every video file has its own scene. Scenes can be rated and tagged with performers, tags, movies and a studio. Bookmark your favorite parts of a scene with markers. Markers can be tagged and appear in the video scrubber when viewing a scene. Images can be rated and tagged with performers, tags and a studio. Galleries are collections of images. Galleries can be automatically created from zip files and folders containing image files. Preview and view all of your scenes and galleries from your web browser on your PC, tablet or phone. Stash directly streams videos to your web browser. Stash supports streaming of a large variety of formats and codecs to most web browsers.
    Downloads: 14 This Week
    Last Update:
    See Project
  • 2
    Excelize

    Excelize

    Go language library for reading and writing Microsoft Excel

    Excelize is a library written in pure Go providing a set of functions that allow you to write to and read from XLAM / XLSM / XLSX / XLTM / XLTX files. With Excelize chart generation and management is as easy as a few lines of code. You can build charts based off data in your worksheet or generate charts without any data in your worksheet at all. Excelize provided streaming API for generating or reading data from a worksheet with huge amounts of data. Simply runs Excelize on macOS, Linux and Windows operating systems without a hustle. With Excelize chart generation and management is as easy as a few lines of code. You can build charts based on data in your worksheet or generate charts without any data in your worksheet at all.
    Downloads: 9 This Week
    Last Update:
    See Project
  • 3
    Vegeta

    Vegeta

    HTTP load testing tool and library. It's over 9000!

    Vegeta is a versatile HTTP load testing tool built out of a need to drill HTTP services with a constant request rate. It can be used both as a command line utility and a library. You can install Vegeta using the Homebrew package manager on Mac OS X. Both the library and the CLI are versioned with SemVer v2.0.0. After v8.0.0, the two components are versioned separately to better isolate breaking changes to each. CLI releases are tagged with cli/vMAJOR.MINOR.PATCH and published on the Github releases page. As for the library, new versions are tagged with both lib/vMAJOR.MINOR.PATCH and vMAJOR.MINOR.PATCH. The latter tag is required for compatibility with go mod. The JSON format makes integration with programs that produce targets dynamically easier. Each target is one JSON object in its own line. The method and url fields are required. If present, the body field must be base64 encoded. The generated JSON Schema defines the format in detail.
    Downloads: 9 This Week
    Last Update:
    See Project
  • 4
    go-github

    go-github

    Go library for accessing the GitHub API

    go-github is a Go client library for accessing the GitHub API v3. Currently, go-github requires Go version 1.13 or greater. go-github tracks Go's version support policy. We do our best not to break older versions of Go if we don't have to, but due to tooling constraints, we don't always test older versions. If you're interested in using the GraphQL API v4, the recommended library is shurcooL/githubv4. go-github is compatible with modern Go releases in module mode. Resolve and add the package to the current development module, along with its dependencies. Alternatively the same can be achieved if you use import in a package. Construct a new GitHub client, then use the various services on the client to access different parts of the GitHub API. Some API methods have optional parameters that can be passed. Using the context package, one can easily pass cancelation signals and deadlines to various services of the client for handling a request.
    Downloads: 8 This Week
    Last Update:
    See Project
  • Build Securely on Azure with Proven Frameworks Icon
    Build Securely on Azure with Proven Frameworks

    Lay a foundation for success with Tested Reference Architectures developed by Fortinet’s experts. Learn more in this white paper.

    Moving to the cloud brings new challenges. How can you manage a larger attack surface while ensuring great network performance? Turn to Fortinet’s Tested Reference Architectures, blueprints for designing and securing cloud environments built by cybersecurity experts. Learn more and explore use cases in this white paper.
    Download Now
  • 5
    Go Tools

    Go Tools

    Various packages and tools that support the Go programming language

    This subrepository holds the source for various packages and tools that support the Go programming language. Some of the tools, godoc and vet for example, are included in binary Go distributions. Others, including the Go guru and the test coverage tool, can be fetched with go get. Packages include a type-checker for Go and an implementation of the Static Single Assignment form (SSA) representation for Go programs. This repository uses prettier to format JS and CSS files. The version of prettier used is 1.18.2. It is encouraged that all JS and CSS code be run through this before submitting a change. However, it is not a strict requirement enforced by CI. This repository uses Gerrit for code changes.
    Downloads: 6 This Week
    Last Update:
    See Project
  • 6
    Interactsh

    Interactsh

    An OOB interaction gathering server and client library

    Interactsh is an open-source tool for detecting out-of-band interactions. It is a tool designed to detect vulnerabilities that cause external interactions. Interactsh Cli client requires go1.17+ to install successfully. interactsh-client with -sf, -session-file flag can be used store/read the current session information from user defined file which is useful to resume the same session to poll the interactions even after the client gets stopped or closed. Running the interactsh-client in verbose mode (v) to see the whole request and response, along with an output file to analyze afterwards. Using the server flag, interactsh-client can be configured to connect with a self-hosted Interactsh server, this flag accepts single or multiple server separated by comma. Default servers are subject to change/rotate/down at any time, thus we recommend using a self-hosted interactsh server if you are experiencing issues with the default server.
    Downloads: 6 This Week
    Last Update:
    See Project
  • 7
    Centrifuge

    Centrifuge

    Real-time messaging library for Go with scalability in mind

    This library has no v1 release, API may change. Before v1 release patch version updates only have backward-compatible changes and fixes, minor version updates can have backward-incompatible API changes. Master branch can have unreleased code. Only two last Go minor versions are officially supported by this library. Centrifuge library is a real-time core of Centrifugo server. It's a general-purpose real-time messaging library for Go programming language. Real-time messaging can help create interactive applications where events are delivered to online users with minimal delay. Chats apps, live comments, multiplayer games, real-time data visualizations, collaborative tools, etc. can all be built on top of Centrifuge library. The library is built on top of efficient client-server protocol schema and exposes various real-time oriented primitives for a developer.
    Downloads: 5 This Week
    Last Update:
    See Project
  • 8
    DarwinKit

    DarwinKit

    Native Mac APIs for Go. Previously known as MacDriver

    DarwinKit is a lightweight framework that provides system-level utilities and APIs for macOS and iOS development, allowing deeper interaction with the Darwin operating system.
    Downloads: 5 This Week
    Last Update:
    See Project
  • 9
    Dragonboat

    Dragonboat

    A feature complete and high performance multi-group Raft library in Go

    Dragonboat is a high-performance multi-group Raft consensus library in pure Go. Consensus algorithms such as Raft provides fault tolerance by allowing a system to continue to operate as long as the majority of member servers are available. For example, a Raft shard of 5 servers can make progress even if 2 servers fail. It also appears to clients as a single entity with strong data consistency always provided. All Raft replicas can be used to handle read requests for aggregated read throughput. Dragonboat handles all technical difficulties associated with Raft to allow users to just focus on their application domains. It is also very easy to use, our step-by-step examples can help new users to master it in half an hour. Easy to use pure-Go APIs for building Raft based applications. Feature complete and scalable multi-group Raft implementation. Disk based and memory based state machine support. Fully pipelined and TLS mutual authentication support.
    Downloads: 5 This Week
    Last Update:
    See Project
  • Resolve Support Tickets 2x Faster​ Icon
    Resolve Support Tickets 2x Faster​

    Full access to Enterprise features. No credit card required.

    What if You Could Automate 90% of Your Repetitive Tasks in Under 30 Days? At ServoDesk, we help businesses like yours automate operations with AI, allowing you to cut service times in half and increase productivity by 25% - without hiring more staff.
    Try ServoDesk for free
  • 10
    Go gRPC Middleware

    Go gRPC Middleware

    Golang gRPC Middlewares: interceptor chaining, auth, logging, retries

    gRPC Go has support for "interceptors", i.e. middleware that is executed either on the gRPC Server before the request is passed onto the user's application logic, or on the gRPC client either around the user call. It is a perfect way to implement common patterns: auth, logging, tracing, metrics, validation, retries, rate limiting, and more, which can be great generic building blocks that make it easy to build multiple microservices. Especially for observability signals (logging, tracing, metrics) interceptors offer semi-auto-instrumentation that improves the consistency of your observability and allows great correlation techniques (e.g. exemplars and trace ID in logs). Demo-ed in examples. This repository offers ready-to-use middleware that implements gRPC interceptors with examples. In some cases, dedicated projects offer great interceptors, so this repository skips those, and we link them in the interceptors list.
    Downloads: 5 This Week
    Last Update:
    See Project
  • 11
    env

    env

    A simple and zero-dependencies library to parse environment variables

    Parse environment variables to structs in Go. In Go, it’s dead simple to get the value from an environment variable. If you have a type that is not supported out of the box by the lib, you are able to use (or define) and pass custom parsers (and their associated reflect.Type) to the env.ParseWithFuncs() function. Env supports by default anything that implements the TextUnmarshaler interface. That includes things like time.Time for example. The upside is that depending on the format you need, you don't need to change anything. The downside is that if you do need time in another format, you'll need to create your own type. By default, slice types will split the environment value on ,; you can change this behavior by setting the envSeparator tag. If you set the envExpand tag, environment variables (either in ${var} or $var format) in the string will be replaced according with the actual value of the variable.
    Downloads: 5 This Week
    Last Update:
    See Project
  • 12
    kafka-go

    kafka-go

    Kafka library in Go

    We rely on both Go and Kafka a lot at Segment. Unfortunately, the state of the Go client libraries for Kafka at the time of this writing was not ideal. sarama, which is by far the most popular but is quite difficult to work with. It is poorly documented, the API exposes low level concepts of the Kafka protocol, and it doesn't support recent Go features like contexts. It also passes all values as pointers which causes large numbers of dynamic memory allocations, more frequent garbage collections, and higher memory usage. confluent-kafka-go is a cgo based wrapper around librdkafka, which means it introduces a dependency to a C library on all Go code that uses the package. It has much better documentation than sarama but still lacks support for Go contexts. goka is a more recent Kafka client for Go which focuses on a specific usage pattern. It provides abstractions for using Kafka as a message passing bus between services rather than an ordered log of events.
    Downloads: 5 This Week
    Last Update:
    See Project
  • 13
    Amazon EC2 Instance Selector

    Amazon EC2 Instance Selector

    A CLI tool and go library which recommends instance types

    A CLI tool and go library which recommends instance types based on resource criteria like vcpus and memory. There are over 270 different instance types available on EC2 which can make the process of selecting appropriate instance types difficult. Instance Selector helps you select compatible instance types for your application to run on. The command-line interface can be passed resource criteria like vcpus, memory, network performance, and much more and then return the available, matching instance types. If you are using spot instances to save on costs, it is a best practice to use multiple instances types within your auto-scaling group (ASG) to ensure your application doesn't experience downtime due to one instance type being interrupted. Instance Selector will help to find a set of instance types that your application can run on.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 14
    Keybase client

    Keybase client

    Keybase Go library, client, service, OS X, iOS, Android, Electron

    Keybase is secure messaging and file-sharing. We use public key cryptography to ensure your messages stay private. Even we can’t read your chats. Keybase works for families, roommates, clubs, and groups of friends, too. Keybase connects to public identities, too. You can connect with communities from Twitter, Reddit, and elsewhere. Don’t live dangerously when it comes to documents. Keybase can store your group’s photos, videos, and documents with end-to-end encryption. You can set a timer on your most sensitive messages. This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 15
    gokv

    gokv

    Simple key-value store abstraction and implementations for Go

    Simple key-value store abstraction and implementations for Go. Redis, Consul, etcd, bbolt, BadgerDB, LevelDB, Memcached, DynamoDB, S3, PostgreSQL, MongoDB, CockroachDB, and many more. There are detailed descriptions of the methods in the docs and in the code. You should read them if you plan to write your own gokv.Store implementation or if you create a Go package with a method that takes a gokv.Store as a parameter, so you know exactly what happens in the background.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 16
    lo

    lo

    A Lodash-style Go library based on Go 1.18+ Generics

    Samber/lo is a Lodash-style Go library based on Go 1.18+ Generics. This project started as an experiment with the new generics implementation. It may look like Lodash in some aspects. I used to code with the fantastic "go-funk" package, but "go-funk" uses reflection and therefore is not typesafe. As expected, benchmarks demonstrate that generics are much faster than implementations based on the "reflect" package. Benchmarks also show similar performance gains compared to pure for loops. In the future, 5 to 10 helpers will overlap with those coming into the Go standard library (under package names slices and maps). I feel this library is legitimate and offers many more valuable abstractions.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 17
    migrate

    migrate

    Database migrations, CLI and Golang library

    Database migrations are written in Go. Use as CLI or import as a library. Migrate reads migrations from sources and applies them in correct order to a database. Drivers are "dumb", migrate glues everything together and makes sure the logic is bulletproof. (Keeps the drivers lightweight, too.) Database drivers don't assume things or try to correct user input. When in doubt, fail. Package migrate reads migrations from sources and runs them against databases. Sources are defined by the `source.Driver` and databases by the `database.Driver` interface. The driver interfaces are kept "dump", all migration logic is kept in this package.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 18
    unioffice

    unioffice

    Pure go library for creating and processing Office Word documents

    unioffice is a library for creation of Office Open XML documents (.docx, .xlsx and .pptx). Its goal is to be the most compatible and highest-performance Go library for the creation and editing of docx/xlsx/pptx files. Every release of our libraries is automatically tested against known vulnerabilities and do not pass unless everything is remediated. All changes are carefully reviewed by our team. Our SDKs libraries are flexible and developed to solve common problems. We provide high-level interfaces for common problem-solving and lower-level interfaces for less generic tasks. UniPDF and UniOffice are all in Pure go meaning you can build your applications easily, cross-compile across platforms and enjoy all the advantages of Golang. Our creator package enables you to generate flexible report in lightning speed. Complex reports can be generated in milliseconds, enabling you to create reports at the click of a button.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 19
    unipdf

    unipdf

    Golang PDF library for creating and processing PDF files (pure go)

    UniDoc UniPDF is a PDF library for Go (golang) with capabilities for creating and reading, processing PDF files. The library is written and supported by FoxyUtils.com, where the library is used to power many of its services. Every release of our libraries is automatically tested against known vulnerabilities and do not pass unless everything is remediated. All changes are carefully reviewed by our team.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 20
    AWS Lambda for Go

    AWS Lambda for Go

    Libraries, samples and tools to help Go developers develop AWS Lambda

    Libraries, samples and tools to help Go developers develop AWS Lambda functions. Libraries, samples, and tools to help Go developers develop AWS Lambda functions. Preparing a binary to deploy to AWS Lambda requires that it is compiled for Linux and placed into a .zip file. Windows developers may have trouble producing a zip file that marks the binary as executable on Linux. To create a .zip that will work on AWS Lambda, the build-lambda-zip tool may be helpful.
    Downloads: 3 This Week
    Last Update:
    See Project
  • 21
    Certificate Transparency Go

    Certificate Transparency Go

    Auditing for TLS certificates (Go code)

    certificate-transparency-go is a Go codebase for building and interacting with Certificate Transparency (CT) systems, from low-level parsing to full log operation. It includes forked ASN.1 and X.509 packages tailored to accept and analyze real-world certificates, including pre-certificates that stricter libraries would reject, supporting CT’s role as an ecosystem observatory. A TLS parsing library, CT data types, and multiple client libraries enable access to CT logs over HTTP and DNS, along with scanners for traversing entire logs. The repository also provides command-line tools for verifying signed certificate timestamps, inspecting certificates and CRLs, and querying logs. For operators, a “CT personality” integrates with Trillian so you can run a CT log backed by a verifiable transparency log. The project is structured for contributors, with generators, mocks, linting, and presubmit tooling to keep changes consistent and reliable.
    Downloads: 3 This Week
    Last Update:
    See Project
  • 22
    Cobra

    Cobra

    A Commander for modern Go CLI interactions

    Cobra is a library for creating powerful modern CLI applications, and at the same time a program to generate applications and command files. It provides a simple interface for creating powerful CLI interfaces, and will also generate application scaffolding so you can quickly develop your Cobra-based application. This scaffolding includes easy subcommand-based CLIs, fully POSIX-compliant flags, global, local and cascading flags, among many others. The structure of Cobra is based on commands, flags and arguments. The commands represent actions, the central point of the application; flags modify the behavior of commands; while arguments are things. With these easy-to-use concepts, users will natively understand how to use the application.
    Downloads: 3 This Week
    Last Update:
    See Project
  • 23
    Coraza

    Coraza

    OWASP Coraza WAF is a golang modsecurity compatible firewall library

    Coraza is an open-source, enterprise-grade, high-performance Web Application Firewall (WAF) ready to protect your beloved applications. It is written in Go, supports ModSecurity SecLang rulesets and is 100% compatible with the OWASP Core Rule Set. Coraza is a drop-in alternative to replace the soon-to-be abandoned Trustwave ModSecurity Engine and supports industry-standard SecLang rule sets. Coraza runs the OWASP Core Rule Set (CRS) to protect your web applications from a wide range of attacks, including the OWASP Top Ten, with a minimum of false alerts. CRS protects from many common attack categories including: SQL Injection (SQLi), Cross Site Scripting (XSS), PHP & Java Code Injection, HTTPoxy, Shellshock, Scripting/Scanner/Bot Detection & Metadata & Error Leakages. Coraza is a library at its core, with many integrations to deploy on-premise Web Application Firewall instances.
    Downloads: 3 This Week
    Last Update:
    See Project
  • 24
    Distribution

    Distribution

    The Docker toolset to pack, ship, store, and deliver content

    Distribution is a repository that contains the Open Source Docker Registry implementation, which is for the storage and distribution of Docker and OCI images using the OCI Distribution Specification. The goal of this project is to provide a simple, secure yet professional-grade and scalable content distribution system that lets users store, package, manage and exchange content in a reliable and efficient way. It also allows users to hack or roll their own content atop healthy open source components and implement their own solutions. The repository has three main components: the registry, libraries for interacting with distribution components, and the documentation related to the registry.
    Downloads: 3 This Week
    Last Update:
    See Project
  • 25
    Go canvas

    Go canvas

    Canvas is a Go drawing library based on OpenGL

    Canvas is a high-performance 2D rendering library for C++ that mimics the HTML5 Canvas API. It is built using OpenGL for hardware acceleration and offers a simple, familiar interface for developers looking to draw shapes, images, and text in desktop applications or games. Canvas focuses on ease of use, speed, and flexibility, making it suitable for GUI overlays, visualizations, and real-time 2D rendering tasks. Its API is intentionally similar to JavaScript’s Canvas API, lowering the barrier for web developers transitioning into C++ graphics work.
    Downloads: 3 This Week
    Last Update:
    See Project
  • Previous
  • You're on page 1
  • 2
  • 3
  • 4
  • 5
  • Next