Chart.js

Simple, flexible JavaScript charting for designers and developers

Library
npm
v4.6.1
67,757 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
86 /100 Excellent
Development Activity 80
Maintenance 80
Community 84
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
84 /100 Excellent
Architecture 85
Code Quality 82
Innovation 83
Learning Curve 85

Chart.js is a free, open-source JavaScript library for building responsive, animated charts on the HTML5 canvas element. It ships with eight built-in chart types — line, bar, radar, doughnut/pie, polar area, bubble, and scatter, plus mixed-type charts — along with a plugin architecture that lets you register custom controllers, elements, and scales.

With over 67,000 GitHub stars and roughly 13 million weekly npm downloads, Chart.js is one of the most widely used charting libraries in the JavaScript ecosystem. It works with vanilla JavaScript or any frontend framework via community wrapper packages (react-chartjs-2, vue-chartjs, ng2-charts), and ships type definitions for full TypeScript support out of the box.

What You Get

  • Eight core chart types (line, bar, radar, doughnut/pie, polar area, bubble, scatter) plus mixed-type charts in a single canvas
  • A tree-shakeable module system — import only the controllers, elements, and plugins you use, or pull in chart.js/auto for the full bundle
  • Built-in animation engine, responsive resizing, and accessible tooltip/legend/title plugins with no extra dependencies
  • First-class TypeScript type definitions and a public plugin API for extending charts with custom behavior

Common Use Cases

  • Rendering dashboards and admin panels for analytics products
  • Visualizing time-series and financial data with the time/timeseries scale
  • Embedding lightweight charts in marketing sites or reports where a heavier SVG library is unnecessary
  • Building custom chart types on top of Chart.js’s controller/element primitives

Under The Hood

Architecture Chart.js is built around a central Chart class (src/core/core.controller.js) that owns the render/update lifecycle and delegates type-specific behavior to a set of registered primitives. A Registry singleton (src/core/core.registry.js) maintains TypedRegistry instances for dataset controllers (src/controllers/), scales (src/scales/), elements (src/elements/), and plugins (src/plugins/), so chart types like line, bar, or radar are just controller/element pairs registered at runtime rather than hard-coded into the core. The library exposes both a manual entry point (src/index.ts, which requires calling Chart.register(…)) and an auto entry point (auto/auto.js) that eagerly registers every built-in controller, element, scale, and plugin, trading bundle size for zero-config convenience. Rendering itself goes straight to a canvas 2D context rather than SVG/DOM, coordinated by a dedicated animator (src/core/core.animator.js) that batches per-property animations across all active chart instances via requestAnimationFrame.

Tech Stack The library is written in a mix of vanilla JavaScript and TypeScript (about 89%/11% by bytes per GitHub’s language breakdown) and ships as ESM (dist/chart.js) and CJS (dist/chart.cjs) bundles built with Rollup, plus a UMD build for script-tag usage. Its only runtime dependency is @kurkle/color for color parsing and manipulation. Development tooling includes TypeScript for the ambient .d.ts declarations, ESLint with a project-specific eslint-config-chartjs, and a pnpm workspace (the chart.js core plus a separate docs package) managed under pnpm-workspace.yaml.

Code Quality Testing is extensive: the test/specs directory alone contains hundreds of spec files (586 test-related JS files across the whole test tree) covering every controller, scale, element, and plugin, run through Karma and Jasmine across multiple browsers (Chrome, Firefox, Edge, Safari) via karma.conf.cjs, with a separate test/integration suite that verifies the package works correctly when consumed from Node, TypeScript-Node, and a React browser app. Code style is enforced via ESLint (including a markdown linter for docs) and a lint-types step that runs tsc against the generated declaration files. Naming and structure are consistent across chart types (controller.<type>.js with matching test files), which keeps the large codebase navigable despite its size.

API Design The public API centers on a single new Chart(ctx, config) constructor that takes a canvas or context plus a declarative {type, data, options} config object, with no imperative chart-building calls required for common cases. The chart.js/auto subpath removes the need to call Chart.register() manually for teams that don’t care about bundle size, while the base chart.js entry point supports fully tree-shaken, register-what-you-use imports for teams that do. First-class TypeScript definitions (dist/types.d.ts) give autocomplete on config, scale, and plugin options, and the plugin API’s lifecycle hooks (beforeInit, afterUpdate, etc.) follow a consistent, well-documented naming convention that keeps custom plugin authoring approachable.

Used by 73 apps in this directory

TypeScript
76%
AGPL 3.0

Abby

Developer Tools · Product Management

166

Statically typed feature flags, remote config, and A/B testing with framework-native SDKs for TypeScript teams.

View details
31
Repo Health
70
Technical
64
Dependency
Built with
TypeScript 76%
MDX 18%
Updated 1 years ago
TypeScript
92%
MIT

AI Engineer Coach

Developer Tools

4,350

A VS Code extension that reads your local AI coding session logs and turns them into actionable insights — anti-pattern detection across 45 rules, output tracking by model and harness, and skill discovery, with no data leaving your machine.

View details
70
Repo Health
70
Technical
73
Dependency
Built with
TypeScript 92%
Updated 5 days ago
Python
87%
Apache 2.0

Apache Airflow

Data Engineering

47,268

Define, schedule, and monitor complex data workflows as Python code — with a powerful UI, 80+ provider integrations, and battle-tested scalability across thousands of production deployments.

View details
96
Repo Health
89
Technical
64
Dependency
Built with
Python 87%
Updated 5 days ago
Rust
44%
MIT

Anarlog

AI Assistants · Note Taking · Productivity

9,565

Anarlog is an open-source, local-first AI meeting notetaker that records, transcribes, and summarizes meetings entirely on your device — no cloud lock-in, no mandatory account, and every note saved as a plain markdown file you own forever.

View details
86
Repo Health
77
Technical
65
Dependency
Built with
Rust 44%
TypeScript 41%
Updated 5 days ago
JavaScript
99%
MIT

AnythingLLM

AI Assistants · Automation · Developer Tools

67,496

The all-in-one AI platform for private document chat, no-code agents, and local LLMs with zero setup friction.

View details
91
Repo Health
78
Technical
65
Dependency
Built with
JavaScript 99%
Updated 5 days ago
Go
86%
Apache 2.0

Argo Workflows

Data Engineering · Devops

17,050

The most popular Kubernetes-native workflow engine for orchestrating containerized DAGs, ML pipelines, CI/CD, and parallel batch jobs at scale.

View details
96
Repo Health
90
Technical
68
Dependency
Built with
Go 86%
TypeScript 10%
Updated 6 days ago
Python
56%
Other

authentik

Authentication · Security

26,076

The self-hosted Identity Provider that replaces Okta, Auth0, and Entra ID with a unified SSO platform supporting SAML, OAuth2/OIDC, LDAP, RADIUS, and WebAuthn.

View details
92
Repo Health
81
Technical
66
Dependency
Built with
Python 56%
TypeScript 35%
Updated 6 days ago
Go
58%
Apache 2.0

Authgear

Authentication

2,123

Open-source, self-hostable authentication platform with passkeys, biometric login, SSO, MFA, and GraphQL admin API — a full Auth0/Clerk/Firebase alternative for SaaS and mobile apps.

View details
89
Repo Health
81
Technical
65
Dependency
Built with
Go 58%
HTML 21%
TypeScript 18%
Updated 6 days ago
Python
68%
Other

Baserow

Databases · No Code Platforms

6,205

Open-source no-code platform to build databases, apps, automations, and AI agents — self-hosted or cloud, with full data ownership.

View details
89
Repo Health
84
Technical
65
Dependency
Built with
Python 68%
JavaScript 17%
Vue 10%
Updated 6 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers