FREEDOM251

Freedom251 › Embedded Databases

bbolt

Free plan AndroidiPhoneLinuxMacSelf-hostedWindows

Visit bbolt Alternatives Pricing

bbolt's own site

What bbolt is

bbolt is a Go library and command-line utility for applications that need an embedded key-value database rather than a separate database server. The database lives in one file and provides a consistent snapshot. Data is arranged in buckets, which can contain nested buckets; bucket keys are ordered by bytes. bbolt supports serializable ACID transactions, with one read-write transaction at a time and multiple read-only transactions running concurrently. A read-only transaction can create a consistent hot backup without blocking other database activity. The database also exposes operation statistics for logging or sending to services such as statsd. The project identifies read-intensive workloads and range scans as suitable uses, while warning that random writes can be slow. A file’s exclusive write lock prevents multiple processes from writing to it, though read-only access allows multiple processes. The project documents gomobile bindings for iOS and Android, alongside Windows, macOS, and Linux support. It is free and open source under the MIT license; no paid support plan is listed.

Who it suits

It suits Go developers building applications that need an embedded key-value store, particularly for read-intensive workloads or range scans. It may not suit workloads with frequent random writes or multiple processes that need to write to the same database file.

What it does well

  • Free and open source under the MIT license
  • Supports nested buckets and byte-sorted keys
  • Read-only transactions can create hot backups
  • Exposes operation statistics for logging
  • Documents iOS and Android gomobile bindings

What to know first

  • Random writes can be slow
  • Only one read-write transaction at a time
  • Multiple processes cannot share the file for writing
  • Freed pages do not shrink the data file

Limits

bbolt permits one read-write transaction at a time, and its project warns that random writes can be slow. Database files keep freed pages for later reuse rather than shrinking when large amounts of data are deleted.

Plans

PlanBilled and limitsPrice
bboltOpen-source Go library and command-line utility · no paid plans listedFree

As github.com lists them, read 4 Oct 2026. The maker's own page has the final word.

Getting started

  1. Open the bbolt project repository.
  2. Install the library with go get go.etcd.io/bbolt@latest.
  3. Install the command-line utility with go install go.etcd.io/bbolt/cmd/bbolt@latest.
  4. Use the documented gomobile bindings if building database logic for iOS or Android.

Overview

bbolt is an embedded key-value database for Go applications that need local storage without a separate database server. It suits developers building read-heavy software around a single database file; its one-writer rule and slow random writes make write-heavy or multi-process workloads a poor fit.

Key features

Data lives in one disk file, organized into buckets that can be nested. Keys are stored in byte-sorted order, making range scans a natural fit. The file represents a consistent snapshot, which keeps the storage model straightforward for applications that can manage their own database access.

Transactions are serializable and ACID-compliant, but only one read-write transaction can run at a time. Multiple read-only transactions can run concurrently. That arrangement favors workloads with frequent reads and controlled writes; it can bottleneck applications that need parallel writers. A read-only transaction can also create a consistent hot backup without blocking other reads or writes.

bbolt exposes operation statistics for logging or sending to a service such as statsd. The project documents gomobile bindings for using database logic on iOS and Android. Go developers can install the library with go get go.etcd.io/bbolt@latest and its command-line utility with go install go.etcd.io/bbolt/cmd/bbolt@latest.

Pricing

bbolt — free. The open-source Go library and command-line utility are free, with no paid plans listed. There is no free trial because there is no paid tier to trial. The project identifies an MIT license, making cost a non-issue for teams choosing among database libraries; users seeking a paid support plan should look elsewhere.

Platforms

The project supports Windows, macOS, Linux, iOS, and Android. Mobile use is documented through gomobile bindings. bbolt is an embedded library rather than a database server, so platform support does not remove the constraint that multiple processes cannot share a database file for writing.

Who it's for

bbolt is best for Go developers who want a compact embedded store for read-intensive workloads, sorted-key range scans, and applications that benefit from a single-file snapshot. It is less suitable when multiple processes must write the same database, writes need to happen concurrently, or random writes dominate. Databases can exceed physical RAM if the memory map fits the process's virtual address space, but this can be problematic on 32-bit systems. Deleting substantial data does not shrink the file: freed pages remain available for reuse instead.

Pros and cons

  • Pros: Serializable ACID transactions and concurrent readers suit applications that need consistent reads without a server.
  • Pros: Hot backups can be written from a read-only transaction without interrupting other database activity.
  • Pros: Sorted bucket keys make range scans well matched to the storage model.
  • Cons: One read-write transaction at a time limits write concurrency and can constrain throughput.
  • Cons: The exclusive write lock prevents multiple processes from sharing a file for writing; random writes can also be slow.
  • Cons: Deleting data does not reclaim disk space, and large memory-mapped databases may pose problems on 32-bit systems.

Alternatives

For other embedded database options, browse Embedded Databases.

  • Chroma is worth considering for a freemium option with a free plan and an open-source codebase also used for Chroma Cloud.
  • LadybugDB is another free, MIT-licensed option, with source code and pre-compiled binaries.
  • RxDB may suit projects that need replication and realtime sync in its free core plan.
  • SQLite is a free embedded SQL engine with no separate server process, a better match when an SQL database model is needed.
  • EJDB2 is another free, MIT-licensed open-source database engine.
  • ObjectBox offers a free core database plan and a trial for its freemium product.
  • PouchDB is a free, open-source alternative.
  • Qdrant offers a free cloud tier for a single-node cluster with specified compute, memory, and disk allowances.

Verdict

Choose bbolt for a Go application that needs a free, embedded key-value store with consistent transactions, concurrent reads, and non-blocking hot backups. Its single-file design and sorted keys are compelling for read-heavy workloads, but the one-writer limit, process-level write lock, and slow random writes are strong reasons to choose another database when write concurrency is central.

Verdict

bbolt offers a single-file key-value database with transactions, concurrent reads, and hot backups. Consider the write-lock and random-write limits when deciding whether it fits your workload.

Questions

Is bbolt free?

Yes. The project is open source under the MIT license, and no paid plans are listed.

What kind of database is bbolt?

It is an embedded key-value store for applications that do not need a full database server. A database is stored in one file.

Which platforms does bbolt support?

The project lists Windows, macOS, Linux, iOS and Android. It documents gomobile bindings for iOS and Android.

How do Go developers install it?

The project README gives a go get command for the library and a go install command for the command-line utility.

Can multiple processes write to one database file?

No. The file uses an exclusive write lock. Read-only mode permits multiple processes to read it.

What workloads does bbolt suit?

The project describes read-intensive workloads and range scans as suitable, and warns that random writes can be slow.

Facts from bbolt's own pages

Access limitation
A database file uses an exclusive write lock and cannot be shared by multiple processes; read-only mode permits multiple processes to read it. · github.com, 4 Oct 2026
Backup
A read-only transaction can write a consistent hot backup without blocking other database reads and writes. · github.com, 4 Oct 2026
Data-file limitation
Deleting large amounts of data does not reclaim file space; freed pages remain in the file for later reuse. · github.com, 4 Oct 2026
Data organization
It organizes key/value pairs into buckets, supports nested buckets, and stores bucket keys in byte-sorted order. · github.com, 4 Oct 2026
Install
The README instructs Go developers to install the library with go get go.etcd.io/bbolt@latest and the CLI with go install go.etcd.io/bbolt/cmd/bbolt@latest. · github.com, 4 Oct 2026
Integrations
The README lists projects using Bolt, including Consul, Containerd, InfluxDB, Prometheus Annotation Server, and NATS Streaming. · github.com, 4 Oct 2026
License and support
The repository identifies an MIT license and directs users to its issues and discussions for project interaction; it does not list a paid support plan. · github.com, 4 Oct 2026
Mobile support
The project documents using gomobile bindings to run database logic on iOS and Android. · github.com, 4 Oct 2026
Monitoring
The database exposes operation statistics that can be logged or sent to a service such as statsd. · github.com, 4 Oct 2026
Purpose
bbolt is a maintained fork of Bolt, a pure Go embedded key/value store for applications that do not need a full database server. · github.com, 4 Oct 2026
Scale and memory
The project says databases can exceed physical RAM if the memory map fits the process virtual address space, and notes this may be problematic on 32-bit systems. · github.com, 4 Oct 2026
Storage
A database is stored as a single file on disk and represents a consistent snapshot of the data. · github.com, 4 Oct 2026
Transactions
bbolt supports serializable ACID transactions with one read-write transaction at a time and multiple concurrent read-only transactions. · github.com, 4 Oct 2026
Workload fit
The project describes bbolt as suitable for read-intensive workloads and range scans, while warning that random writes can be slow. · github.com, 4 Oct 2026

Where bbolt stands on Freedom251

Look at these too