← All comparisons

Chart.ts vs Plotly.js

Plotly.js is a scientific charting library popular in data science. It supports 65+ chart types but ships an enormous bundle and is primarily designed for Python/R workflows, not modern JavaScript frameworks.

FeatureChart.tsPlotly.js
Bundle size<15kb min+gzip (entire library)~1MB min+gzip (full), ~300kb partial
Tree-shakingFull (import only what you use)Partial bundles available but still very large
TypeScriptBuilt-in, strict mode, full inferenceCommunity types (@types/plotly.js)
SSRNative SSR, works with any frameworkNot supported (DOM-dependent)
AccessibilityWCAG AA, keyboard nav, screen readers, pattern fillsBasic
Tailwind CSSNative className on every element, dark: variantsNot supported (imperative config)
Chart types65+ built-in (52 core + 13 WebGL/3D)40+ (including 3D, maps)
FrameworksReact, Vue, Svelte, Solid, Angular, Vanilla JSReact wrapper (react-plotly.js)
LicenseMITMIT
RenderingTriple engine: SVG + Canvas + WebGL (auto-switching at 10k/100k points)SVG + WebGL (for scatter)
Real-TimeBuilt-in streaming, WebSocket, SSE, HTTP polling via @chartts/websocketPlotly.extendTraces()
GPU / 3DWebGL renderer + @chartts/gl with 13 3D chart types (Scatter3D, Surface3D, Globe3D, etc.)WebGL scatter only
Financial@chartts/finance: SMA, EMA, RSI, MACD, Bollinger Bands, ATR, VWAP, Sharpe ratioCandlestick, OHLC
PluginsdefineChartType() with render context, hit testing, custom scalesNo
InteractionsZoom, pan, brush selection, crosshair, linked chartsZoom, pan, hover
Advanced ChartsSankey, treemap, sunburst, chord, geo maps, network graphs, 3D globe40+ types (3D, maps, sankey)
Theme Presets34 presets (Nord, Dracula, Catppuccin, Tokyo Night, Material, etc.)3 templates

Why switch from Plotly.js?

Chart.ts advantages

  • Under 15kb vs 300kb-1MB bundle
  • JavaScript-first, not a Python port
  • Full SSR support vs DOM-dependent
  • Native Tailwind CSS integration
  • Full WebGL/3D (not just scatter)

Plotly.js limitations

  • Enormous bundle size (~1MB full, ~300kb partial)
  • Python/R-first ecosystem, JS is secondary
  • No SSR support, requires DOM
  • Not Tailwind-native, imperative config objects
  • No tree-shaking for individual chart types

Ready to switch?

Get started with Chart.ts in 30 seconds.

$npm install @chartts/core