Discover / Design

Plotly.js

by plotlyJavaScript

High-level charting library for interactive scientific graphs.

Repositorystable

Maturity: stable because 11y old, v3.7.0 released 31d ago. Derived from release and commit history, not a rating.

Stars
18k
Forks
2.0k
Downloads / mo
3.2M
Last commit
2026-07-31
License
MIT
Open issues
824

Market and trust evidence

Edition not yet matched

No exact skills.sh identity match is available for this repository. Repository adoption and freshness remain visible above; install momentum is not inferred.

Trust analysis is a screening signal, not a security warranty. Read the ranking and trust methodology.

In practice

Written by AI from this repository’s README · high confidence

Covering many chart families, including WebGL and maps, usually means combining several separate libraries.

Use it when

When you need a wide range of chart types in the browser, loaded as a node module or from a CDN script tag.

Not the right pick when

The complete bundle is heavy, so the README steers you to partial official bundles or custom bundles to control size.

Capabilities

  • dozens of chart types including statistical, 3D and scientific charts
  • SVG and tile maps plus financial charts
  • load as a node module or via a CDN script tag
  • complete and partial official bundles on npm and the CDN
  • custom bundles to optimize bundle size
  • MathJax version two or three support for typeset labels

Cost: Free and open source

Install

Derived from the published package name in the repository, not from a model.

Video walkthroughs

Third-party YouTube uploads matched to this tool by title, channel and repository name on 2026-08-03. Not made, reviewed or endorsed by SkillPilot. View counts and publish months are as of the match date and the month is approximate. Nothing loads from YouTube until you press play.

What the repository ships

Has testsSecurity policyCI configured

Detected from the actual files in the repository root.

Latest release v3.7.0

Published 2026-07-03

Changed

  • Update sendDataToCloud modebar button to upload chart to Plotly Cloud [#7802, #7852, #7854]
  • NOTE: The Plotly Cloud endpoint for receiving charts is not yet functional, so this button won't complete the upload.

Fixed

  • Fix stale scattergl error bars after toggling traces with mixed error bar visibility [#7773], with thanks to @JulienIcon for the contribution!
  • Fix "unrecognized GUI edit: selections[0]..." warnings emitted after making a box or lasso selection and then calling Plotly.react() [#7836]
  • Fix geo fitbounds to choose a compact longitude range when point data straddles the antimeridian [#7837], with thanks to @SharadhNaidu for the contribution!
  • Preserve XML structural entities during decode when exporting SVG [#7838]
  • Fix Plotly.Fx.hover crash on scattermap traces when called programmatically with a pointNumber selection [#7882]

Tags

README

<a href="https://plotly.com/javascript/"><img src="https://images.plot.ly/logo/plotlyjs-logo@2x.png" height="70"></a>

npm version

CI

MIT License

Plotly.js is a standalone JavaScript data visualization library, and it also powers the Python and R modules named plotly in those respective ecosystems (referred to as Plotly.py and Plotly.R).

Plotly.js can be used to produce dozens of chart types and visualizations, including statistical charts, 3D graphs, scientific charts, SVG and tile maps, financial charts and more.

<p align="center">

<a href="https://plotly.com/javascript/" target="_blank">

<img src="https://raw.githubusercontent.com/cldougl/plot_images/add_r_img/plotly_2017.png">

</a>

</p>

Contact us for Plotly.js consulting, dashboard development, application integration, and feature additions.

<div align="center">

<a href="https://dash.plotly.com/project-maintenance">

<img src="https://dash.plotly.com/assets/images/maintained-by-plotly.png" width="400px" alt="Maintained by Plotly">

</a>

</div>

Table of contents

  • Load as a node module
  • Load via script tag
  • Bundles
  • Alternative ways to load and build plotly.js
  • Documentation
  • Bugs and feature requests
  • Contributing
  • Notable contributors
  • Copyright and license
  • Community

Load as a node module

Install a ready-to-use distributed bundle


npm i --save plotly.js-dist-min

and use import or require in node.js


// ES6 module
import Plotly from 'plotly.js-dist-min'

// CommonJS
var Plotly = require('plotly.js-dist-min')

You may also consider using plotly.js-dist if you prefer using an unminified package.


Load via script tag

The script HTML element

In the examples below, the Plotly object is added to the window scope by the script tag. The newPlot method is then used to draw an interactive figure as described by data and layout into the desired div here named gd. As demonstrated in the example above, basic knowledge of HTML and JSON syntax is enough to get started, i.e., with or without JavaScript! To learn and build more with plotly.js, please visit the plotly.js documentation.


<head>
    <script src="https://cdn.plot.ly/plotly-3.7.0.min.js" charset="utf-8"></script>
</head>
<body>
    <div id="gd"></div>

    <script>
        Plotly.newPlot("gd", /* JSON object */ {
            "data": [{ "y": [1, 2, 3] }],
            "layout": { "width": 600, "height": 400}
        })
    </script>
</body>

Alternatively, you may consider using native ES6 import in the script tag.


<script type="module">
    import "https://cdn.plot.ly/plotly-3.7.0.min.js"
    Plotly.newPlot("gd", [{ y: [1, 2, 3] }])
</script>

Fastly supports Plotly.js with free CDN service. Read more at <https://www.fastly.com/open-source>.

Un-minified versions are also available on CDN

While non-minified source files may contain characters outside UTF-8, it is recommended that you specify the charset when loading those bundles.


<script src="https://cdn.plot.ly/plotly-3.7.0.js" charset="utf-8"></script>

Please note that as of v2 the "plotly-latest" outputs (e.g. https://cdn.plot.ly/plotly-latest.min.js) will no longer be updated on the CDN, and will stay at the last v1 patch v1.58.5. Therefore, to use the CDN with plotly.js v2 and higher, you must specify an exact plotly.js version.

MathJax

You can load either version two or version three of MathJax files. For example:


<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG.js"></script>

<script src="https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/tex-svg.js"></script>

When using MathJax version 3, it is also possible to use chtml output on the other parts of the page in addition to svg output for the plotly graph.

Please refer to devtools/test_dashboard/index-mathjax3chtml.html to see an example.

Need to have several WebGL graphs on a page?

You may simply load the virtual-webgl script for WebGL 1 (not WebGL 2) before loading other scripts.


<script src="https://unpkg.com/virtual-webgl@1.0.6/src/virtual-webgl.js"></script>

Bundles

There are two kinds of plotly.js bundles:

  1. Complete and partial official bundles that are distributed to npm and the CDN, described in the dist README.
  2. Custom bundles you can create yourself to optimize the size of the bundle depending on your needs. Please visit CUSTOM_BUNDLE for more information.

Alternative ways to load and build plotly.js

If your library needs to bundle or directly load plotly.js/lib/index.js or parts of its modules similar to index-basic in some other way than via an official or a custom bundle, or in case you want to tweak the default build configurations, then please visit BUILDING.md.


Documentation

Official plotly.js documentation is hosted at https://plotly.com/javascript.

These pages are generated by the Plotly graphing-library-docs repo built with Jekyll and publicly hosted on GitHub Pages.

For more info about contributing to Plotly documentation, please read through contributing guidelines.


Bugs and feature requests

Have a bug or a feature request? Please open a Github issue keeping in mind the issue guidelines. You may also want to read about how changes get made to Plotly.js.


Contributing

Please read through our contributing guidelines. Included are directions for opening issues, using plotly.js in your project and notes on development.


Notable contributors

Plotly.js is at the core of a large and dynamic ecosystem with many contributors who file issues, reproduce bugs, suggest improvements, write code in this repo (and other upstream or downstream ones) and help users in the Plotly community forum. The following people deserve special recognition for their outsized contributions to this ecosystem:

| Contributor | GitHub | Status |

|-------------|--------|---------|

|Alex C. Johnson| @alexcjohnson | Active, Maintainer |

|Emily Kellison-Linn | @emilykl | Active, Maintainer |

|Cameron DeCoster | @camdecoster | Active, Maintainer |

|Mojtaba Samimi | @archmoj | Active, Community Contributor |

|My-Tien Nguyen| @my-tien | Active, Community Contributor |

|Birk Skyum| @birkskyum | Active, Community Contributor |

|Étienne Tétreault-Pinard| @etpinard | Hall of Fame |

|Antoine Roy-Gobeil | @antoinerg | Hall of Fame |

|Jack Parmer| @jackparmer | Hall of Fame |

|Nicolas Kruchten | @nicolaskruchten | Hall of Fame |

|Mikola Lysenko| @mikolalysenko | Hall of Fame |

|Ricky Reusser| @rreusser | Hall of Fame |

|Dmitry Yv. | @dy | Hall of Fame |

|Jon Mease | @jonmmease | Hall of Fame |

|Robert Monfera| @monfera | Hall of Fame |

|Robert Möstl | @rmoestl | Hall of Fame |

|Nicolas Riesco| @n-riesco | Hall of Fame |

|Miklós Tusz| @mdtusz | Hall of Fame |

|Chelsea Douglas| @cldougl | Hall of Fame |

|Ben Postlethwaite| @bpostlethwaite | Hall of Fame |

|Hannah Ker | @hannahker | Hall of Fame |

|Chris Parmer| @chriddyp | Hall of Fame |

|Alex Vados| @alexander-daniel | Hall of Fame |


Copyright and license

Code and documentation copyright 2025 Plotly, Inc.

Code released under the MIT license.

Versioning

This project is maintained under the Semantic Versioning guidelines.

See the Releases section of our GitHub project for changelogs for each release version of plotly.js.


Community

  • Follow us on X and LinkedIn for the latest Plotly news.
  • Implementation help may be found on our community forum (tagged plotly-js) or

on Stack Overflow (tagged plotly.js).

  • Developers should use the keyword plotly on packages which modify or add to the functionality of plotly.js when distributing through npm.

Related tools