- Installation

- Documentation

- Getting Started

- Connect

- Data Import and Export

- Overview

- Data Sources

- CSV Files

- JSON Files

- Overview

- Creating JSON

- Loading JSON

- Writing JSON

- JSON Type

- JSON Functions

- Format Settings

- Installing and Loading

- SQL to / from JSON

- Caveats

- Multiple Files

- Parquet Files

- Partitioning

- Appender

- INSERT Statements

- Lakehouse Formats

- Client APIs

- Overview

- ADBC

- C

- Overview

- Startup

- Configuration

- Query

- Data Chunks

- Vectors

- Values

- Types

- Prepared Statements

- Appender

- Table Functions

- Replacement Scans

- API Reference

- C++

- CLI

- Overview

- Arguments

- Dot Commands

- Output Formats

- Editing

- Friendly CLI

- Safe Mode

- Autocomplete

- Syntax Highlighting

- Known Issues

- Go

- Overview

- Connect

- Import Data

- Run Queries

- Handle Results

- Write User Defined Functions

- Profile and Monitor

- Troubleshoot

- Java (JDBC)

- Overview

- Connect

- Import Data

- Run Queries

- Handle Results

- Write User Defined Functions

- Profile and Monitor

- Deploy as Native Image

- Troubleshoot

- Node.js (Neo)

- ODBC

- Python

- Overview

- Data Ingestion

- Conversion between DuckDB and Python

- DB API

- Relational API

- Function API

- Types API

- Expression API

- Spark API

- API Reference

- Known Python Issues

- R

- Rust

- Overview

- Connect

- Import Data

- Run Queries

- Handle Results

- Write User Defined Functions

- Profile and Monitor

- Troubleshoot

- Wasm

- Tertiary Clients

- SQL

- Introduction

- Statements

- Overview

- ANALYZE

- ALTER TABLE

- ALTER VIEW

- ATTACH and DETACH

- CALL

- CHECKPOINT

- COMMENT ON

- COPY

- CREATE INDEX

- CREATE MACRO

- CREATE SCHEMA

- CREATE SECRET

- CREATE SEQUENCE

- CREATE TABLE

- CREATE VIEW

- CREATE TYPE

- DELETE

- DESCRIBE

- DROP

- EXPORT and IMPORT DATABASE

- INSERT

- LOAD / INSTALL

- MERGE INTO

- PIVOT

- Profiling

- PREPARE, EXECUTE, and DEALLOCATE

- SELECT

- SET / RESET

- SET VARIABLE

- SHOW and SHOW DATABASES

- SUMMARIZE

- Transaction Management

- UNPIVOT

- UPDATE

- USE

- VACUUM

- Query Syntax

- SELECT

- FROM and JOIN

- WHERE

- GROUP BY

- GROUPING SETS

- HAVING

- ORDER BY

- LIMIT and OFFSET

- SAMPLE

- Unnesting

- WITH

- WINDOW

- QUALIFY

- VALUES

- FILTER

- Set Operations

- Prepared Statements

- Data Types

- Overview

- Array

- Bitstring

- Blob

- Boolean

- Date

- Enum

- Geometry

- Interval

- List

- Literal Types

- Map

- NULL Values

- Numeric

- Struct

- Text

- Time

- Timestamp

- Time Zones

- Union

- Typecasting

- Variant

- Expressions

- Overview

- CASE Expression

- Casting

- Collations

- Comparisons

- IN Operator

- Logical Operators

- Star Expression

- Subqueries

- TRY

- Functions

- Overview

- Aggregate Functions

- Array Functions

- Bitstring Functions

- Blob Functions

- Date Format Functions

- Date Functions

- Date Part Functions

- Enum Functions

- Geometry Functions

- Interval Functions

- Lambda Functions

- List Functions

- Map Functions

- Nested Functions

- Numeric Functions

- Pattern Matching

- Regular Expressions

- Struct Functions

- Text Functions

- Time Functions

- Timestamp Functions

- Timestamp with Time Zone Functions

- Union Functions

- Utility Functions

- Window Functions

- Constraints

- Indexes

- Meta Queries

- DuckDB's SQL Dialect

- Overview

- Indexing

- Friendly SQL

- Keywords and Identifiers

- Order Preservation

- PostgreSQL Compatibility

- SQL Quirks

- PEG Parser

- Samples

- Configuration

- Extensions

- Overview

- Installing Extensions

- Advanced Installation Methods

- Distributing Extensions

- Versioning of Extensions

- Troubleshooting of Extensions

- Core Extensions

- Overview

- AutoComplete

- Avro

- AWS

- Azure

- Delta

- DuckLake

- Encodings

- Excel

- Full Text Search

- httpfs (HTTP and S3)

- Iceberg

- ICU

- inet

- jemalloc

- Lance

- MotherDuck

- MySQL

- ODBC

- Quack

- PostgreSQL

- Spatial

- SQLite

- TPC-DS

- TPC-H

- UI

- Unity Catalog

- Vortex

- VSS

- Quack Remote Protocol

- Guides

- Overview

- Data Viewers

- Database Integration

- File Formats

- Overview

- CSV Import

- CSV Export

- Directly Reading Files

- Directly Reading DuckDB Databases

- Excel Import

- Excel Export

- JSON Import

- JSON Export

- Parquet Import

- Parquet Export

- Querying Parquet Files

- File Access with the file: Protocol

- Meta Queries

- Describe Table

- EXPLAIN: Inspect Query Plans

- EXPLAIN ANALYZE: Profile Queries

- List Tables

- Summarize

- DuckDB Environment

- Network and Cloud Storage

- Overview

- HTTP Parquet Import

- HTTP CSV Import

- S3 Parquet Import

- S3 Parquet Export

- S3 Iceberg Import

- S3 Express One

- GCS Import

- Cloudflare R2 Import

- DuckDB over HTTPS / S3

- Fastly Object Storage Import

- SeaweedFS Import

- Tigris Import

- ODBC

- Performance

- Overview

- Environment

- Import

- Schema

- Indexing

- Join Operations

- File Formats

- How to Tune Workloads

- My Workload Is Slow

- Out-of-Memory Issues

- Benchmarks

- Working with Huge Databases

- Python

- Installation

- Executing SQL

- Jupyter Notebooks

- marimo Notebooks

- SQL on Pandas

- Import from Pandas

- Export to Pandas

- Import from Numpy

- Export to Numpy

- SQL on Arrow

- Import from Arrow

- Export to Arrow

- Relational API on Pandas

- Multiple Python Threads

- Integration with Ibis

- Integration with Polars

- Integration with PyTorch

- Using fsspec Filesystems

- SQL Editors

- SQL Features

- AsOf Join

- Full-Text Search

- Graph Queries

- query and query_table Functions

- Merge Statement for SCD Type 2

- Timestamp Issues

- Snippets

- Creating Synthetic Data

- Dutch Railway Datasets

- Sharing Macros

- Analyzing a Git Repository

- Importing Duckbox Tables

- Copying an In-Memory Database to a File

- Calculating a Database Checksum

- Troubleshooting

- Glossary of Terms

- Browsing Offline

- Operations Manual

- Overview

- DuckDB's Footprint

- Installing DuckDB

- Logging

- User Agents

- Securing DuckDB

- Non-Deterministic Behavior

- Limits

- DuckDB Docker Container

- Development

- DuckDB Repositories

- Release Cycle

- Metrics

- Profiling

- Building DuckDB

- Overview

- Build Configuration

- Building Extensions

- Android

- Linux

- macOS

- Raspberry Pi

- Windows

- Python

- R

- Troubleshooting

- Unofficial and Unsupported Platforms

- Benchmark Suite

- Testing

- Internals

- Sitemap

- Live Demo

LibreDB Studio is an open-source, self-hosted, browser-based SQL editor. It runs as a single server, either via npx, Docker, or a native package, and is reached through the browser rather than installed as a desktop application. LibreDB Studio connects to DuckDB directly through its native Node.js binding, so it queries a DuckDB database file (or an in-memory database) without going through a JDBC or ODBC driver.

-

Start LibreDB Studio with npx, which downloads and runs the latest release:npx @libredb/studioDocker, Homebrew, and other install options are listed in the project's README.

-

Open http://localhost:3000in a browser. On first run, the admin password is printed to the console.

-

Click the + button next to the LibreDB Studio logo in the sidebar to open the New Connection dialog.

-

Select DuckDB from the database type grid, and give the connection a name.

-

Enter the path to the DuckDB database file in Database File Path. To use an in-memory database, enter :memory:. Since LibreDB Studio runs as a server, the path is resolved on the machine running the server, not on the machine running the browser.

-

Click Test Connection to confirm the file can be opened, then click Establish Connection to save it.

-

The connection appears in the sidebar. Expand it to browse the tables, views, macros, and sequences in the database.

-

Open a query tab, write SQL, and run it with Run or Ctrl+Enter (Cmd+Enter on macOS).

Now you are ready to query DuckDB with LibreDB Studio.