# sqlean: the standard library SQLite's authors left as an exercise

> sqlean is Anton Zhiyanov's MIT-licensed collection of curated SQLite extension modules, gathering the scattered world of SQLite extensions into twelve documented, tested domain modules from crypto and regexp to UUID and CSV virtual tables, packaged for Linux, Windows and macOS. The project is explicitly a one man effort in maintenance mode, accepting bug fixes only, with no new features planned.

**nalgeon/sqlean** — The ultimate set of SQLite extensions

- Repository: https://github.com/nalgeon/sqlean
- Stars: 4,372 · Forks: 156
- Language: C
- License: MIT
- Published: 2026-09-23 · Updated: 2026-09-23 · Language: en
- Canonical page: https://hysenlabs.com/projects/nalgeon-sqlean

## A standard library, curated rather than piled

The premise is stated as a database philosophy disagreement, SQLite has few functions compared to other database management systems, and SQLite's authors see this as a feature because an extension mechanism exists. The problem is the ecosystem that mechanism produced, extensions that are incomplete, inconsistent and scattered across the internet, and sqlean's answer is curation, bringing them together, neatly packaged into domain modules, documented, tested, and built for three operating systems. The stated goal is not a giant pile of everything, that would not be very useful, but a well thought set of domain modules with a convenient API, a kind of standard library for SQLite, achieved by splitting extensions that are too broad, merging ones too narrow, refactoring, adding missing features, testing and documenting.

## Twelve modules from crypto to CSV

The main set reads as the extended standard library it claims to be, crypto for hashing, encoding and decoding data, define for user defined functions and dynamic SQL, fileio for reading and writing files, fuzzy for fuzzy string matching and phonetics, ipaddr for IP address manipulation, math, regexp for regular expressions, stats for mathematical statistics, text for string functions and Unicode, time for high precision date and time, uuid, and vsv for CSV files as virtual tables. Each module has its own documentation file in the docs directory, and for convenience the single file sqlean bundle contains all extensions from the main set, so one load brings everything for users who do not want to pick modules individually.

## No external dependencies, on purpose

The scope rule is strict and stated once, the project is limited to extensions without external dependencies, other than the C standard library and SQLite itself. The consequence is acknowledged directly, there are a lot of useful extensions that do not quite fit the scope for various reasons, so you won't find them here, an honest boundary rather than a pretense of completeness. The rule has engineering value beyond taste, modules build anywhere C builds, link into any SQLite embedding without dragging libraries along, and remain maintainable by a single person, which matters given the project's size. The Makefile's one external download for the crypto module, the xxhash single header, is vendored into the source tree rather than linked, keeping the rule intact in spirit.

## Five 64-bit builds

Distribution is precompiled binaries for every supported platform, five archives on the releases page, sqlean-win-x64 for Windows, sqlean-linux-x64 and sqlean-linux-arm64 for Linux on the two architectures, and sqlean-macos-x64 and sqlean-macos-arm64 for Intel and Apple silicon macOS. The requirement attached is simple, binaries are 64-bit and require a 64-bit SQLite version, a constraint worth checking before a mysterious load failure on an older embedded system. Building from source is a documented three step make sequence, prepare-dist, download-sqlite and download-external, then one of compile-linux, compile-windows or compile-macos, with compiled extensions landing in the dist folder, and iOS and Android build instructions live in a dedicated issue.

## .load and a median

The documented first contact is two lines in the SQLite command line interface:

```
sqlite> .load ./sqlean
sqlite> select median(value) from generate_series(1, 99);
```

The example is well chosen, median and generate_series are both things SQLite's core does not provide, and after one load both simply work, which is the whole value proposition compressed into a query. For environments beyond the CLI, an installation guide covers usage with IDEs, Python, JavaScript and more, since loading an extension differs per host language while the SQL above stays identical.

## Sanitizers and a pinned SQLite for tests

The Makefile reveals the testing discipline behind the documented claim. SQL tests run against a pinned SQLite 3.36 amalgamation downloaded on demand, so the test environment is reproducible regardless of the system's SQLite, and a dedicated sanitized build compiles the C tests and extensions with AddressSanitizer and UndefinedBehaviorSanitizer flags, no omit frame pointer, and runs them through a locally built sqlite3 shell configured for leak detection and stack traces. Platform flags differ per target, full warnings and position independent code for Linux and macOS, the Windows build carrying only the shared flag, and the C test flags include Werror, warnings as errors, for the extension code itself. This is how a one person project stays trustworthy at C level.

## Maintenance mode, stated plainly

The support section is unusually candid, sqlean is mostly a one man project by Anton Zhiyanov, it is currently in maintenance mode, and no new features are planned, with contributing limited to bug fixes only. That is not abandonment, patch releases continue through 2026, 0.28.2 in March, 0.28.3 in June and 0.28.4 on 2026-08-14, with the last push 2026-09-06, and the copyright spans 2021 to 2025 with contributors and third party authors credited. For users, the framing is clarifying, this is a finished library to adopt, not a bet on a roadmap, and its stability is the feature maintenance mode protects.

## Conclusion

Use sqlean when SQLite's minimal function set blocks an otherwise straightforward query, hashing, regular expressions, fuzzy matching, statistics, or CSV access, since one bundle load brings a coherent, documented set rather than a scavenger hunt across scattered extensions. Look elsewhere for extensions with external dependencies, the project's scope rule excludes them by design. Before adopting, note the project's honest state, one maintainer, maintenance mode, bug fixes only, so treat it as a stable library rather than a growing one, verify your SQLite is 64-bit as the binaries require, and read the per module docs to see which functions each provides before writing SQL against them.

## FAQ

### What is sqlean?

sqlean is a MIT-licensed collection of curated SQLite extension modules, gathering scattered extensions into twelve documented and tested domain modules, crypto, define, fileio, fuzzy, ipaddr, math, regexp, stats, text, time, uuid and vsv, available as a single-file bundle or individually for Linux, Windows and macOS.

### How do you use sqlean?

In the SQLite command line, run .load ./sqlean for the bundle, then use the functions directly, for example select median(value) from generate_series(1, 99). An installation guide covers loading the extensions from IDEs, Python, JavaScript and other environments.

### Is sqlean still maintained?

It is in maintenance mode by its single maintainer, Anton Zhiyanov, accepting bug fixes only with no new features planned. Patch releases continue, with 0.28.4 released 2026-08-14 and the repository last pushed 2026-09-06.

## Sources

- [Issues](https://github.com/nalgeon/sqlean/issues)
- [License: MIT](https://github.com/nalgeon/sqlean/blob/main/LICENSE)
- [nalgeon/sqlean on GitHub](https://github.com/nalgeon/sqlean)
- [README](https://github.com/nalgeon/sqlean/blob/main/README.md)
- [Releases](https://github.com/nalgeon/sqlean/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/nalgeon-sqlean
