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.

  • 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
  • Orchestrate Your AI Agents with Zenflow Icon
    Orchestrate Your AI Agents with Zenflow

    The multi-agent workflow engine for modern teams. Zenflow executes coding, testing, and verification with deep repo awareness

    Zenflow orchestrates AI agents like a real engineering system. With parallel execution, spec-driven workflows, and deep multi-repo understanding, agents plan, implement, test, and verify end-to-end. Upgrade to AI workflows that work the way your team does.
    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
    Casbin

    Casbin

    An authorization library that supports access control models

    An authorization library that supports access control models like ACL, RBAC, ABAC for Golang, Java, C/C++, Node.js, Javascript, PHP, Laravel, Python, .NET (C#), Delphi, Rust, Ruby, Swift (Objective-C), Lua (OpenResty), Dart (Flutter) and Elixir. In Casbin, an access control model is abstracted into a CONF file based on the PERM metamodel (Policy, Effect, Request, Matchers). So switching or upgrading the authorization mechanism for a project is just as simple as modifying a configuration. Besides memory and file, Casbin policy can be stored into lots of places. Currently, dozens of databases are supported, from MySQL, Postgres, Oracle to MongoDB, Redis, Cassandra, AWS S3. Check the full supported list at: adapters. Casbin is implemented in Golang, Java, PHP and Node.js. All implementations share the same API and behaviors. You can learn Casbin once and use it everywhere. In Casbin, the policy storage is implemented as an adapter(aka middleware for Casbin).
    Downloads: 11 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
    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: 7 This Week
    Last Update:
    See Project
  • Grafana: The open and composable observability platform Icon
    Grafana: The open and composable observability platform

    Faster answers, predictable costs, and no lock-in built by the team helping to make observability accessible to anyone.

    Grafana is the open source analytics & monitoring solution for every database.
    Learn More
  • 5
    M3U8

    M3U8

    Parser and generator of M3U8-playlists for Apple HLS. Library for Go

    This is the most complete open-source library for parsing and generating of M3U8 playlists used in HTTP Live Streaming (Apple HLS) for internet video translations. M3U8 is a simple text format and parsing library for it must be simple too. It does not offer ways to play HLS or handle playlists over HTTP.
    Downloads: 6 This Week
    Last Update:
    See Project
  • 6
    Go QueryString

    Go QueryString

    go-querystring is Go library for encoding structs into URL query

    go-querystring is a lightweight Go library developed by Google for encoding Go structs into URL query strings. It simplifies the process of constructing URLs with typed parameters, offering a clean, type-safe approach to building query strings programmatically. The library’s query package exposes a single Values() function that converts struct fields (tagged with url tags) into properly encoded query parameters. It is particularly useful for APIs or HTTP clients that represent query parameters as structs—such as in the go-github client library. Each struct field can be annotated with a url:"name" tag to specify the query key. The encoder supports standard Go data types (strings, numbers, booleans, slices, etc.) and handles formatting and escaping automatically.
    Downloads: 5 This Week
    Last Update:
    See Project
  • 7
    Resty

    Resty

    Simple HTTP and REST client library for Go

    Simple HTTP and REST client library for Go (inspired by Ruby rest-client). Features section describes in detail about Resty capabilities. Request URL Path Params (aka URI Params). Backoff Retry Mechanism with retry condition function reference. Resty client HTTP & REST Request and Response middleware. Request.SetContext supported. Authorization option of BasicAuth and Bearer token. Set request ContentLength value for all request or particular request. Custom Root Certificates and Client Certificates. Download/Save HTTP response directly into File, like curl -o flag. See SetOutputDirectory & SetOutput. Cookies for your request and CookieJar support. SRV Record based request instead of Host URL. Client settings like Timeout, RedirectPolicy, Proxy, TLSClientConfig, Transport, etc. Optionally allows GET request with payload, see SetAllowGetMethodPayload. Supports registering external JSON library into resty, see how to use. Exposes Response reader without reading response.
    Downloads: 5 This Week
    Last Update:
    See Project
  • 8
    go-toml

    go-toml

    Go library for the TOML file format

    Go library for the TOML format. This library supports TOML v1.0.0. Full API, examples, and implementation notes are available in the Go documentation. As much as possible, this library is designed to behave similarly as the standard library's encoding/json. While go-toml favors usability, it is written with performance in mind. Most operations should not be shockingly slow. Decoder can be set to "strict mode", which makes it error when some parts of the TOML document was not present in the target structure. This is a great way to check for typos. When most decoding errors occur, go-toml returns DecodeError), which contains a human readable contextualized version of the error. TOML supports native local date/times. It allows to represent a given date, time, or date-time without relation to a timezone or offset. To support this use-case, go-toml provides LocalDate, LocalTime, and LocalDateTime.
    Downloads: 5 This Week
    Last Update:
    See Project
  • 9
    AndroidLibXrayLite

    AndroidLibXrayLite

    Lightweight Android library that bundles the Xray networking core

    AndroidLibXrayLite is a lightweight Android library that bundles the Xray networking core as an embeddable component for apps. Its purpose is to provide a minimal, size-optimized build of the native core with a clear Java/Kotlin interface to start, stop, and configure network tunnels. By exposing the core as an AAR with per-ABI artifacts, it keeps application footprints small while supporting common CPU architectures. The library abstracts process management and log streaming so host apps can control lifecycles and capture diagnostics. It’s particularly useful for developers who want to integrate secure, rule-based proxying into their own Android apps without re-implementing the native glue. With a focus on stability and easy updates, it shortens the path from concept to a working in-app networking stack.
    Downloads: 4 This Week
    Last Update:
    See Project
  • Failed Payment Recovery for Subscription Businesses Icon
    Failed Payment Recovery for Subscription Businesses

    For subscription companies searching for a failed payment recovery solution to grow revenue, and retain customers.

    FlexPay’s innovative platform uses multiple technologies to achieve the highest number of retained customers, resulting in reduced involuntary churn, longer life span after recovery, and higher revenue. Leading brands like LegalZoom, Hooked on Phonics, and ClinicSense trust FlexPay to recover failed payments, reduce churn, and increase customer lifetime value.
    Learn More
  • 10
    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: 4 This Week
    Last Update:
    See Project
  • 11
    ipsw

    ipsw

    iOS/macOS Research Swiss Army Knife

    iOS/macOS Research Swiss Army Knife. ipsw was designed from the ground up to be easily installed and used to get you up and running quickly with an intuitive CLI. Simply the best tool to use when digging into Apple internals. Built-in a fast and memory-safe modern language with a huge community and mature standard lib.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 12
    jvm-mon

    jvm-mon

    Console-based JVM monitoring tool

    Console-based JVM monitoring - when you just want to SSH into a server and see what’s going on. jvm-top lets you monitor your JVM server applications from the terminal.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 13
    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
  • 14
    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
  • 15
    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: 3 This Week
    Last Update:
    See Project
  • 16
    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
  • 17
    Gval

    Gval

    Expression evaluation in golang

    gval is a versatile expression evaluation library for Go, enabling developers to parse and evaluate expressions dynamically. It supports a variety of expression types, including arithmetic, logical, and text-based, and allows for the composition of custom languages by replacing functions and operators. ​
    Downloads: 3 This Week
    Last Update:
    See Project
  • 18
    XLSX

    XLSX

    Go (golang) library for reading and writing XLSX files

    xlsx is a library to simplify reading and writing the XML format used by recent version of Microsoft Excel in Go programs. Version 3.0.0 introduces some more breaking changes in the API. All methods that can return an `xlsx.File` struct now accept zero, one or many `xlsx.FileOption` functions as their final arguments. These can be used to modify the behavior of the resultant struct, in particular they replace the `…WithRowLimit` variants of those methods with the result of calling `xlsx.RowLimit` and they add the ability to define a custom backing store for the spreadsheet data to be held in whilst processing. The full API docs can be viewed using go’s built in documentation tool.
    Downloads: 3 This Week
    Last Update:
    See Project
  • 19
    go-chart

    go-chart

    go chart is a basic charting library in go

    Package chart is a very simple golang native charting library that supports time-series and continuous line charts. Master should now be on the v3.x codebase, which overhauls the api significantly. Per usual, see examples for more information. Actual chart configurations and examples can be found in the ./examples/ directory. They are simple CLI programs that write to output.png (they are also updated with go generate. Everything on the chart.Chart object has defaults that can be overridden. Whenever a developer sets a property on the chart object, it is to be assumed that value will be used instead of the default. The best way to see the api in action is to look at the examples in the ./_examples/ directory. I wanted to make a charting library that used only native golang, that could be stood up on a server (i.e. it had built-in fonts). The goal with the API itself is to have the "zero value be useful", and to require the user to not code more than they absolutely needed.
    Downloads: 3 This Week
    Last Update:
    See Project
  • 20
    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: 3 This Week
    Last Update:
    See Project
  • 21
    spaGO

    spaGO

    Self-contained Machine Learning and Natural Language Processing lib

    A Machine Learning library written in pure Go designed to support relevant neural architectures in Natural Language Processing. Spago is self-contained, in that it uses its own lightweight computational graph both for training and inference, easy to understand from start to finish. The core module of Spago relies only on testify for unit testing. In other words, it has "zero dependencies", and we are committed to keeping it that way as much as possible. Spago uses a multi-module workspace to ensure that additional dependencies are downloaded only when specific features (e.g. persistent embeddings) are used. A good place to start is by looking at the implementation of built-in neural models, such as the LSTM. Except for a few linear algebra operations written in assembly for optimal performance (a bit of copying from Gonum), it's straightforward Go code, so you don't have to worry.
    Downloads: 3 This Week
    Last Update:
    See Project
  • 22
    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: 2 This Week
    Last Update:
    See Project
  • 23
    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: 2 This Week
    Last Update:
    See Project
  • 24
    Grabana

    Grabana

    User-friendly Go library for building Grafana dashboards

    Grabana provides a developer-friendly way of creating Grafana dashboards. Whether you prefer writing code or YAML, if you are looking for a way to version your dashboard configuration or automate the tedious and error-prone creation of dashboards, this library is meant for you.
    Downloads: 2 This Week
    Last Update:
    See Project
  • 25
    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: 2 This Week
    Last Update:
    See Project
  • Previous
  • You're on page 1
  • 2
  • 3
  • 4
  • 5
  • Next