DEV.co
Open-Source Databases · duckdb

duckdb-wasm

DuckDB-Wasm is a WebAssembly port of DuckDB that runs SQL analytics directly in browsers and Node.js without a backend server. It supports reading Parquet, CSV, JSON, and Arrow formats, plus remote database attachments over HTTP.

Source: GitHub — github.com/duckdb/duckdb-wasm
2.1k
GitHub stars
215
Forks
C++
Primary language
MIT
License (OSI-approved)

Key facts

Objective fields from the source. Values we can't verify are shown as “Unknown” rather than guessed.

FieldValue
Repositoryduckdb/duckdb-wasm
Ownerduckdb
Primary languageC++
LicenseMIT — OSI-approved
Stars2.1k
Forks215
Open issues180
Latest releasev1.33.0 (2025-12-16)
Last updated2026-06-29
Sourcehttps://github.com/duckdb/duckdb-wasm

What duckdb-wasm is

C++ codebase compiled to WebAssembly targeting in-process OLAP queries. Based on DuckDB v1.5.4, supports lazy extension loading, HTTP/HTTPS resource access (with CORS), single-threaded by default (experimental multithreading), and is sandboxed with limited out-of-core operations.

Quickstart

Get the duckdb-wasm source

Clone the repository and explore it locally.

terminalbash
git clone https://github.com/duckdb/duckdb-wasm.gitcd duckdb-wasm# follow the project's README for install & configuration

Need it deployed, integrated, or customized instead? DEV.co ships production installs.

Best use cases

Browser-based data exploration and visualization

Query local or remote datasets (Parquet, CSV, JSON) directly in the browser without backend infrastructure. Ideal for dashboards, reporting tools, and ad-hoc analysis interfaces.

Offline-first analytics applications

Embed analytics into web apps where users can load datasets and run queries locally, enabling work without network dependency after initial data fetch.

Lightweight Node.js data processing

Use in server-side Node.js workflows for ETL, data transformation, and querying without spinning up a dedicated database service.

Implementation considerations

  • Extension bundles (spatial, JSON, Parquet, ICU) are lazy-loaded at runtime; initial shell queries may trigger multi-MB wasm transfers. Plan CDN/caching strategy.
  • HTTP requests are upgraded to HTTPS and require CORS headers on remote servers; test cross-origin data access early in integration.
  • Default single-threaded mode; multithreading is experimental. Validate performance on target hardware before relying on threaded queries.
  • Database files attachable via HTTP (e.g., `ATTACH 'https://...' as db`), enabling remote DuckDB files as read-only data sources.
  • Sandboxed filesystem and out-of-core limitations mean queries must fit data in available client memory; test data size assumptions.

When to avoid it — and what to weigh

  • Large-scale multi-user transactional workloads — Sandboxed single-threaded execution and browser/Node.js resource limits make it unsuitable for high-concurrency OLTP scenarios.
  • Persistent backend data layer required — DuckDB-Wasm is in-memory and ephemeral. For durable, shared data across sessions, integrate with a backend database (not built-in).
  • Out-of-core analytics on massive datasets — Limited out-of-core support and browser memory constraints restrict processing to datasets that fit in client RAM.
  • Strict security isolation from untrusted SQL — Running arbitrary user-supplied SQL in the browser has inherent sandbox escape risks; requires additional validation layer.

License & commercial use

MIT License. Permissive OSI-approved license allowing commercial use, modification, and distribution with attribution.

MIT explicitly permits commercial use without restrictions or royalties. Verify all dependencies (DuckDB itself, bundled extensions) also permit intended commercial use; no commercial license exceptions noted in provided data.

DEV.co evaluation signals

Editorial assessment — not user reviews. Directional, with an explicit confidence level.

SignalAssessment
MaintenanceActive
DocumentationAdequate
License clarityClear
Deployment complexityLow
DEV.co fitStrong
Assessment confidenceHigh
Security considerations

Runs untrusted SQL in browser sandbox with inherent WebAssembly isolation. CORS validation required for remote data access; misconfigured origins expose data to malicious queries. User-supplied SQL should be validated/scoped. No cryptographic guarantees stated. Evaluate threat model before deploying to handle sensitive data.

Alternatives to consider

Apache Arrow JS (standalone)

Lighter-weight columnar compute library; no SQL engine. Choose if only data format transformation needed, not SQL analytics.

SQLite WASM

Simpler single-file database in browser; transactional, not OLAP-optimized. Better for structured storage; worse for analytical workloads.

Backend BI tools (Metabase, Superset)

Server-side analytics with persistent data, multi-user access, and enterprise features. Choose if centralized data governance required.

Software development agency

Build on duckdb-wasm with DEV.co software developers

Explore DuckDB-Wasm integration for dashboards, data exploration, and offline analytics. Start with the shell demo at shell.duckdb.org or review the API docs for implementation details.

Talk to DEV.co

Related open-source tools

Surfaced by semantic similarity across the DEV.co open-source index.

Related on DEV.co

Explore the category and the services that help you build with it.

duckdb-wasm FAQ

Can I persist data across browser sessions?
Not natively. DuckDB-Wasm is in-memory. Use localStorage, IndexedDB, or backend APIs to save query results or export databases; re-attach on reload.
Does DuckDB-Wasm support all DuckDB extensions?
No, a growing subset is supported. Core (JSON, Parquet, ICU, spatial) are autoloaded; others (community, external) load on-demand from extension repositories. Some may not compile to Wasm.
What are the performance implications of running in WebAssembly?
Generally fast for typical analytical queries, but slower than native due to Wasm overhead and browser/Node.js runtime constraints. Download size (extensions 1–3 MB compressed) dominates initial latency.
Is DuckDB-Wasm suitable for production use?
Yes, for client-side analytics and data exploration; not recommended as primary data store. No backup/recovery guarantees. Pair with backend persistence for production workflows.

Work with a software development agency

Adopting duckdb-wasm is usually one piece of a larger software development effort. As a software development agency, DEV.co provides software development services and web development expertise — pairing senior software developers and web developers with your team to design, build, and operate open-source databases software in production.

Ready to add SQL analytics to your web app?

Explore DuckDB-Wasm integration for dashboards, data exploration, and offline analytics. Start with the shell demo at shell.duckdb.org or review the API docs for implementation details.