A JavaScript charting library is a long-term dependency, so two questions matter more than the demo gallery: is anyone still maintaining it, and are you allowed to ship it? This guide was first written in 2015, and both answers have changed for several of its original picks. It now compares the libraries worth using in November 2026, separates the truly free ones from those with commercial conditions, and shows what happened to the original ten.
Versions and dates come from the npm registry, commit counts from the GitHub API and licence terms from each project’s own licence text, all read on 4 November 2026. BFWR has not benchmarked these libraries, so nothing here is a performance claim. The licence notes are a reading of the published text, not legal advice.
Quick answer
- Standard charts on a normal website: Chart.js (MIT).
- Large dashboards with many chart types: Apache ECharts (Apache-2.0).
- React apps: Recharts (MIT).
- Custom, one-of-a-kind visualisations: D3 (ISC), if you are willing to build the chart yourself.
- Time series with many points: uPlot (MIT).
- Check the licence first: ApexCharts is free only below US$2 million in revenue or funding, Highcharts needs a paid licence on a public website, amCharts is free only with its branding link, and FusionCharts is a paid product with a trial.
Open-source libraries you can use commercially
| Library | Licence | Latest npm release | Commits, last 90 days | npm downloads, last month |
|---|---|---|---|---|
| Recharts (React) | MIT | 3.10.1, 25 Jul 2026 | 100+ | 201.8M |
| D3 | ISC | 7.9.2, 3 Nov 2026 | 4 | 90.7M |
| Chart.js | MIT | 4.6.1, 22 Oct 2026 | 15 | 48.6M |
| Apache ECharts | Apache-2.0 | 6.1.0, 19 May 2026 | 13 | 25.5M |
| Vega-Lite | BSD-3-Clause | 6.5.0, 8 Oct 2026 | 31 | 5.0M |
| Observable Plot | ISC | 0.6.18, 3 Nov 2026 | 3 | 4.1M |
| Plotly.js | MIT | 4.2.0, 29 Oct 2026 | 100+ | 2.8M |
| uPlot | MIT | 1.6.32, 14 Mar 2025 | 100+ | 2.7M |
nivo (React; @nivo/core) |
MIT | 0.99.0, 23 May 2025 | 0 | 6.1M |
| Chartist | MIT or WTFPL | 2.2.0, 20 Oct 2026 | 100+ | 0.4M |
| visx (React) | MIT | 4.0.0, 11 Jun 2026 | 0 | 0.4M |
| billboard.js | MIT | 4.1.3, 16 Oct 2026 | 18 | 0.2M |
Read the download column carefully. npm counts every install, including automated builds and installs pulled in as a dependency of another package, so it shows how widely a package travels and not how many developers chose it. A count of 100+ commits means the figure reached the limit of what we requested. Commits can also be routine dependency updates, and a low count on a mature library such as D3 is normal: it shipped a release the day before we read it. nivo is the one to watch, with no release since May 2025, although its last commit was in July 2026.
How to choose among them
Chart.js for ordinary charts
If you need a line, bar or pie chart on a page, start here. Its documentation describes “a set of frequently used chart types, plugins, and customization options”, and it is the shortest route from data to a working chart. It draws to a canvas element, which suits most pages but gives you less per-element control than an SVG library.
Apache ECharts for dashboards
ECharts covers a wider range of chart types and is built for interactive dashboards. It offers both canvas and SVG rendering, and its handbook has a page on choosing between them. Note that it has not had a stable release since May, though commits continue.
Recharts, visx and nivo for React
Recharts describes itself as a “Redefined chart library built with React and D3” and is the usual first choice in a React codebase. visx from Airbnb is lower level, giving you components to assemble your own charts, and nivo offers ready-made components with less recent release activity.
D3 when nothing off the shelf fits
The 2015 version of this article told beginners to start with D3. That was poor advice, and D3’s own documentation explains why: “D3 is not a charting library in the traditional sense. It has no concept of” charts, and instead you compose primitives such as scales, axes and shapes. It is the right tool for a bespoke visualisation and too much work for a bar chart. D3’s maintainers also maintain Observable Plot, which is a much shorter route to a standard exploratory chart.
uPlot, Plotly.js and Vega-Lite for specific jobs
uPlot’s repository calls it “A small, fast chart for time series, lines, areas, ohlc” and bars, which is where it fits best. Plotly.js is the “Open-source JavaScript charting library behind Plotly and Dash”, so it suits teams already in that ecosystem. Vega-Lite takes a different approach: “A concise grammar of interactive graphics”, where you describe a chart as a JSON specification instead of writing drawing code.
Libraries with commercial conditions
These are good libraries, and all four are actively released. The point is only that “free to download” and “free to ship” are different things, and each one draws the line in a different place.
| Library | Free for | Needs a paid licence when | Latest npm release |
|---|---|---|---|
| ApexCharts | Organisations under US$2M in revenue, budget or funding | You are at or above US$2M, or you embed it in a product or platform used by other people (OEM) | 8.7.0, 31 Oct 2026 |
| Highcharts | Non-commercial use under separate terms | Any use on a public website, internal use or distribution to customers | 13.1.1, 20 Sep 2026 |
| amCharts 5 | Any project, including commercial, if the branding link stays visible | You want to remove the attribution | 5.21.5, 26 Oct 2026 |
| FusionCharts | Trial during development | You use it in your products | 4.2.3, 30 Sep 2026 |
ApexCharts catches people out, because many older lists call it open source. Its licence file now describes “a dual-license model”. The Community Licence is free only to organisations under the threshold, the test includes “your parent company, affiliates, or any entity under common control”, and it also rules out “Use in competing charting products”. GitHub reports no standard licence for the repository, and npm’s licence field reads “SEE LICENSE IN LICENSE.md”. npm lists versions before 5.1.0 as MIT, with the custom licence arriving in July 2025, so check which version you are on before upgrading.
Highcharts is clear about websites: “any use of the Software on a Public Website requires the purchase of a SaaS License”. Its shop listed Highcharts Core at 366 USD per seat on 4 November 2026. Non-commercial use is covered by separate terms, so read those if that is your case.
amCharts 5 calls its free version a linkware licence. You may “Use amCharts software in any of your projects, including commercial”, provided the built-in attribution stays. Removing it is what you pay for.
FusionCharts offers a free trial for testing, then says “a license is required before using FusionCharts in your products”. Its cart listed the Pro plan at $1,329 a year on 4 November 2026, marked as a discount from $1,899.
Google Charts sits in its own category. Its FAQ confirms commercial use is allowed, but also says “our terms of service do not allow you to download and save or host” the loader or visualisation code. Your page therefore depends on Google’s servers, which rules it out for offline apps and for anything that must not call a third party.
What happened to the original ten
| 2015 pick | Status in November 2026 |
|---|---|
| D3.js | Active, ISC licence. Not a beginner’s starting point |
| Chart.js | Active, MIT. The 2015 note about six chart types is long out of date |
| Ember Charts | Archived. Last npm release and last commit were May 2020; 778 downloads last month |
| Google Charts | Available, but must be loaded from Google |
| Flot | Last npm release and last commit July 2023. Its appeal in 2015 was support for IE6, which no longer matters |
| FusionCharts | Active, commercial |
| Highcharts | Active, commercial |
| amCharts | Active as amCharts 5, free with its branding link |
| Chartist | Active, MIT or WTFPL. Now at chartist-js on GitHub |
| Rickshaw | Last npm release March 2020, last commit January 2025; 7,666 downloads last month. Avoid for new work |
FAQ
What is the best free JavaScript chart library?
Chart.js for most websites, because it is MIT-licensed, actively released and quick to set up. For large dashboards, Apache ECharts. In React, Recharts.
Is ApexCharts free for commercial use?
Only for organisations under US$2 million in annual revenue, budget or funding, and not when embedded in a product or platform used by other people. Above that you need a paid licence, so read its licence file for your case.
Is Highcharts free?
Not for a public website. Its licence requires a paid SaaS licence for that, and non-commercial use falls under separate terms.
Is D3 a charting library?
D3’s own documentation says it is not one in the traditional sense. It is a low-level toolbox for building visualisations, so a library such as Chart.js or Observable Plot is usually quicker for standard charts.
Related guides
- Free code editors that are still maintained
- JavaScript frameworks for web and mobile apps
- Model Licence Checker, the same kind of licence question for AI models
Sources
- What is D3? and D3 repository
- Chart.js documentation
- Apache ECharts: canvas vs SVG
- Recharts, visx, nivo, uPlot, Plotly.js and Vega-Lite repositories
- ApexCharts licence
- Highcharts licence and shop
- amCharts licence
- FusionCharts plans
- Google Charts FAQ
- Ember Charts, Flot, Chartist and Rickshaw repositories
Updated 4 November 2026. Rewritten from the 2015 version: versions, commit counts, downloads, prices and licence terms were all read on that date. Licences change, as ApexCharts shows, so read the current text before you ship.
Work out what your hardware can actually run
Free calculators and directories, sized from real model weights โ before you download gigabytes or order a card:


Solid list, but I’d consider adding ZingChart (http://www.zingchart.com) next time. Maybe not for people who just want a chart or two in a blog post or something, but it’s a legit library for serious charting.
please check http://www.anychart.com AnyChart – JS library