Visualization libraries · D3.js open-source project (Observable)

D3.js

JavaScript library for binding data to the DOM and drawing fully custom, interactive visualizations with SVG or Canvas.

D3.js is a JavaScript library for producing custom, interactive data visualizations in web browsers using SVG, HTML, and Canvas. Rather than shipping pre-built chart types, D3 provides low-level primitives — scales, axes, shapes, transitions, and force layouts — for binding data directly to DOM elements, which is what gives it its name (Data-Driven Documents). This makes it the most flexible option for bespoke visual designs, at the cost of a steeper learning curve than chart libraries with ready-made components. D3 runs entirely client-side and is commonly paired with React, Vue, or Observable notebooks, which handle rendering lifecycle while D3 computes layout and scales. It remains the foundation many higher-level libraries (Vega-Lite, Nivo, Plotly.js) are themselves built on.

At a glance

Vendor D3.js open-source project (Observable)
Pricing model Open source + paid options
Free tier Yes
Deployment Self-hosted
Open source Yes (ISC)
Best for Front-end and data-visualization engineers who need fully custom, non-templated charts.

Pricing

Free, open-source library with no paid tier or vendor pricing page.

Pricing has not been verified yet — see the vendor's site.

Features

  • Low-level data-to-DOM binding
  • SVG, HTML, and Canvas rendering
  • Scales, axes, and shape generators
  • Animated transitions
  • Force-directed and hierarchical layouts
  • Geographic projections
  • Full control over every visual element

Integrations

Profile last reviewed September 21, 2026

Head to head

Alternatives

D3.js in the index now

Terms to know

Related guides