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.

  • Build Agents and Models on One Platform Icon
    Build Agents and Models on One Platform

    Everything you need to build production-ready agents and models. Access 200+ Google and third-party AI models and tools.

    Gemini Enterprise Agent Platform is Google Cloud's comprehensive platform for developers to build, scale, govern, and optimize agents and models. Choose from Google's most advanced models and third-party models like Anthropic's Claude Model Family.
    Try It Free
  • $300 Free Credits to Build on Google Cloud Icon
    $300 Free Credits to Build on Google Cloud

    New customers can spin up VMs, build with AI, and query data at no cost.

    Put your $300 in credit toward real workloads, then keep building with free monthly usage for 20+ products. No commitment and no charge until you upgrade.
    Learn More
  • 1
    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: 91 This Week
    Last Update:
    See Project
  • 2
    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: 79 This Week
    Last Update:
    See Project
  • 3
    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: 72 This Week
    Last Update:
    See Project
  • 4
    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: 28 This Week
    Last Update:
    See Project
  • Go from Code to Production URL in Seconds Icon
    Go from Code to Production URL in Seconds

    Cloud Run deploys apps in any language instantly. Scales to zero. Pay only when code runs.

    Skip the Kubernetes configs. Cloud Run handles HTTPS, scaling, and infrastructure automatically. Two million requests free per month.
    Try it free
  • 5
    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: 26 This Week
    Last Update:
    See Project
  • 6
    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: 22 This Week
    Last Update:
    See Project
  • 7
    Traceway

    Traceway

    The only tool you need to know what is happening and how to fix it

    Traceway is an OpenTelemetry-native observability platform that brings logs, traces, metrics, exceptions, session replay, real user monitoring, and AI tracing into one open-source product. It is designed so teams can point an OTLP exporter at it without adding vendor-specific SDKs or extra collector glue. The platform is aimed at small and growing engineering teams that want practical visibility into what is happening inside their systems and how to fix issues faster. It can be self-hosted or used through a hosted cloud option, giving teams flexibility depending on their infrastructure preferences. Traceway’s value comes from combining multiple observability pillars around shared trace context instead of splitting debugging across many disconnected tools. It is a strong fit for teams that want an MIT-licensed, all-included monitoring stack without open-core restrictions.
    Downloads: 13 This Week
    Last Update:
    See Project
  • 8
    eBPF

    eBPF

    ebpf-go is a pure-Go library to read, modify and load eBPF programs

    Package ebpf is a toolkit for working with eBPF programs. eBPF programs are small snippets of code which are executed directly in a VM in the Linux kernel, which makes them very fast and flexible. Many Linux subsystems now accept eBPF programs. This makes it possible to implement highly application-specific logic inside the kernel, without having to modify the actual kernel itself. This package is designed for long-running processes which want to use eBPF to implement part of their application logic. It has no run-time dependencies outside of the library and the Linux kernel itself. eBPF code should be compiled ahead of time using clang, and shipped with your application as any other resource. Use the link subpackage to attach a loaded program to a hook in the kernel. Note that losing all references to Map and Program resources will cause their underlying file descriptors to be closed, potentially removing those objects from the kernel.
    Downloads: 13 This Week
    Last Update:
    See Project
  • 9
    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: 12 This Week
    Last Update:
    See Project
  • Custom VMs From 1 to 96 vCPUs With 99.95% Uptime Icon
    Custom VMs From 1 to 96 vCPUs With 99.95% Uptime

    General-purpose, compute-optimized, or GPU/TPU-accelerated. Built to your exact specs.

    Live migration and automatic failover keep workloads online through maintenance. One free e2-micro VM every month.
    Try Free
  • 10
    Go Meta Linter

    Go Meta Linter

    Runs a whole bunch of those linters and normalizes their output

    Go Meta Linter is a deprecated Go meta-linter that was created to run many Go static analysis tools at the same time. It normalizes their results into one consistent output format so editors, IDEs, and CI systems can read problems more easily. The tool helps developers catch issues such as unused code, unchecked errors, duplicated code, style problems, security concerns, and suspicious compiler-level behavior. It supports a broad collection of linters and lets users customize which checks run for each project. It can also be configured through a JSON file, which makes it easier to share linting rules across a team. Although the project is archived and users are directed toward golangci-lint, it remains a useful example of early Go lint aggregation.
    Downloads: 11 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: 11 This Week
    Last Update:
    See Project
  • 12
    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: 10 This Week
    Last Update:
    See Project
  • 13
    go-datastructures

    go-datastructures

    A collection of useful, performant, and threadsafe Go datastructures

    Go-datastructures is a collection of useful, performant, and threadsafe Go datastructures. Interval tree for collision in n-dimensional ranges. Implemented via a red-black augmented tree. Extra dimensions are handled in simultaneous inserts/queries to save space although this may result in suboptimal time complexity. Intersection determined using bit arrays. In a single dimension, inserts, deletes, and queries should be in O(log n) time. Bitarray used to detect existence without having to resort to hashing with hashmaps. Requires entities have a uint64 unique identifier. Two implementations exist, regular and sparse. Sparse saves a great deal of space but insertions are O(log n). There are some useful functions on the BitArray interface to detect intersection between two bitarrays. This package also includes bitmaps of length 32 and 64 that provide increased speed and O(1) for all operations by storing the bitmaps in unsigned integers rather than arrays.
    Downloads: 9 This Week
    Last Update:
    See Project
  • 14
    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: 9 This Week
    Last Update:
    See Project
  • 15
    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: 8 This Week
    Last Update:
    See Project
  • 16
    Go Container Registry

    Go Container Registry

    Go library and CLIs for working with container registries

    go-containerregistry is a Go library (with companion tools) for interacting with container images and registries using OCI/Docker formats. It provides primitives to read, write, mutate, sign, and copy images and indexes across registries without shelling out to Docker. High-level utilities like crane and gcrane offer convenient CLIs for everyday tasks—listing tags, copying images between registries, flattening, creating tarballs, and more. The library handles authentication via a pluggable keychain system that understands Docker config files, credential helpers, and environment credentials. It understands multiple on-disk layouts (tarball, OCI layout, remote) and lets you transform images in memory by adding or rebasing layers, adjusting config, and annotating manifests. Because everything is regular Go code, it’s straightforward to embed in CI/CD systems, policy engines, and bespoke supply-chain tooling.
    Downloads: 8 This Week
    Last Update:
    See Project
  • 17
    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: 8 This Week
    Last Update:
    See Project
  • 18
    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: 8 This Week
    Last Update:
    See Project
  • 19

    Negroni

    Idiomatic HTTP Middleware for Golang

    Negroni is a middleware-focused library for Go with an idiomatic approach. It is similar to Martini, but comes in a small, non-intrusive package. Negroni is not a framework. It is designed to work directly with net/http. It is also BYOR (Bring Your Own Router), and plays well with most http routers available in the Go community by fully supporting net/http. Negroni is currently translated in a number of different languages, and comes with some default middleware that can be used for most applications and makes getting started with some of Negroni’s features a lot easier.
    Downloads: 8 This Week
    Last Update:
    See Project
  • 20
    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: 8 This Week
    Last Update:
    See Project
  • 21
    WTF Dial

    WTF Dial

    WTF Dial is an example web application written in Go

    WTF Dial is an example Go web application built around a real-time team sentiment dashboard. The app lets team members report how bad or chaotic things currently feel on a shared percentage dial. Beyond the playful concept, the repository is mainly intended as a learning resource for building full Go applications. It demonstrates clean application structure, domain-focused types, multiple storage implementations, HTTP packages, command packages, and documented design decisions. The code is intentionally explained in detail so readers can study architecture rather than only run the app. It is especially useful for Go developers who want a concrete reference for project layout, interfaces, services, and production-style organization.
    Downloads: 8 This Week
    Last Update:
    See Project
  • 22
    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: 8 This Week
    Last Update:
    See Project
  • 23
    websocket for Go

    websocket for Go

    Minimal and idiomatic WebSocket library for Go

    websocket is a minimal and idiomatic WebSocket library for Go. Minimal and idiomatic API. First class context.Context support. Fully passes the WebSocket autobahn-testsuite. Single dependency. JSON and protobuf helpers in the wsjson and wspb subpackages. Zero alloc reads and writes. Concurrent writes. Close handshake. net.Conn wrapper. Ping pong API. RFC 7692 permessage-deflate compression. Compile to Wasm. Transparent message buffer reuse with wsjson and wspb subpackages. Gorilla writes directly to a net.Conn and so duplicates features of net/http.Client. Gorilla requires registering a pong callback before sending a Ping. Compare godoc of nhooyr.io/websocket with gorilla/websocket side by side. Will enable easy HTTP/2 support in the future.
    Downloads: 8 This Week
    Last Update:
    See Project
  • 24
    OpenAI Go

    OpenAI Go

    The official Go library for the OpenAI API

    OpenAI Go is the official Go client library for accessing the OpenAI API. It enables developers to integrate OpenAI’s models and features into Go applications with a clean and idiomatic interface. The library provides support for a wide range of API endpoints including chat completions, assistants, embeddings, image generation, audio processing, and batch jobs. It includes built-in tools for handling authentication, managing API requests, and parsing structured responses. The repository also offers examples to help developers quickly set up projects and test different API calls. Designed for reliability and ease of use, it is maintained to stay aligned with the evolving OpenAI API specifications.
    Downloads: 7 This Week
    Last Update:
    See Project
  • 25
    actionlint

    actionlint

    Static checker for GitHub Actions workflow files

    actionlint is a static checker for GitHub Actions workflow files. It analyzes workflow YAML to catch syntax mistakes, invalid keys, expression errors, incorrect action inputs, and workflow configuration problems before they break CI. The tool also performs strong type checks for GitHub Actions expressions, which helps detect nonexistent properties and type mismatches. It can validate reusable workflows, workflow calls, glob syntax, runner labels, cron syntax, and job dependencies. actionlint also integrates with ShellCheck and pyflakes to inspect scripts written inside run: blocks. It is especially useful for developers and teams that rely heavily on GitHub Actions and want faster, more reliable workflow feedback.
    Downloads: 7 This Week
    Last Update:
    See Project