DuckDB Extensions
31 specialized extensions, organized by what you're trying to do.
Browse by intent
What are you trying to do?
Pick an intent below. Each section groups the extensions that solve that class of problem, with finer-grained sub-buckets where useful.
Connect to external systems
Read from, write to, or stand alongside another system.
Databases
ADBC Scanner
adbc_scanner Connect DuckDB to any database with an Arrow Database Connectivity (ADBC) driver โ SQLite, PostgreSQL, Snowflake, Flight SQL, and more โ using Arrow's columnar wire format end to end. Read, write, and inspect remote schemas without round-tripping through CSV/Parquet.
Airport
airport ATTACH an Arrow Flight server as a DuckDB catalog and query it in SQL. Best fit: custom Flight services you build in Python / Go / Java, plus Flight-native systems like Dremio and InfluxDB 3. Capabilities (pushdown, mutation, schema discovery) follow what your Flight server implements.
Redis
redis Read and write Redis from DuckDB SQL. Strings, hashes, and lists; cursor-paginated SCAN/HSCAN; and a single-query bulk-dump pattern that drains an entire Redis keyspace into a DuckDB table. Best fit: operational queries, hot-cold data joins, and one-off migrations โ not application-grade Redis access.
Messaging & streams
Tributary
tributary Read Apache Kafka topics from DuckDB SQL. Scan a topic into a query, snapshot it into a table, JOIN against local data, or inspect cluster metadata โ all without a separate Kafka client. Authentication, partitions, and offsets are configured through the underlying librdkafka named-parameter surface.
Radio
radio Two-way real-time messaging from DuckDB SQL. Subscribe to WebSocket and Redis Pub/Sub channels, query received events as ordinary tables, and queue outgoing messages with status tracking. Best fit: in-process pipelines, dashboards, and ad-hoc inspection โ buffers are in-memory, scoped to the DuckDB process.
HTTP & shell
HTTP Client
http_client Make HTTP GET and POST requests directly from DuckDB SQL. Returns a JSON object with status, reason, and body you can extract inline. Best fit: ad-hoc API calls, low-volume per-row enrichment, and joining a SQL query with a small REST endpoint. Synchronous and buffered โ not a streaming or high-throughput HTTP client.
HTTP Server
httpserver Expose a running DuckDB process over HTTP so clients can POST a SQL query and read JSON results. Single shared key or HTTP Basic auth, an embedded query UI, and zero-config startup. Best fit: small internal API surfaces and ad-hoc dashboards in front of a read-only DuckDB โ not a hardened multi-tenant gateway.
Shellfs
shellfs Use Unix pipes as DuckDB filenames. Append | to a path and DuckDB executes it as a shell pipeline and reads from stdout; prefix with | to write to stdin. Lets read_csv / read_json / COPY chain into curl, awk, custom scripts โ anything that speaks stdio.
Work with JSON
Query, reshape, and validate JSON columns.
JSONata
jsonata Evaluate JSONata expressions against JSON values from inside DuckDB SQL. Best fit: reshaping nested JSON into a new shape, predicate filters on arrays, and concise traversals that get verbose in chains of json_extract. Implemented as a single scalar function โ no ATTACH interface, no secrets.
JSON Schema
json_schema JSON Schema validation and default-value enrichment in SQL. Validate that JSON columns conform to a schema, lint the schema itself, generate JSON-Patch operations that fill in missing defaults, and apply those defaults in place. Targets JSON Schema draft-07.
Work with text & identifiers
Hash, match, transform strings, and mint stable IDs.
Hashing
Crypto
crypto Cryptographic hashing, HMAC, and secure random bytes inside DuckDB. Adds BLAKE3, BLAKE2b, SHA-3, the SHA-2 family, MD5, and SHA-1 alongside an order-deterministic aggregate hash for dataset checksums and tamper-evident audit trails.
Hashfuncs
hashfuncs Fast, deterministic, non-cryptographic hash functions โ xxHash, MurmurHash3, RapidHash. For partitioning, sharding, cache keys, and probabilistic-filter inputs; not for security.
Matching & casing
RapidFuzz
rapidfuzz Fuzzy string matching and edit-distance for DuckDB, powered by the RapidFuzz C++ library. Five ratio variants for record matching plus eight distance/similarity algorithms (Jaro, Jaro-Winkler, Hamming, Indel, Levenshtein/OSA, LCS, prefix/postfix) โ every one in distance, similarity, and normalized forms.
Inflector
inflector String case transformation and English inflection inside SQL. snake_case โ camelCase โ PascalCase โ kebab-case, plus pluralize / singularize / table-name / class-name / module-name helpers. Apply to single strings, structs, or whole result sets.
Make analytics approximate or fast
Sketches, probabilistic filters, distributions, and lookup indices.
Sketches
Apache DataSketches
datasketches Bring Apache DataSketches into DuckDB. Approximate distinct-counts (HLL, CPC, Theta), quantiles (KLL, TDigest, REQ, classic Quantiles), and frequent items โ every sketch serializes to a portable BLOB you can store in a column, ship between processes, and merge later without rescanning.
Bitfilters
bitfilters Probabilistic set-membership filters as DuckDB columns. Quotient, XOR (8/16-bit), Binary Fuse (8/16-bit), and DuckDB-style Bloom filters โ answer 'is X in this set?' in O(1) using a fraction of the memory of the source set, with tunable false-positive rates and zero false negatives.
Index or compress geospatial data
Pentagonal cell indexes, compact geometry, space-filling curves.
A5 Geospatial Index
a5 Encode lat/lng to a pentagonal cell ID and aggregate, join, or spatially filter by that ID. A5 is a pentagon-based discrete global grid system โ newer than Uber's H3 (hexagonal) and Google's S2 (square), with more uniform cell area across the globe. 31 resolution levels from continental scale down to sub-square-meter precision.
GeoSilo
geosilo Compact geometry storage for DuckDB. A first-class GEOSILO column type that delta-encodes coordinates as scaled integers and pairs with ZSTD for ~21% smaller geometry storage than DuckDB's GEOMETRY (and ~70% smaller raw blobs against WKB). Native ST_* overloads for bounding-box, area, length, and introspection skip the WKB decode entirely.
Lindel
lindel Linearize multi-dimensional numeric arrays via Hilbert and Morton (Z-order) space-filling curves. Use as ORDER BY when writing Parquet to enable row-group skipping on multi-column predicates โ the same Z-Order / Hilbert-Order optimization Databricks pioneered for Delta Lake.
Render or execute code from rows
Templates, scripting engines, URL-loaded macros.
Templates
MiniJinja
minijinja Render Jinja2-compatible templates from SQL using the embedded MiniJinja engine. Generate HTML, config files, notifications, and dynamic SQL โ full Jinja syntax (loops, filters, conditionals, autoescaping) with JSON context.
Tera
tera Render Tera templates from SQL โ Rust's Jinja2-style templating engine. Variable substitution, filters, loops, conditionals, autoescape, and template file inclusion driven by JSON context.
Scripting
QuickJS
quickjs Run JavaScript inside DuckDB SQL via the embedded QuickJS-NG engine. Modern ES2020 syntax, scalar and table-valued forms, parameter passthrough โ for the cases where SQL doesn't have the right primitive and Python is too heavy.
Rhai (evalexpr_rhai)
evalexpr_rhai Run Rhai scripts inside DuckDB SQL. Rhai is a small, sandboxed, Rust-native scripting language with dynamic typing โ best when SQL alone can't express the logic but a full UDF would be overkill. Constant scripts compile once and cache; per-row context goes in via a JSON object.
Operate your DuckDB process
Schedule queries; capture and forward events.
Cronjob
cronjob Schedule SQL queries to run on a cron expression โ but only while the DuckDB process is alive. Six-field expressions with second-level resolution, list/inspect/cancel from SQL. Best fit: periodic refreshes, recurring exports, scheduled webhook alerts, and maintenance tasks inside a long-running DuckDB process.
Events
events Hook into DuckDB's internal events โ query begin/end, transactions, connections โ and ship them as JSON to any external program via stdin. Audit logging, error alerting, observability integration, and SIEM feeds, all configured with PRAGMAs.
SQL ergonomics
Make the CLI nicer, make output prettier.
Textplot
textplot ASCII and Unicode plots inline in DuckDB query results โ bars, sparklines, and density plots that fit in a single VARCHAR column. Useful for eyeballing distributions and trends in the DuckDB CLI without leaving the terminal.
Fuzzycomplete
fuzzycomplete Better SQL autocomplete for the DuckDB CLI. Replaces the built-in edit-distance autocompleter with VS Code's fuzzy-matching algorithm โ substring matches, camel-case awareness, and cross-database / cross-schema table-name completion.
Getting Started
Easy Installation
Install any Query.Farm extension in seconds with DuckDB's built-in extension system.
Install from the DuckDB Community repository
-- Install an extension
INSTALL extension_name FROM community;
-- Load the extension
LOAD extension_name;
-- Start using it!
SELECT * FROM your_function(); All extensions are signed and verified. View full documentation and examples on each extension's page.
Need a Custom Extension?
Our team can build custom DuckDB extensions tailored to your specific needs.