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.

  • Gen AI apps are built with MongoDB Atlas Icon
    Gen AI apps are built with MongoDB Atlas

    Build gen AI apps with an all-in-one modern database: MongoDB Atlas

    MongoDB Atlas provides built-in vector search and a flexible document model so developers can build, scale, and run gen AI apps without stitching together multiple databases. From LLM integration to semantic search, Atlas simplifies your AI architecture—and it’s free to get started.
    Start Free
  • 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
  • 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: 12 This Week
    Last Update:
    See Project
  • 2
    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: 8 This Week
    Last Update:
    See Project
  • 3
    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: 7 This Week
    Last Update:
    See Project
  • 4
    Ebiten

    Ebiten

    A dead simple 2D game library for Go

    Ebiten is an open source game library for the Go programming language. Ebiten's simple API allows you to quickly and easily develop 2D games that can be deployed across multiple platforms. In Ebiten, everything is an image: the screen, data from an image file, and even offscreen items are all represented as image objects. Most rendering operations consist of drawing one image on top of another. Ebiten games work on desktop (Windows, macOS, Linux, and FreeBSD), web browsers (through WebAssembly), and even on mobile (Android and iOS)! Plus, Ebiten is implemented in pure Go on Windows, so Windows developers do not need to install a C compiler. Nintendo Switch™ is also supported! While Ebiten's drawing API is very simple, Ebiten games run very fast with GPU power. Multiple images are integrated into a texture atlas internally, and drawing operations are automatically performed in batch when possible.
    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
    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: 6 This Week
    Last Update:
    See Project
  • 6
    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: 6 This Week
    Last Update:
    See Project
  • 7
    env

    env

    A simple and zero-dependencies library to parse environment variables

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

    lo

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

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

    Deliver secure remote access with OpenVPN.

    OpenVPN is here to bring simple, flexible, and cost-effective secure remote access to companies of all sizes, regardless of where their resources are located.
    Get started — no credit card required.
  • 10
    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: 4 This Week
    Last Update:
    See Project
  • 11
    Google Cloud Client Libraries for Go

    Google Cloud Client Libraries for Go

    Google Cloud Client Libraries for Go

    The Cloud Client Libraries are the recommended way to access Google Cloud APIs programmatically. The Cloud Client Libraries support accessing Google Cloud services in a way that significantly reduces the boilerplate code you have to write. The libraries provide high-level API abstractions so they're easier to understand. They embrace idioms of the language, work well with the standard library, and integrate better with your codebase. By default, each API will use Google Application Default Credentials for authorization credentials used in calling the API endpoints. This will allow your application to run in many environments without requiring explicit configuration.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 12
    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: 4 This Week
    Last Update:
    See Project
  • 13
    OpenID Connect SDK for Go

    OpenID Connect SDK for Go

    Easy to use OpenID Connect client and server library written for Go

    This project is an easy-to-use client (RP) and server (OP) implementation for the OIDC (OpenID Connect) standard written for Go. The RP is certified for the basic and config profile.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 14
    GXUI

    GXUI

    An experimental Go cross platform UI library

    GXUI is an experimental, cross-platform GUI toolkit for Go that explored what a modern, GPU-accelerated desktop UI could look like for the language. It provided a set of widgets, layout containers, and event models that ran on Windows, macOS, and Linux, targeting a single Go API surface. Rendering was driven by a graphics backend so that animations, text, and compositing could be smooth without relying on heavyweight native bindings. The library encouraged idiomatic Go patterns—composition and interfaces—while offering a retained-mode tree of views for common desktop interactions. Although the project is no longer actively developed, it remains a reference for how to bridge Go’s concurrency model with UI event loops and rendering pipelines. Developers still look to it for examples of input handling, focus management, and custom drawing in pure Go environments.
    Downloads: 3 This Week
    Last Update:
    See Project
  • 15
    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: 3 This Week
    Last Update:
    See Project
  • 16
    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
  • 17
    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: 3 This Week
    Last Update:
    See Project
  • 18
    ReadLine

    ReadLine

    Readline is a pure go(golang) implementation for GNU-Readline library

    A powerful readline library in Linux macOS Windows Solaris AIX. Readline is a pure go(golang) implementation for the GNU-Readline kind library.
    Downloads: 3 This Week
    Last Update:
    See Project
  • 19
    The Go Cloud Development Kit

    The Go Cloud Development Kit

    Library and tools for open cloud development in Go

    The Go Cloud Development Kit (Go CDK) allows Go application developers to seamlessly deploy cloud applications on any combination of cloud providers. It does this by providing stable, idiomatic interfaces for common uses like storage and databases. Think database/sql for cloud products. The project works well with a code generator called Wire. It creates human-readable code that only imports the cloud SDKs for services you use. This allows the Go CDK to grow to support any number of cloud services, without increasing compile times or binary sizes, and avoiding any side effects from init() functions. The Go CDK builds at the latest stable release of Go. Previous Go versions may compile but are not supported.
    Downloads: 3 This Week
    Last Update:
    See Project
  • 20
    bleve

    bleve

    A modern text indexing library for go

    Import one package, build an index with three lines of code, query for documents with another three lines. Bleve includes general-purpose analyzers as well as pre-built text analyzers for the following languages, Danish, Dutch, English, Finnish, French, German, Hungarian, Italian, Norwegian, Persian, Portuguese, Romanian, Russian, Sorani, Spanish, Swedish, Thai, and Turkish. Support for aggregating facet information across search results. Supported facet types include Terms Facet, Numeric Range Facet, and Date Range Facet. By indexing your data with bleve you gain the ability to compose query types such as Term, Phrase, Match, Match Phrase, Prefix, Conjunction, Disjunction, Boolean, Numeric and Date Ranges, as well as Query String. Industry standard tf-idf scoring with query time boosting. Includes support for highlighting matching text within document fragments.
    Downloads: 3 This Week
    Last Update:
    See Project
  • 21
    go-github

    go-github

    Go library for accessing the GitHub API

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