D3.js (Data-Driven Documents) is a JavaScript library for producing dynamic, interactive data visualizations in the browser. Its central idea is to bind data to elements of the Document Object Model and then transform those elements according to the data, rather than offering a fixed catalog of chart types. As the project site puts it, D3 is “the JavaScript library for bespoke data visualization,” built on web standards to give authors unparalleled flexibility.
The library was introduced by Mike Bostock, Vadim Ogievetsky, and Jeffrey Heer in the paper “D3: Data-Driven Documents,” published in IEEE Transactions on Visualization and Computer Graphics (Proceedings of InfoVis) in 2011. The paper describes a representation-transparent approach in which, instead of hiding the scenegraph inside a toolkit-specific abstraction, D3 lets designers directly inspect and manipulate the standard DOM, selectively binding input data to arbitrary document elements and applying dynamic transforms.
The technical approach is what set D3 apart from earlier visualization toolkits. Selections let code operate on groups of DOM or SVG nodes; the data join (the enter, update, and exit pattern) maps an array of data to a set of elements and handles additions and removals as the data changes; and transitions interpolate attributes over time to animate those changes. On top of these primitives, D3 supplies scales and axes, shape generators for arcs, lines and areas, and layouts for treemaps, trees, force-directed graphs, chords, and geographic projections.
Because it works at the level of web standards rather than prescribing finished charts, D3 became the substrate for a large ecosystem. Many higher-level charting libraries were built on or inspired by it, and countless bespoke newsroom graphics and dashboards were authored directly with it. That low-level power is also its tradeoff: building a common chart in raw D3 takes more code than in a declarative library, which motivated the wave of higher-level tools that followed.
D3 has remained widely used and actively maintained for well over a decade, released as free, open-source software under a permissive license. Its influence on how data visualization is done on the web, and on the vocabulary of selections, data joins, and scales, extends far beyond the projects that import the library itself.