Best Free JavaScript Chart Library, by Category

Eleven categories, the licence behind each, and a link to check every claim

free JavaScript chart library comparison
open source charting library licence
free chart library for commercial use
MIT licensed JavaScript charts
free charting library category comparison
free chart library for students
charting library watermark and timeout
JavaScript charting licence terms

Free means two different things in JavaScript charting, and most comparisons mix them up. One group is permissively licensed open source, free forever, at any company size, with no threshold to outgrow. The other is commercial engines with a free tier, and those tiers are usually limited by a watermark, a revenue test, a headcount test, or a clock.

This page separates the two, then picks a winner per category. Every competitor claim below was read on 2026-09-02 from that vendor's own site, documentation or licence agreement. Where to check each one is at the bottom, so you do not have to take our word for any of it.

The eleven categories, at a glance

categorywinnerwhy
Best free overallChart.jsMIT, no revenue test, largest community
Best free for first plot speeduPlot166,650 points in 25 ms from cold, 47.9 KB
Best free for raw line throughputwebgl-plotWebGL, but you build the chart yourself
Best free for commercial useProEssentialsJSone revenue test, no headcount or funding test
Best free for students and teachingProEssentialsJSfree at any institution revenue, no timeout
Best free for 3D surfacesProEssentialsJS, EChartsECharts-GL and Plotly are the free options
Best free for 2D filled contoursProEssentialsJSthe free options are primitives, not charts
Best free for many charts on one pageProEssentialsJSCanvas2D has no WebGL context limit
Best free for engineering and scienceProEssentialsJScontours, WYSIWYG print, export menu
Best free with AI assistanceProEssentialsJSa public token budgeted knowledge base
Worst value free tierthe watermark groupamCharts, ZingChart, FusionCharts, SciChart

We make ProEssentialsJS. We win six of these and we lose two of them, and the two we lose are the ones most readers will care about first. Those are dealt with before anything else.

Best free overall: Chart.js

Chart.js is MIT licensed, free forever, at any revenue, with no watermark and no threshold. It has the largest community and the most tutorials of any JavaScript charting library. If you need a line chart, a bar chart and a tooltip, start there and stop reading.

Apache ECharts, D3.js, Plotly.js and ApexCharts are in the same category. All are free forever with no revenue test. The honest trade is support and rendering performance, not licence terms.

Best free for first plot speed: uPlot

uPlot is MIT licensed and publishes its own numbers, which is rarer than it should be. From a cold start it draws an interactive chart of 166,650 points in 25 ms, then scales at roughly 100,000 points per millisecond. The minified bundle is about 47.9 KB.

Read that number for what it is: a cold start. It is the time to put a chart on screen the first time, and for that uPlot is excellent on a budget of zero. We are not going to pretend otherwise.

It is not a sustained throughput number and uPlot does not present it as one. First plot speed and big data are different problems, and this category is the first one.

uPlot also scopes its own claim, and the scope is the interesting part. It describes itself as the fastest time series plotter that does not use context limited WebGL shaders or WASM. Those are the two techniques that go faster, and it says so rather than hiding it. On live data its README is equally direct: streaming works at 60fps but it "may begin to struggle beyond 100k in-view points".

Best free for raw line throughput: webgl-plot

When uPlot runs out, its own documentation tells you where to go: switch to a WebGL or WebGPU solution such as danchitnis/webgl-plot. That is a genuine recommendation from one free library to another and it is worth following.

webgl-plot is MIT licensed, draws multi line 2D plots on native WebGL at the screen refresh rate, has no dependencies, and works with OffscreenCanvas and web workers.

It is a line renderer, not a charting library, and it says so. It deliberately ships no axes, no labels, no legends, no interaction and no 3D. If you need those, you write them. That is a fair trade for a signal viewer and a poor one for a product dashboard.

uPlotwebgl-plotProEssentialsJS
renders withCanvas2DWebGLCanvas2D and WebGPU, from WebAssembly
axes, labels, legendsyesnoyes
interactionyesnoyes
3D, surfaces, contoursnonoyes
print and exportnonoyes
licenceMITMITfree under $250K, then perpetual

Our own performance work, with the conditions every number was measured under, is on the fastest JavaScript chart page. We are not going to restate it here, because a speed claim without its conditions is not a measurement.

Best free for commercial use: ProEssentialsJS

Most commercial free tiers are not free for commercial use. They are free for evaluation, or for non-commercial projects, or free with a watermark. Two vendors give a genuine commercial grant with a threshold, and this is the whole comparison.

ProEssentialsJSSyncfusion Community
annual gross revenueunder $250,000under $1,000,000
developersno limit5 or fewer
total employeesno limit10 or fewer
outside investment takenno testnever more than $3,000,000
watermarknonenone
expirynonenone
redistribution includedyesyes

Syncfusion allows four times our revenue, and that is a real advantage. All four of their conditions must be true at the same time, which is where the difference shows up.

companyProEssentialsJSSyncfusion
20 people, $200,000 revenuefreeno, over the 10 staff limit
8 developers, pre revenuefreeno, over the 5 developer limit
raised a $5M seed, $100,000 revenuefreeno, over the funding cap

The third case is the common one. A venture funded startup is disqualified from Syncfusion's community licence on the day the round closes, whatever its revenue. ProEssentialsJS applies one test, revenue, and counts nothing else. There is no headcount test and no funding test.

Redistribution is included, so the engine ships inside your application with no per unit fee and no reporting. Full terms are on the licence page and the ladder is on pricing.

Best free for students and teaching: ProEssentialsJS

Quoting section 3 of the agreement directly:

"Personal and non-commercial use is free. An individual may use the Software at no charge for personal projects, study, hobby or research, or for any other purpose that is not Commercial Use, without time limit."

"Teaching and learning are free at any revenue level. An educational institution accredited by the relevant national or regional authority, together with its enrolled students and its faculty, may use the Software at no charge for classroom instruction, for coursework, and for academic research, whatever the institution's Annual Gross Revenue."

ProEssentialsJSSciChartHighchartsLightningChart
classroom and courseworkfreefreefreefree, on application
academic researchfree at any institution revenuefreeunfunded research onlyfree, on application
watermarknoneyesnoneyes
stops workingneverafter 6 monthsneverafter 1 year
sell a course or book about itfreeattribution requirednot statedattribution sentence required
application and proof of enrolmentnot requirednot requirednot requiredrequired, reviewed
how a university gets accessthe licence already grants itfree academic licencefree education licencerequest a university licence

Check the timeout before a final year project. SciChart's Community Edition requires the latest version or the application stops functioning after six months. A capstone built in the autumn can be dead by the demo.

Two more terms from LightningChart's student licence, both worth knowing before a thesis depends on them. Their Article V requires students to describe the project they intend to build, and states that those projects "can and will be used by LightningChart in their official communications". Article VII requires a specific credit line in the work itself.

Chart.js, ECharts, Plotly and uPlot need no clause at all and never expire, so they are honest competition here too. What a student gets from ProEssentialsJS is the same engine, the same API and the same C++ core their employer is likely to license later.

Best free for 3D surfaces

Two free options draw a real 3D surface, and both are worth trying before paying anyone.

librarysurfacenotes
Apache ECharts, with echarts-glyes, WebGLsurface3D, function based and parametric, Apache 2.0
Plotly.jsyes, WebGLsurface trace, MIT, 3.6 MB full bundle
ChartGPUyes, WebGPUMIT, pre 1.0, and WebGPU only with no fallback
ProEssentialsJSyes, WebGPUsame surface control as the desktop product

Run the 3D surface demo and compare. It needs no sign up and installs nothing.

Best free for 2D filled contours

This is a thinner field than the surface one, and the distinction matters. A contour primitive and a contour chart are different things.

free optionwhat it actually is
d3-contourmarching squares to SVG polygons. A primitive, not a chart
Observable Plota contour mark built on d3-contour, same CPU path
Plotly.jsa contour trace, outside its WebGL trace family
VTK.jsreal iso-contouring, but a scientific toolkit rather than a chart, with no axis and legend layer
ChartGPUcontour isolines drawn on a 3D surface. Not a 2D contour chart type

ProEssentialsJS treats contours as a chart, with contour legends, colour sets, colour blending, precision control and manual contour ranges rather than a fixed ramp. If you need axes, a legend and a readable scale around a filled contour, the free field is mostly primitives you would assemble yourself.

Best free for many charts on one page

This one is architectural rather than a matter of tuning. Browsers cap how many WebGL contexts a single page may hold, commonly eight to sixteen. It is a browser limit, not a library defect, and every WebGL based charting library inherits it. Plotly documents the ceiling at eight charts on one page before the context is lost.

ProEssentialsJS draws 2D with Canvas2D, which has no equivalent cap. A dashboard of many 2D charts is the case this matters for. Our 3D uses WebGPU, which has its own limits, so the point is about 2D charts specifically.

uPlot is Canvas2D as well and shares this advantage, so it is not ours alone. On a page of many simple line charts it is a genuine alternative. The difference is what each chart can be, since uPlot ships no 3D, no surfaces, no contours and no print.

Best free for engineering and science

Two things engineers need that hobby libraries skip.

Printing and export. The right click menu switches to monochrome, changes plotting methods, adds a data table, and exports WYSIWYG image and print output with a font size slider, so a chart going into a report or a paper can be sized to fit.

Contours and surfaces, covered above, with contour legends, precision control and manual contour ranges rather than a fixed colour ramp.

The engine has been in continuous development since 1993 and the same code draws the WinForms, WPF, WinUI, MFC and JavaScript versions. How that works is on the WebAssembly charting engine page.

Best free with ground truth AI assistance

An assistant writing charting code against a commercial library has a problem the open source libraries do not have. Chart.js and D3 are in the training data. A commercial engine is not, so the model guesses property names and invents plausible ones, and the developer debugs a property that never existed.

ProEssentialsJS ships a public, machine readable API knowledge base built for this, at github.com/GigasoftInc/proessentials-ai-data, and it is in the desktop installer as well. The files are budgeted by token count so an assistant can load exactly the topic it needs, for example the axis formatting file at about 1,100 tokens and the full C++ API reference at about 17,200. A query tool resolves an API name to its exact property, its controls and its description rather than to an approximation.

pe_query and JavaScript development are fully supported. More is on the AI code assistant page.

Worst value free tier: the watermark and timeout group

Four vendors advertise a free tier that carries a mark on every chart, a clock, or both.

vendorthe catch
amCharts 5all features, amCharts watermark on every chart
ZingChartwatermark and a link, required at all times
FusionChartswatermarked, personal projects only
SciChart Communitywatermark, non-commercial only, stops working after 6 months
LightningChart JSwatermark, non-commercial only. The free student licence expires after a year

None of these are bad libraries. The point is narrower. If the free tier exists to make you buy, read what it costs you before you build on it.

The whole field, by licence model

librarylicencefree tierwatermarkother limits
Chart.jsMITfree forever, any revenuenonenone
Apache EChartsApache 2.0free forever, any revenuenonenone
D3.jsISCfree forever, any revenuenonenone
Plotly.jsMITfree forever, any revenuenonenone
ApexChartsMITfree forever, any revenuenonenone
uPlotMITfree forever, any revenuenonenone
webgl-plotMITfree forever, any revenuenoneno axes, labels or legends
TimeChartMITfree forever, any revenuenonestreaming line data only
ChartGPUMITfree forever, any revenuenoneWebGPU only, no fallback, pre 1.0
ProEssentialsJScommercialfree commercial under $250Knonenone
Syncfusioncommercialfree commercial under $1Mnone5 devs, 10 staff, $3M funding
amCharts 5commercialfree, all featureswatermark on every chartnone
ZingChartcommercialfree, all chartswatermark and linknone
FusionChartscommercialfree, personal projectswatermarkno commercial use
SciChartcommercialfree, non-commercial onlywatermarkstops working after 6 months
Highchartscommercialfree, non-commercial onlynone$176 per dev per year after
LightningChart JScommercialfree, non-commercial onlywatermark30 day commercial trial
Kendo UIcommercialno free tier, 45 day trialnone$899 per user

How to check this page

Every row above came from a public page. Read them rather than trusting this one, and tell us if any has changed.

support.scichart.com, community licensing termshighcharts.com/education and shop.highcharts.comsyncfusion.com/products/communitylicenselightningchart.com/free-license-for-students, student EULA articles I, IV, V, VI and VIIgigasoft.com/license, section 3

Licence terms change. Every claim here was read on 2026-09-02 and the vendor is the authority, not us. If you find a row that is out of date, tell us and it gets fixed.

Try the engine before deciding. Three demos run the real build with no sign up: the example browser, the real time demo, and the 3D surface demo. The library itself is npm install proessentials, and the JavaScript chart library page covers getting it onto a page.

我们的任务

我们的首要目标是通过为您的机构和终端用户提供最简单、最专业的服务,达成您的成功。

我们是工程师

ProEssentials是由需要自定义图表组件的专业电气工程师创立的。加入使用ProEssentials的顶级工程公司名单。

谢谢

感谢您成为ProEssentials的客户,也感谢您研究ProEssentials图表引擎。