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
  • Get the most trusted enterprise browser Icon
    Get the most trusted enterprise browser

    Advanced built-in security helps IT prevent breaches before they happen

    Defend against security incidents with Chrome Enterprise. Create customizable controls, manage extensions and set proactive alerts to keep your data and employees protected without slowing down productivity.
    Download Chrome
  • 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: 11 This Week
    Last Update:
    See Project
  • 2
    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: 8 This Week
    Last Update:
    See Project
  • 3
    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: 7 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
  • Photo and Video Editing APIs and SDKs Icon
    Photo and Video Editing APIs and SDKs

    Trusted by 150 million+ creators and businesses globally

    Unlock Picsart's full editing suite by embedding our Editor SDK directly into your platform. Offer your users the power of a full design suite without leaving your site.
    Learn More
  • 5
    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: 7 This Week
    Last Update:
    See Project
  • 6
    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: 6 This Week
    Last Update:
    See Project
  • 7
    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: 6 This Week
    Last Update:
    See Project
  • 8
    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
  • 9
    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: 5 This Week
    Last Update:
    See Project
  • Build Securely on AWS with Proven Frameworks Icon
    Build Securely on AWS 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
  • 10
    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: 5 This Week
    Last Update:
    See Project
  • 11
    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: 4 This Week
    Last Update:
    See Project
  • 12
    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: 4 This Week
    Last Update:
    See Project
  • 13
    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: 4 This Week
    Last Update:
    See Project
  • 14
    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
  • 15
    Go Jsonnet

    Go Jsonnet

    This an implementation of Jsonnet in pure Go

    go-jsonnet is a pure Go implementation of the Jsonnet data templating language, which extends JSON with variables, functions, imports, and a standard library so you can generate complex configuration safely. Instead of hand-maintaining massive JSON files, you write concise, reusable templates that evaluate to JSON or YAML, with deterministic semantics and rich error messages. The repository ships both an embeddable VM for Go programs and a command-line interpreter, making it easy to integrate templating into build systems, CLIs, and services. Import paths and custom resolvers let you structure large configuration trees across directories or remote sources, while top-level arguments and external variables parameterize builds per environment. Native functions can be registered from Go to expose domain-specific helpers without forking the language. Tooling such as a formatter and linter-friendly errors encourages clean, consistent templates that scale across teams.
    Downloads: 3 This Week
    Last Update:
    See Project
  • 16
    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
  • 17
    Gonum

    Gonum

    Set of numeric libraries for the Go programming language

    Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more. Gonum is a set of packages designed to make writing numerical and scientific algorithms productive, performant, and scalable. Gonum contains libraries for matrices and linear algebra; statistics, probability distributions, and sampling; tools for function differentiation, integration, and optimization; network creation and analysis; and more. We encourage you to get started with Go and Gonum if you are tired of sluggish performance, and fighting C and vectorization, and also if you are struggling with managing programs as they grow larger. Get Gonum if you want code to be fully transparent, and want the ability to read the source code you use. It is useful if you’d like a compiler to catch mistakes early, but hate fighting linker and unintelligible compile errors.
    Downloads: 3 This Week
    Last Update:
    See Project
  • 18
    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: 3 This Week
    Last Update:
    See Project
  • 19
    Martian Proxy

    Martian Proxy

    Martian is a library for building custom HTTP/S proxies

    Martian Proxy is a programmable HTTP proxy designed to be used for testing. Martian is a great tool to use if you want to verify that all (or some subset) of requests are secure. Mock external services at the network layer. Inject headers, modify cookies or perform other mutations of HTTP requests and responses. Verify that pingbacks happen when you think they should. Unwrap encrypted traffic (requires install of CA certificate in browser) By taking advantage of Go cross-compilation, Martian can be deployed anywhere that Go can target. Martian Proxy added support for Go modules since v3.0.0. If you use a Go version that does not support modules, this will break you. The latest version without Go modules support was tagged v2.1.0. For logging of requests and responses a logging modifier is available or HAR logs are available if the -har flag is used. Once Martian is running, you need to configure its behavior.
    Downloads: 3 This Week
    Last Update:
    See Project
  • 20
    Periph

    Periph

    Peripherals I/O in Go

    periph is a Go library that unifies hardware I/O on single-board computers and embedded Linux devices, exposing clean interfaces for GPIO, I²C, SPI, UART, PWM, and more. Its philosophy is “no daemon, no codegen”—you link a Go package and speak directly to the hardware via stable abstractions, keeping deployments simple and auditable. The project auto-detects host capabilities at runtime and selects the best driver backend, smoothing over kernel and board differences across Raspberry Pi, BeagleBone, and other platforms. A large set of device drivers (sensors, displays, LED controllers, storage, RTCs) give you batteries-included building blocks for prototypes and production systems. Command-line tools like periph-info help verify wiring, enumerate buses, and inspect capabilities before you ship. The API favors composability and testability, so you can mock buses and pins and keep logic unit-testable even when targeting real hardware.
    Downloads: 3 This Week
    Last Update:
    See Project
  • 21
    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: 3 This Week
    Last Update:
    See Project
  • 22
    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: 3 This Week
    Last Update:
    See Project
  • 23
    xorm

    xorm

    xorm is a simple and powerful Go language ORM library

    xorm is a simple and powerful Go language ORM library, through which database operations can be made very easy. This library is a customized and enhanced version based on the original xorm, which provides xorm with ibatis-like configuration files and dynamic SQL support, and supports ActiveRecord operations. This library is based on the customized and enhanced version of the original xorm. Since this customized version has third-party library dependencies (the original version of xorm does not have any third-party library dependencies), the original version of xorm must maintain The third-party library has zero dependencies, so I had to open this Github library separately. The relevant customization functions of this library are developed to solve simpler complex SQL calls and some special business requirements scenarios. The core functions of this customized version of ORM are consistent with the original version, and will be updated with the original version of xorm.
    Downloads: 3 This Week
    Last Update:
    See Project
  • 24
    BTree implementation for Go

    BTree implementation for Go

    BTree provides a simple, ordered, in-memory data structure for Go

    This package is a high-performance, in-memory B-tree for Go that implements an ordered set/map with efficient insert, delete, and range iteration. It’s parameterized by tree degree so callers can tune cache behavior and memory overhead for their workload. Instead of relying on Go’s built-in maps—which are hash-based and unordered—btree preserves sorted order and provides rich traversal APIs like ascending, descending, and range scans. The implementation favors minimal allocations and locality, making it attractive for indexing, query engines, and caches that need predictable iteration costs. A simple Item interface with a Less method defines ordering, keeping the API small and flexible for custom types. The library includes benchmarks and optional freelists so users can trade memory reuse for speed in hot paths.
    Downloads: 2 This Week
    Last Update:
    See Project
  • 25
    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: 2 This Week
    Last Update:
    See Project
  • Previous
  • You're on page 1
  • 2
  • 3
  • 4
  • Next
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.