duckdb is a free, open source marketing & customer engagement project written in C++ and released under MIT. It has 41,440 GitHub stars, 3,798 forks and 858 open issues, and was last pushed 6 hours ago. On this registry it ranks #1 of 50 tracked projects in Marketing & Customer Engagement, with 5 head-to-head comparisons available. It gained 160 stars over the last 3 tracked days.

What is duckdb?

What it is

DuckDB is an analytical, in-process SQL database management system written in C++ and released under the MIT license. It runs inside the application process rather than as a separate server, and it is distributed as a standalone command-line application as well as through clients for Python, R, Java, and WebAssembly. The project lives in the analytical SQL ecosystem, where the topics listed for it are analytics, database, embedded-database, OLAP, and SQL. It has been developed for about eight years, with the last push recorded on 15 September 2026.

The concrete problem DuckDB solves is analytical query processing on data that already sits in files or in the host process, without a server to install, configure, and administer. Files can be queried directly: referencing myfile.csv or myfile.parquet in the FROM clause of a statement is enough to read them. That makes it usable for local analysis, embedded analytics, and pipelines where a separate database deployment would add operational weight. The SQL dialect goes past basic SQL, covering arbitrary and nested correlated subqueries, window functions, collations, and complex types such as arrays, structs, and maps, plus extensions intended to make SQL friendlier to write.

Key capabilities

  • Analytical (OLAP) query engine designed to be fast, reliable, portable, and easy to use.
  • Rich SQL dialect supporting arbitrary and nested correlated subqueries, window functions, and collations.
  • Complex data types, including arrays, structs, and maps.
  • Direct import of CSV and Parquet files by naming the file in the FROM clause, with no separate load step required for the simple case.
  • Standalone CLI client for interactive use, plus language clients for Python, R, Java, and WebAssembly.
  • Deep integration with pandas for Python users and a dplyr API (duckplyr) for R users.
  • Extension mechanism, including extensions that simplify SQL writing.

Who uses it and how

  • Analysts and engineers who query CSV or Parquet files in place, using the CLI or a language client rather than a server-backed warehouse.
  • Python users who work on pandas data frames and want SQL semantics over them through the documented SQL-on-pandas integration.
  • R users who work with dplyr and want to keep that interface while querying through the duckplyr API.
  • Application developers who embed the
project readme (upstream, from github) — read inline

Github Actions Badge discord Latest Release

DuckDB

DuckDB is a high-performance analytical database system. It is designed to be fast, reliable, portable, and easy to use. DuckDB provides a rich SQL dialect with support far beyond basic SQL. DuckDB supports arbitrary and nested correlated subqueries, window functions, collations, complex types (arrays, structs, maps), and several extensions designed to make SQL easier to use.

DuckDB is available as a standalone CLI application and has clients for Python, R, Java, Wasm, etc., with deep integrations with packages such as pandas and dplyr.

For more information on using DuckDB, please refer to the DuckDB documentation.

Installation

If you want to install DuckDB, please see our installation page for instructions.

Data Import

For CSV files and Parquet files, data import is as simple as referencing the file in the FROM clause:

SELECT * FROM 'myfile.csv';
SELECT * FROM 'myfile.parquet';

Refer to our Data Import section for more information.

SQL Reference

The documentation contains a SQL introduction and reference.

Development

For development, DuckDB requires CMake, Python 3 and a C++17 compliant compiler. In the root directory, run make to compile the sources. For development, use make debug to build a non-optimized debug version. You should run make unit and make allunit to verify that your version works properly after making changes. To test performance, you can run BUILD_BENCHMARK=1 BUILD_TPCH=1 make and then perform several standard benchmarks from the root directory by executing ./build/release/benchmark/benchmark_runner. The details of benchmarks are in our Benchmark Guide.

Please also refer to our Build Guide and Contribution Guide.

Support

See the Support Options page and the dedicated endoflife.date page.

Frequently asked questions

Is duckdb free to use?

duckdb is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does duckdb do?

DuckDB is an analytical in-process SQL database management system

What is duckdb written in?

duckdb is primarily written in C++. Its source is publicly available at https://github.com/duckdb/duckdb, and it has 41,440 GitHub stars.