About this project

uPlot is a lightweight, MIT-licensed charting library built on Canvas 2D, focused on time series, lines, areas, OHLC, and bar charts. It is designed for speed and memory efficiency: the project reports creating an interactive chart with 166,650 data points in 25 ms from a cold start, and scaling at roughly 100,000 points per millisecond afterward. The library is about 50 KB minified and supports live data streaming, often at 60 fps, with relatively low CPU and RAM usage compared with other Canvas-based charting libraries. Key features include multiple series with toggling, multiple y-axes and scales, temporal or numeric x-axes, linear, uniform, or logarithmic scales, line and area styling, pluggable path renderers such as linear, spline, stepped, and bars, zoom with auto-rescale, legends with live values, IANA time zone and DST support, missing-data handling, cursor synchronization across charts, focus-closest-series behavior, high/low bands, and positive/negative stacking groups. The API is intentionally lean and extensible through hooks and plugins. The project explicitly avoids general-purpose data parsing, aggregation, or statistical processing, transitions and animations, automatic axis tick collision avoidance, and built-in drag scrolling or panning. Smooth spline interpolation is available but discouraged. Third-party integrations exist for React, Vue.js, Svelte, and Python. Documentation is provided through a conceptual overview, TypeScript definitions, and a collection of runnable demos.