Deno SQLite3

Tags Doc Checks License Sponsor

The fastest and correct module for SQLite3 in Deno.


import { Database } from "";

const db = new Database("test.db");

const [version] = db.prepare("select sqlite_version()").value<[string]>()!;



Since this library depends on the unstable FFI API, you must pass --allow-env, --allow-ffi and --unstable flags. Network and FS permissions are also needed on macOS and Linux to download and cache prebuilt library. It's recommended to just use --allow-all/-A flag since FFI basically gives full access.

deno run -A --unstable <file>



Benchmark based on just-js/02-sqlite

See bench for benchmarks source.


See for documentation.

Check out the complete API reference here.

Native Library

It will download and cache a prebuilt shared library from GitHub releases. For which it will also need net and read/write permission.

If you want to use custom library, then you can set the DENO_SQLITE_PATH environment variable, containing full path to the SQLite3 shared library.


Code is formatted using deno fmt and linted using deno lint. Please make sure to run these commands before committing.

On Linux and macOS, you need to build sqlite3 from source. Make sure that you have the submodule (git submodule update --init --recursive).

mkdir -p build/
# unix
# windows
deno task build-sqlite-win

When running tests and benchmarks, you need to use the DENO_SQLITE_PATH env variable otherwise it won't use to local compiled shared library.

DENO_SQLITE_PATH=build/libsqlite3.dylib deno task bench


Apache-2.0. Check LICENSE for details.

Copyright © 2023 DjDeveloperr