On this page
Overview
D3 is a JavaScript library for data-driven graphics. It builds on web standards such as SVG, Canvas, and HTML and composes modules for arrays, scales, axes, shapes, selections, transitions, zooming, and other primitives to provide fine-grained visual and interaction control.
Features and best fit
Based on official documentation; not hands-on tested · Content checked:
Key features
Bind data to web standards for custom graphics
D3 takes a low-level approach built on SVG, Canvas, HTML, and related web standards, providing primitives for dynamic data-driven graphics.
Sources: [1]
Compose scales, axes, shapes, selections, and other modules
The d3 package aggregates modules for arrays, axes, color, force, geography, hierarchy, scales, selections, shapes, transitions, zooming, and more so applications can combine the required primitives.
Sources: [2]
Best fit
Before adoption
Low-level flexibility increases application implementation responsibility
The README explicitly describes D3 as a low-level approach, which means layouts, DOM updates, and interactions are often assembled by the application rather than supplied as ready-made chart components.
Sources: [1]
Official sources
- [1]D3 v7.9.0 README(2026-10-03)
- [2]D3 v7.9.0 package metadata(2026-10-03)
- [3]D3 v7.9.0 release(2026-10-03)
- [4]D3 v7.9.0 ISC license(2026-10-03)
Supplemental curator note
D3 is a strong fit for custom visualizations that need direct control beyond a chart configuration API. That flexibility also means teams often implement more layout, DOM updates, and interactions themselves than with higher-level chart libraries.
Try it in 3 steps
- 1
Create a small Node project
Create a minimal project for evaluating D3 as a module. The v7.9.0 package metadata requires Node.js 12 or newer.
mkdir d3-demo && cd d3-demo && npm init -y - 2
Install D3 7.9.0
Pin the aggregate d3 package that exposes modules for scales, shapes, selections, and other visualization primitives.
npm install d3@7.9.0 - 3
Run the scale API as an ES module
Create a linear mapping from 0–10 to 0–100 and confirm that an input of 5 maps to 50.
node --input-type=module -e 'import { scaleLinear } from "d3"; console.log(scaleLinear([0,10],[0,100])(5))'
Growth
Growth trends · Last 30 days
113,802 Stars
Trend data is still being collected.
Development activity
Last 90 days · weekly
- Commits (last 30 days)
- 0
- Open PRs
- 14
Development activity is still being collected.
Built with
Categories and tags
Categories
GitHub data
GitHub dataView detailed GitHub data
GitHub Topics
- visualization
- data-visualization
- charts
- svg
- chart
- d3
Related information
Write a related articleShare a guide or use case for this OSS in Markdown. Articles are published after administrator approval.
Explore next
- Apache Superset75,032 Stars
1 shared tag(s) · 1 shared category(s)
open-source BI with no-code charts, SQL Lab, a semantic layer, and an MCP service
Python - Matplotlib23,319 Stars
3 shared tag(s) · 1 shared category(s)
Build static, animated, and interactive Python visualizations by composing plots, figures, axes, and rendering backends
Python - nivo14,106 Stars
3 shared tag(s) · 1 shared category(s)
build declarative React charts on D3 with SVG, Canvas, responsive layouts, theming, motion, and SSR
TypeScript - ExcelJS15,483 Stars
1 shared tag(s) · 2 shared category(s)
read and write XLSX and CSV from JavaScript with worksheet, styling, and streaming APIs
JavaScript - Papa Parse13,580 Stars
1 shared tag(s) · 2 shared category(s)
parse and stream CSV in browsers or Node.js and convert between CSV and JSON
JavaScript - React250,863 Stars
1 shared tag(s) · 1 shared category(s)
build web and native interfaces from declarative components
JavaScript
Report incorrect information
Tell us if any listing information is incorrect or outdated.