perspective-dev/perspective

A data visualization and analytics component, especially well-suited for large and/or streaming datasets.

Rust

11,286

6,351 commits

updated Oct 12, 2026

See the code

README


Perspective

Build Status npm PyPI crates.io

Perspective is an open-source data grid, pivot table and charting component for large, real-time and streaming datasets. Build user-configurable reports, dashboards, notebooks and embedded analytics applications, backed by a high-performance streaming query engine that runs in-browser via WebAssembly or server-side in Python, Node.js and Rust — or delegates to a database you already have.


A collage of Perspective data grids, pivot tables, charts and maps

Features

  • A data-reactive UI packaged as a Custom Element, with drag-and-drop query and layout configuration. Includes a virtual-scrolling, editable data grid, WebGL charting engine with 15+ chart types, tile-based geographic maps, full theme support, and React bindings.

  • A fast, memory-efficient streaming query engine written in C++ and compiled for WebAssembly (including a 64-bit memory64 build for in-browser datasets larger than 4GB, and support for paging columns to disk via OPFS in the browser or memory-mapped files natively), Python and Rust. Tables update incrementally and views tick in real time, with reactive joins across tables, a columnar expression language based on ExprTK, and read/write/streaming support for Apache Arrow, CSV and JSON.

  • A symmetric client/server architecture — the same Client API connects to an engine in-process, in a Web Worker, or remotely over WebSocket, with server bindings for Python (aiohttp, Starlette, Tornado), Node.js and Rust. Datasets can be mirrored to the browser for fluid interaction or virtualized server-side, streaming only what's visible.

  • Virtual servers that run Perspective's UI directly on external engines like DuckDB, ClickHouse, PostgreSQL and Polars, translating view configurations into native queries — no ETL or data copy required.

  • A Jupyter widget built on anywidget and a Python client library for interactive data analysis in JupyterLab and other notebook environments.

Documentation

Examples

SuperstoreWorkspaceWebcam
Perspective example: superstorePerspective example: superstore overviewPerspective example: webcam video wall
RaycastingMarketNYPD
Perspective example: raycastingPerspective example: market trading deskPerspective example: nypd 4
MoviesEvictionsFractal
Perspective example: moviesPerspective example: evictions 2Perspective example: fractal

Media





OpenJS Foundation


The Perspective project is a member of the The OpenJS Foundation.

Copyright OpenJS Foundation and Perspective contributors. All rights reserved. The OpenJS Foundation has registered trademarks and uses trademarks. For a list of trademarks of the OpenJS Foundation, please see our Trademark Policy and Trademark List. Trademarks and logos not indicated on the list of OpenJS Foundation trademarks are trademarks™ or registered® trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.

The OpenJS Foundation | Terms of Use | Privacy Policy | Bylaws | Code of Conduct | Trademark Policy | Trademark List | Cookie Policy

analytics
apache-arrow
bi
business-intelligence
charts
dashboard
datagrid
data-visualization
duckdb
javascript
jupyter
pivot-table
python
react
real-time
rust
streaming
wasm
webassembly
web-components

perspective-dev/perspective

A data visualization and analytics component, especially well-suited for large and/or streaming datasets.

Rust

11,286

6,351 commits

updated Oct 12, 2026

See the code

README


Perspective

Build Status npm PyPI crates.io

Perspective is an open-source data grid, pivot table and charting component for large, real-time and streaming datasets. Build user-configurable reports, dashboards, notebooks and embedded analytics applications, backed by a high-performance streaming query engine that runs in-browser via WebAssembly or server-side in Python, Node.js and Rust — or delegates to a database you already have.


A collage of Perspective data grids, pivot tables, charts and maps

Features

  • A data-reactive UI packaged as a Custom Element, with drag-and-drop query and layout configuration. Includes a virtual-scrolling, editable data grid, WebGL charting engine with 15+ chart types, tile-based geographic maps, full theme support, and React bindings.

  • A fast, memory-efficient streaming query engine written in C++ and compiled for WebAssembly (including a 64-bit memory64 build for in-browser datasets larger than 4GB, and support for paging columns to disk via OPFS in the browser or memory-mapped files natively), Python and Rust. Tables update incrementally and views tick in real time, with reactive joins across tables, a columnar expression language based on ExprTK, and read/write/streaming support for Apache Arrow, CSV and JSON.

  • A symmetric client/server architecture — the same Client API connects to an engine in-process, in a Web Worker, or remotely over WebSocket, with server bindings for Python (aiohttp, Starlette, Tornado), Node.js and Rust. Datasets can be mirrored to the browser for fluid interaction or virtualized server-side, streaming only what's visible.

  • Virtual servers that run Perspective's UI directly on external engines like DuckDB, ClickHouse, PostgreSQL and Polars, translating view configurations into native queries — no ETL or data copy required.

  • A Jupyter widget built on anywidget and a Python client library for interactive data analysis in JupyterLab and other notebook environments.

Documentation

Examples

SuperstoreWorkspaceWebcam
Perspective example: superstorePerspective example: superstore overviewPerspective example: webcam video wall
RaycastingMarketNYPD
Perspective example: raycastingPerspective example: market trading deskPerspective example: nypd 4
MoviesEvictionsFractal
Perspective example: moviesPerspective example: evictions 2Perspective example: fractal

Media





OpenJS Foundation


The Perspective project is a member of the The OpenJS Foundation.

Copyright OpenJS Foundation and Perspective contributors. All rights reserved. The OpenJS Foundation has registered trademarks and uses trademarks. For a list of trademarks of the OpenJS Foundation, please see our Trademark Policy and Trademark List. Trademarks and logos not indicated on the list of OpenJS Foundation trademarks are trademarks™ or registered® trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.

The OpenJS Foundation | Terms of Use | Privacy Policy | Bylaws | Code of Conduct | Trademark Policy | Trademark List | Cookie Policy

analytics
apache-arrow
bi
business-intelligence
charts
dashboard
datagrid
data-visualization
duckdb
javascript
jupyter
pivot-table
python
react
real-time
rust
streaming
wasm
webassembly
web-components

Project health

crates.io

Latest release

5.5.1 · Sep 18, 2026

Releases this year

19

Significant stargazers

(top 24 of 126)

Luke Edwards

5,087 followers · starred Feb 2018

Vincent Koc

2,245 followers · starred Nov 2025

Kyle Kelley

1,558 followers · starred Apr 2026

Andre Popp

964 followers · starred Jun 2022