The Vibeary — round-up
Best charting libraries for the web
Charting libraries are not interchangeable. Some are declarative and perfect for standard dashboards; some are low-level and let you draw anything at the cost of writing more code; some are built for hundreds of thousands of points and will beat every competitor on a scatter plot that others cannot render at all. This list is organised around that reality, covering full charting engines and the D3 plugin ecosystem, so you can choose by the shape of your data and the interactivity you need rather than by download count.
What earned a place
- Handles the data volume it claims to, in a real browser
- Accessible output: labels, keyboard access, non-colour encoding
- Reasonable bundle size or modular imports
- Documented API rather than example-driven guesswork
24 picks from the library
- 01
billboard.js
D3-based reusable chart library from Naver with a compact API, plugin system and unusually complete TypeScript definitions.
Why it made the list: The maintained successor to c3.js, still shipping releases years later
Charting enginesMITNaver (@naver)github.com

- 02
chart-parts
Grammar of graphics for React from Microsoft Research, a React-native reimplementation of Vega's compositional model.
Why it made the list: Vega's grammar expressed as ordinary React components you can inspect
Charting enginesMITMicrosoft (@microsoft)github.com

- 03
ChartGPU
WebGPU-rendered charting library aimed at datasets large enough to stall canvas and SVG renderers.
Why it made the list: One of the first serious WebGPU charting stacks, not a demo
Charting enginesopen-sourceChartGPU (@ChartGPU)github.com

- 04
Cubism.js
D3 plugin for horizon charts, a time-series encoding that stacks many metrics in a fraction of the vertical space.
Why it made the list: Horizon charts fit 20 metrics where line charts fit two
Charting enginesApache-2.0Square / Mike Bostock (@mbostock)github.com

- 05
d3-annotation
Annotation layer for D3 with badge, callout, curve and threshold annotation types plus draggable editing during design.
Why it made the list: Annotation is what separates a chart from an explanation; this makes it trivial
D3 pluginsMITSusie Lu (@DataToViz)github.com

- 06
d3-area-label
Places labels inside stacked area bands at the largest fitting position, sized and rotated automatically.
Why it made the list: Solves the one problem that makes streamgraphs unusable in production
D3 pluginsMITCurran Kelleher (@currankelleher)github.com

- 07
d3-beeswarm
Layout plugin that computes non-overlapping beeswarm arrangements for one-dimensional distributions, so every individual data point stays visible.
Why it made the list: Beeswarms show every data point where a boxplot hides the shape
D3 pluginsopen-sourceFranck Lebeau (@Kcnarf)github.com

- 08
d3-cloud
Word cloud layout that places words with sprite-based collision detection, running asynchronously so it never blocks the page.
Why it made the list: The layout every word cloud on the web is secretly running
D3 pluginsopen-sourceJason Davies (@jasondavies)github.com

- 09
d3-composite-projections
Map projections that place distant territories such as Alaska, Hawaii and French overseas regions next to the mainland.
Why it made the list: Ready-made inset composites for 15+ countries instead of manual clipping
D3 pluginsMITRoger Veciana (@rveciana)github.com

- 10
d3-dag
Layout algorithms for directed acyclic graphs — Sugiyama, zherebko and grid — as a d3-hierarchy-style module.
Why it made the list: Proper DAG layering without shelling out to Graphviz or dagre
D3 pluginsMITErik Brinkman (@erikbrinkman)github.com

- 11
d3-flame-graph
Flame graph component for profiling and any hierarchical data, with search, zoom and differential comparison modes.
Why it made the list: Differential flame graphs for before/after comparisons, built in
D3 pluginsApache-2.0Martin Spier (@spiermar)github.com

- 12
d3-force-sampled
Drop-in replacement for d3-force using random vertex sampling for linear-time layouts on large graphs.
Why it made the list: Same API as d3-force but survives graphs with tens of thousands of nodes
D3 pluginsopen-sourceTwo Six Labs (@twosixlabs)github.com

- 13
d3-geo-scale-bar
Generates correct scale bars for projected geospatial data, accounting for distortion at the bar's location.
Why it made the list: Most web maps ship a scale bar that is quietly wrong; this one isn't
D3 pluginsMITHarry Stevens (@Harry_Stevens)github.com

- 14
d3-geo-voronoi
Spherical Voronoi diagrams and Delaunay triangulation computed on the globe rather than a flat plane.
Why it made the list: Correct Voronoi cells near poles and antimeridian where planar libs break
D3 pluginsMITPhilippe Rivière (@recifs)github.com

- 15
d3-inertia
Extends d3-drag so globe rotation keeps spinning with momentum after the pointer is released.
Why it made the list: Makes a D3 orthographic globe feel like a native app for 3KB
D3 pluginsMITPhilippe Rivière (@recifs)github.com

- 16
d3-interpolate-path
Path interpolator that handles transitions between paths with different numbers of points without visual jumping.
Why it made the list: Fixes the ugliest bug in every animated line chart in one import
D3 pluginsopen-sourcePeter Beshai (@pbeshai)github.com

- 17
d3-jetpack
Convenience wrappers over D3 selections adding appendMany, translate, at/st shorthands and tspan wrapping.
Why it made the list: Cuts D3 boilerplate roughly in half; used across Datawrapper's origins
D3 pluginsopen-sourceGregor Aisch (@driven_by_data)github.com

- 18
d3-lasso
Free-form lasso selection for D3 charts, letting users draw around points to filter scatterplots.
Why it made the list: Lasso select is what makes a scatterplot an exploration tool
D3 pluginsopen-sourceSteven Okenes (@skokenes)github.com

- 19
d3-legend
Legend generator for D3 colour, size and symbol scales that stays in sync with the scale it was built from.
Why it made the list: Legends derived from the scale can't drift out of sync with the chart
D3 pluginsMITSusie Lu (@DataToViz)github.com

- 20
d3-loom
Layout for loom diagrams, a chord-diagram variant that shows relationships between entities and a shared centre.
Why it made the list: A chart form that basically only exists because Nadieh Bremer invented it
D3 pluginsMITNadieh Bremer (@NadiehBremer)github.com

- 21
d3-scale-cluster
Scale that bins continuous data into discrete classes using k-means clustering rather than quantile or equal-interval breaks.
Why it made the list: Jenks-style natural breaks for choropleths, as a normal D3 scale
D3 pluginsMITDan Schnerd (@schnerd)github.com

- 22
d3-upset
UpSet plot implementation for visualising intersections across many sets where Venn diagrams break down.
Why it made the list: The correct chart for 5+ overlapping sets, rarely available in JS
D3 pluginsMITChuntul (@chuntul)github.com

- 23
d3-voronoi-treemap
Treemap layout that packs hierarchies into arbitrary shapes using Voronoi tessellation instead of nested rectangles.
Why it made the list: Fit a treemap inside a circle, a country outline or a logo
D3 pluginsopen-sourceFranck Lebeau (@Kcnarf)github.com

- 24
d3-x3d
Data-driven 3D charts rendering to X3D/X3DOM, covering 3D bar, scatter, surface and bubble charts.
Why it made the list: 3D charts that stay declarative D3 instead of becoming a Three.js project
D3 pluginsGPLJames Saunders (@jamesleesaunders)github.com

Questions
- D3 or a charting library?
- A charting library for standard charts on a deadline; D3 when the visualisation is bespoke and the layout is the interesting part.
- How do I make charts accessible?
- Provide a data table alternative, do not encode meaning in colour alone, and label axes and series in the DOM.