DuckDB Extensions
Extensions add functionality to DuckDB: new file formats, new SQL functions, and integrations with other systems. Many are bundled with the standard distribution and can be installed and loaded on demand.
Listing Extensions
The catalog of all known extensions is itself a table:
SELECT extension_name, loaded, installed, description
FROM duckdb_extensions()
WHERE loaded OR installed;
Installing and Loading
INSTALL downloads an extension binary; LOAD makes it available in the current session. Core extensions such as json, icu, and httpfs usually auto-load when first used:
INSTALL json;
LOAD json;
SELECT * FROM json('{"a": 1, "b": [1, 2]}');
Popular Extensions
| Extension | Purpose |
|---|---|
| httpfs | Read/write remote data over HTTP, S3, GCS, Azure |
| icu | Time zones, collation, and locale-aware functions |
| spatial | GIS types and PostGIS-style geometry functions |
| postgres_scanner | Query live PostgreSQL tables without copying data |
| sqlite_scanner | Query .sqlite files as external tables |
| delta | Read and write Delta Lake tables |
| excel | Read and write .xlsx spreadsheets |
| fts | Full-text search indexes |
Community Extensions
A repository of community-built extensions is published by the DuckDB project. You can install them by name, and with the DuckDB CLI you can also build your own extension from source and load it locally.
Best Practices
- Pin DuckDB versions in production so extensions stay compatible.
- Prefer built-in file readers (Parquet, CSV) over extensions when they cover the format.
- Test INSTALL on an air-gapped host offline using pre-downloaded extension binaries.
Summary
Extensions extend DuckDB with new formats, functions, and integrations. List them with duckdb_extensions(), activate them with INSTALL and LOAD, and rely on auto-loading for the common ones. The extension model keeps the core binary small while covering almost every data source you would meet in a modern stack.