Skip to content

libSQL

An open-source fork of SQLite that accepts outside contributions.

Stars
17.3k
Forks
554
Licence
MIT
Language
C
Last update
20 days ago
Type
Library

What it is

libSQL is a fork of SQLite, the small embedded database used in many apps and devices. It keeps SQLite compatibility and adds extras such as embedded replicas, a server mode for remote access, and some SQL extensions. It is maintained by Turso and is open to outside contributions, which the README contrasts with SQLite's closed contribution model.

  • Embed a local database in an application and optionally replicate it
  • Run libsql-server to offer SQLite-style remote access, similar to PostgreSQL or MySQL clients
  • Use the libsql shell to open and query a database from the command line
  • Use GUI tools such as TablePlus or Beekeeper Studio to browse libSQL databases

Great for

  • Developers who already use SQLite and want extra features like embedded replicas
  • Teams that want a SQLite-based database they can reach remotely through libsql-server
  • Projects that need a SQLite fork with open contribution rules
  • Developers working in Rust, JavaScript, Python, or Go who want an official driver

Not ideal for

  • People starting a new project: the README points to the separate Turso database project for new work, since libSQL is actively maintained but new features are going into Turso
  • Anyone needing concurrent writes, since the README says libSQL inherits SQLite's single-writer model
  • Non-developers looking for a ready-made app; this is a database engine and its tools
Step-by-step guide: how to use libSQLInstall, first run, examples, tips and FAQs

How to get it

  1. 1

    Clone and build from source

    You'll need: Rust toolchain (cargo)

    Build the SQLite-compatible C library and tools

    cargo xtask build
  2. 2

    Run it

    • Build the project with cargo xtask build
    • Change into the libsql-sqlite3 directory
    • Run ./libsql to open the SQL shell
    • Use .open FILENAME to open a persistent database file
  3. 3

    Get the most out of it

    • Use embedded replicas if you need a local copy synced from a remote database
    • Run libsql-server for remote SQLite-style access
    • Try the ALTER TABLE extension for changing column types and constraints, as described in the extensions doc
    • Use Docker if you prefer containers, following docs/DOCKER.md

Downloads

Strengths

  • Compatible with the SQLite C API and built on a widely used database
  • Open source under MIT with open contributions
  • Official drivers for several languages and a documented set of extensions

Trade-offs

  • Inherits SQLite's single-writer limitation according to the README
  • The README itself recommends Turso for new projects, so the long-term focus is unclear for new users
  • Some drivers are marked experimental or community-maintained

How it compares

ProjectStarsTypeLevelUpdatedBest for
libsql (this)17.3kLibraryintermediate20 days agoDevelopers who already use SQLite and want extra features like embedded replicas
turso25.1kLibraryintermediate4 days agoDevelopers who want an embedded SQLite-compatible database in a Rust, JavaScript, Python, Java, Go, or .NET project
duckdb42.7kLibrarybeginner4 days agoAnalysts who want to run SQL directly on CSV, Parquet, or JSON files
typeorm36.7kLibraryintermediate8 days agoNode.js or TypeScript developers building apps backed by a relational database
lowdb22.6kLibrarybeginner7 months agoNode.js developers building small tools or prototypes that need simple persistent storage
rqlite17.9kAppintermediate4 days agoDevelopers who want a replicated SQL database without running a large database server

Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.