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.

  • Save Up to 91% on Cloud Compute With Spot VMs Icon
    Save Up to 91% on Cloud Compute With Spot VMs

    Automatic sustained-use discounts. One free VM per month. No negotiation needed.

    Run batch jobs at 60-91% off with Spot VMs. Long-running workloads get automatic discounts with sustained use.
    Start Free
  • 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
  • 1
    Participle

    Participle

    A parser library for Go

    Participle is a parser library for Go that lets developers define parsers in an idiomatic Go style. It uses annotated Go structs to describe grammar rules and produce the parsed AST at the same time. This approach feels familiar to Go developers because it resembles the way struct tags are used for formats such as JSON. The library supports a rich grammar syntax with captures, recursive captures, grouping, alternatives, repetition, lookahead, and literal matching. It also supports custom capture behavior, union-like parser structures, and custom parsing hooks for more advanced grammars. Participle is useful when developers want readable parser definitions without switching to a separate grammar file or external parser generator.
    Downloads: 77 This Week
    Last Update:
    See Project
  • 2
    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: 32 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: 31 This Week
    Last Update:
    See Project
  • 4
    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: 24 This Week
    Last Update:
    See Project
  • PRTG Catches Network Issues Before They Cause Downtime Icon
    PRTG Catches Network Issues Before They Cause Downtime

    Threshold-based alerts flag problems early, so your team can act before users notice, not after.

    Reactive troubleshooting usually means hearing about a problem from frustrated users, not your monitoring tool. PRTG sets threshold-based alerts across devices, servers and applications, notifying your team by email, SMS or push the moment a metric crosses a set limit. That means catching a failing disk or overloaded server before it becomes an outage and getting time back from firefighting. Start a free trial and set your first alerts today.
    Download 30-Day Trial
  • 5
    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: 22 This Week
    Last Update:
    See Project
  • 6
    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: 20 This Week
    Last Update:
    See Project
  • 7
    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: 18 This Week
    Last Update:
    See Project
  • 8
    Hacks

    Hacks

    A collection of hacks and one-off scripts

    Hacks is a collection of experimental scripts, utilities, and one-off tools created to solve specific problems in security research, data processing, and automation. Rather than being a single cohesive application, it serves as a repository of practical command-line tools that can be used independently or combined into workflows. The scripts cover a wide range of tasks, including URL manipulation, parameter replacement, data extraction, and reconnaissance automation. Many of the tools in the repository are designed for efficiency and simplicity, enabling users to perform complex operations with minimal overhead. It is particularly popular among security researchers and developers who need quick, flexible solutions for niche problems.
    Downloads: 16 This Week
    Last Update:
    See Project
  • 9
    GoNB

    GoNB

    GoNB, a Go Notebook Kernel for Jupyter

    Go is a compiled language, but with very fast compilation, that allows one to use it in a REPL (Read-Eval-Print-Loop) fashion, by inserting a "Compile" step in the middle of the loop -- so it's a Read-Compile-Run-Print-Loop — while still feeling very interactive. GoNB leverages that compilation speed to implement a full-featured (at least it's getting there) Jupyter notebook kernel. As a side benefit it works with packages that use CGO — although it won't parse C code in the cells, so it can't be used as a C kernel. It already includes many goodies: cache between cell of results, contextual help and auto-complete (with gopls), compilation error context (by mousing over), bash command execution, images, html, etc. See the tutorial. It's been heavily used by the author (in developing GoMLX, a machine learning framework for Go), but should still be seen as experimental — if we hear success stories from others, we can change this.
    Downloads: 15 This Week
    Last Update:
    See Project
  • Fully Managed MySQL, PostgreSQL, and SQL Server Icon
    Fully Managed MySQL, PostgreSQL, and SQL Server

    Automatic backups, patching, replication, and failover. Focus on your app, not your database.

    Cloud SQL handles your database ops end to end, so you can focus on your app.
    Start Free
  • 10
    age

    age

    A simple, modern and secure encryption tool (and Go library)

    age is a security-oriented tool and library by Filo Sottile. age is a simple, modern, secure encryption utility (and Go library) that emphasizes minimal configuration and strong defaults. It provides small explicit keys, no complex options, and is designed for UNIX-style composability; you can pipe into it, integrate it into scripts, etc. It supports a clearly defined format and promotes interoperability across implementations (there are Rust, TypeScript, etc). The project is well-suited for personal data encryption, backup use-cases, scripting encryption workflows, and embedding encryption in tools. Because of its design philosophy, it avoids the bloat of many older encryption utilities while maintaining strong cryptographic hygiene. It’s especially useful for developers or system administrators who want to adopt encryption without learning a multitude of options.
    Downloads: 14 This Week
    Last Update:
    See Project
  • 11
    LangChainGo

    LangChainGo

    LangChain for Go, the easiest way to write LLM-based programs in Go

    LangChainGo is a Go-based implementation of the LangChain framework, designed to help developers build applications powered by large language models using the Go programming language. It provides a modular architecture that allows developers to combine components such as language models, chains, agents, memory systems, and vector stores into flexible workflows. The framework emphasizes composability, making it easy to create complex pipelines that integrate LLMs with external data sources, APIs, and tools. It supports multiple providers including OpenAI, Anthropic, Google, and local models, offering a unified interface for interacting with different backends. LangChainGo also includes support for embeddings, semantic search, and retrieval-augmented generation, enabling developers to build data-aware applications. With built-in abstractions for agents and tool usage, it enables the creation of systems that can reason, take actions, and interact with their environment.
    Downloads: 13 This Week
    Last Update:
    See Project
  • 12
    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: 12 This Week
    Last Update:
    See Project
  • 13
    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: 12 This Week
    Last Update:
    See Project
  • 14
    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: 12 This Week
    Last Update:
    See Project
  • 15
    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
  • 16
    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: 12 This Week
    Last Update:
    See Project
  • 17
    Globally Unique ID Generator

    Globally Unique ID Generator

    xid is a globally unique id generator thought for the web

    Globally Unique ID Generator is a Go library for generating globally unique identifiers that are compact, sortable, and safe to use directly in server-side code. It uses a MongoDB ObjectID-inspired structure with a timestamp, machine identifier, process identifier, and counter. The binary form is 12 bytes, while the string form uses lowercase base32hex encoding to create a 20-character URL-safe representation. This makes xid shorter than standard UUID strings while preserving chronological sortability. It does not require a central generator server or explicit machine and data-center configuration, which makes it convenient for distributed web services. It is well suited for database records, API resources, logs, events, and other systems that need practical unique IDs without the length and randomness tradeoffs of UUIDs.
    Downloads: 11 This Week
    Last Update:
    See Project
  • 18
    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
  • 19
    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: 10 This Week
    Last Update:
    See Project
  • 20
    Go CORS handler

    Go CORS handler

    Go net/http configurable handler to handle CORS requests

    Go CORS handler is a Go package that provides a configurable middleware handler for Cross-Origin Resource Sharing in net/http applications. It is designed to make CORS behavior explicit, predictable, and easy to insert into an existing HTTP handler chain. Developers can define which origins, methods, headers, and credentials are allowed, instead of scattering CORS logic across routes. The library also handles preflight requests, making it useful for APIs consumed by browsers, frontend apps, and third-party clients. Because it returns a standard net/http handler, it fits naturally into many Go web stacks and routers. It is a focused utility for teams that need reliable CORS handling without adopting a larger framework.
    Downloads: 10 This Week
    Last Update:
    See Project
  • 21
    Grafana Operator

    Grafana Operator

    An operator for Grafana that installs and manages Grafana instances

    The Grafana Operator is a Kubernetes operator built to help you manage your Grafana instances and its resources in and outside of Kubernetes. Whether you’re running one Grafana instance or many, the Grafana Operator simplifies the processes of installing, configuring, and maintaining Grafana and its resources. Additionally, it's perfect for those who prefer to manage resources using infrastructure as code or using GitOps workflows through tools like ArgoCD and Flux CD.
    Downloads: 10 This Week
    Last Update:
    See Project
  • 22
    Harmonica

    Harmonica

    A simple, physics-based animation library

    Harmonica is a Go animation library based on simple physics simulation. It provides tools for creating smooth, natural motion in 2D and 3D applications. The project includes spring animation behavior that can make interface movement feel more organic than fixed linear transitions. It also includes projectile-style simulation that is useful for particles, motion effects, and game-like interactions. Harmonica can be used with terminal interfaces, Bubble Tea applications, and graphical projects that need realistic movement. Its main value is giving Go developers a small, efficient way to add physically inspired animation without building the math from scratch.
    Downloads: 10 This Week
    Last Update:
    See Project
  • 23
    Neosync

    Neosync

    Open Source Data Security Platform for Developers to Monitor

    Neosync is a secure, open-source platform to generate, mask, and sync realistic test data across environments. It helps engineering teams create privacy-compliant datasets using synthetic data, transformations, and pseudonymization techniques. Designed with extensibility and data governance in mind, Neosync integrates with common databases and cloud services, enabling safe test environments for development and QA.
    Downloads: 10 This Week
    Last Update:
    See Project
  • 24
    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: 10 This Week
    Last Update:
    See Project
  • 25
    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: 10 This Week
    Last Update:
    See Project