DEV.co
Open-Source Databases · uwdata

arquero

Arquero is a JavaScript library for querying and transforming data tables using a fluent, relational-algebra-inspired API. It handles millions of rows efficiently and works with arrays, typed arrays, and Apache Arrow columns.

Source: GitHub — github.com/uwdata/arquero
1.5k
GitHub stars
73
Forks
JavaScript
Primary language
BSD-3-Clause
License (OSI-approved)

Key facts

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

FieldValue
Repositoryuwdata/arquero
Owneruwdata
Primary languageJavaScript
LicenseBSD-3-Clause — OSI-approved
Stars1.5k
Forks73
Open issues41
Latest releasev8.0.3 (2025-05-29)
Last updated2025-05-29
Sourcehttps://github.com/uwdata/arquero

What arquero is

Column-oriented data frame library following dplyr design patterns, supporting filter, aggregation, window, join, and reshape operations via method-chainable verbs. Processes array-backed and Arrow-backed tables with optional extensibility for custom functions.

Quickstart

Get the arquero source

Clone the repository and explore it locally.

terminalbash
git clone https://github.com/uwdata/arquero.gitcd arquero# 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

Arquero's lightweight footprint and fluent API make it ideal for interactive dashboards, Observable notebooks, and client-side analytics where shipping data transformation logic to the browser is feasible.

ETL pipelines in Node.js applications

Use Arquero to build lightweight data transformation workflows—filtering, aggregating, and reshaping tabular data before persisting or passing to downstream systems.

Data wrangling for visualization libraries

Pre-process and reshape data for D3, Vega, or other visualization frameworks; Arquero's verb-based API integrates naturally into JavaScript-based analytics stacks.

Implementation considerations

  • Verify Node.js ≥18 compatibility in your deployment environment; older Node versions or IE browsers require transpilation.
  • Arquero reuses columns where possible to minimize memory overhead, but large tables with many columns still consume proportional memory—profile memory usage early.
  • Custom aggregate and window functions require understanding Arquero's expression DSL and optional functional forms; test thoroughly.
  • Apache Arrow interop is opt-in; if using toArrow() or loadArrow(), ensure Apache Arrow is imported before Arquero in the browser.
  • No built-in SQL parsing; table expressions use JavaScript arrow functions, so SQL familiarity does not directly transfer.

When to avoid it — and what to weigh

  • Petabyte-scale or distributed processing — Arquero is single-threaded and in-memory; it is not designed for big data platforms like Spark or Flink. Data must fit within Node.js/browser memory.
  • SQL-like stored procedures or complex query optimization — Arquero is a runtime data-frame library, not a query optimizer or database. If you need query planning, indexing, or persistence, use a dedicated database.
  • Real-time streaming or event-driven transforms — Arquero operates on static tables. For continuous streams (Kafka, message queues), use stream-processing frameworks instead.
  • Strict server-side isolation or sandboxed environments — Arquero supports arbitrary JavaScript expressions and custom functions; if you need strict input validation or isolation from untrusted data, add your own security layer.

License & commercial use

Licensed under BSD-3-Clause (permissive OSI license). Allows commercial use, modification, and redistribution with attribution and liability disclaimer.

BSD-3-Clause is a permissive OSI license that permits commercial use in proprietary applications. You must retain the original license notice and copyright attribution. No patent indemnity or warranty is provided; review BSD-3-Clause terms and consult legal counsel for high-risk deployments.

DEV.co evaluation signals

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

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

Arquero evaluates JavaScript expressions (arrow functions) in table operations. If data or queries come from untrusted sources, expressions could be exploited. No built-in input sanitization; validate and escape user-supplied column names and expressions. No known CVEs listed in data; however, treat any expression-based system as requiring explicit security review in sandboxed contexts.

Alternatives to consider

Danfo.js

Python pandas-inspired library for JavaScript; similar data-frame API but different verb naming (map, filter) and less relational-algebra focus. Heavier bundle.

Apache Arrow JS + Parquet.js

Lower-level columnar data format and tools; requires manual query construction but offers better cross-language interop and binary file support.

DuckDB (WebAssembly)

Full SQL query engine in WebAssembly; superior for complex queries, indexing, and optimization, but larger bundle and higher memory overhead.

Software development agency

Build on arquero with DEV.co software developers

Arquero is production-ready for browser dashboards and Node.js ETL. Review the documentation, try the Observable tutorials, and evaluate memory/performance for your data scale.

Talk to DEV.co

Related open-source tools

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

arquero FAQ

Can Arquero handle millions of rows?
Yes. Arquero is designed for million+ row tables. Performance depends on available memory and operation complexity; column reuse minimizes overhead, but profile large datasets in your deployment environment.
Does Arquero replace a database?
No. Arquero is an in-memory data-frame library; it does not provide persistence, indexing, or distributed processing. Use it for client-side analytics or lightweight ETL, not as a database replacement.
Can I use Arquero with Apache Arrow?
Yes. Arquero supports Arrow columns and provides toArrow() and loadArrow() methods, but Apache Arrow must be imported separately in the browser. See usage docs for setup.
Is Arquero suitable for production dashboards?
Yes, especially browser-based dashboards where data fits in client memory. For server-side high-throughput scenarios, profile memory and consider a distributed system if data grows beyond Node.js memory limits.

Software developers & web developers for hire

DEV.co helps companies turn open-source tools like arquero into production software. Our software development services cover the full lifecycle — architecture, web development, integration, and maintenance — delivered by software developers and web developers who ship. Engage our software development agency to implement or customize it for your open-source databases stack.

Ready to add data transformation to your JavaScript stack?

Arquero is production-ready for browser dashboards and Node.js ETL. Review the documentation, try the Observable tutorials, and evaluate memory/performance for your data scale.