Sigma.js is an open-source JavaScript and TypeScript library for rendering graphs of thousands of nodes and edges in the browser using WebGL, released under the MIT licence and built on top of graphology.
What it is
Sigma.js is a graph-drawing framework published as the npm package sigma. It is written in TypeScript and lives in the browser ecosystem, where it renders interactive network diagrams into a DOM container element. Data comes from graphology: the README shows importing Graph from "graphology" and Sigma from "sigma", adding nodes and edges with attributes such as label, x, y, size and color, and passing the resulting graph instance to new Sigma(graph, document.getElementById("container")). Development is led by @jacomyal and @Yomguithereal.
The concrete problem it addresses is scale. Drawing a network of thousands of nodes and edges through ordinary browser rendering paths becomes slow or unusable, so Sigma.js puts the rendering work on WebGL instead. A development team that would otherwise write and maintain its own WebGL graph renderer, hit-testing layer and camera logic can take the library as a dependency and focus on the data and the surrounding application. The library sits inside a project rather than standing beside it as a service.
Key capabilities
- WebGL rendering targeted at graphs of thousands of nodes and edges, which is the stated purpose of the library.
Sigma constructor that takes a graphology graph instance plus a target container element and mounts the visualization there.
- Node attributes including
label, x, y, size and color, and edge attributes including size and color.
- First-class TypeScript support, with the package used from both JavaScript and TypeScript files.
- Documentation site built with Docusaurus at
sigmajs.org/docs, plus a Storybook at sigmajs.org/storybook.
- A full-featured React-based demo application at
sigmajs.org/demo.
- Monorepo tooling:
npm run createPackage copies packages/template and updates buildable package lists in tsconfig.json and package.json.
Who uses it and how
- Web application teams that add
sigma and graphology as npm dependencies and embed a graph view inside an existing JavaScript or TypeScript front end.
- Product teams that want a reference for a full application built around the library, using the React-based demo as a starting point.
- Developers evaluating rendering behavior before committing, using the Storybook examples and the public demo as a live preview.
- Contributors to the library itself, who clone the repository, run
npm install and npm run start to open a live-reloading Storybook, then submit issue tickets and pull requests after tests and linting pass.
- Maintainers extending the monorepo with new packages through
npm run createPackage.
Getting started
Install the library and its graph dependency with npm install sigma graphology, then import Graph from "graphology" and Sigma from "sigma" and construct a Sigma instance against your container element. To work on the library locally, clone the repository, run npm install and npm run start to launch Storybook.
How it compares
No comparable or paid products are named in the facts provided for this entry, so Sigma.js stands alone in this registry.
When to use it — and when not to
Sigma.js is a rendering library and nothing more: it ships no backend, database, storage layer or hosted interface, so anyone adopting it must already operate the application that serves it and the pipeline that supplies graph data. Rendering depends on WebGL being available in the target browser, which is a hard constraint to check before committing. Version 4 is currently an alpha release available through v4.sigmajs.org and the v4 branch, so teams needing a settled API should stay on the documented stable line, and teams wanting a turnkey analytics dashboard rather than a library to build against should look elsewhere.
project readme (upstream, from github) — read inline


Website | Documentation | Storybook | Mastodon
[!NOTE]
Sigma v4 is now available as an alpha release. See v4.sigmajs.org for the website, or the v4 branch for the source code.
Sigma.js is an open-source JavaScript library aimed at visualizing graphs of thousands of nodes and edges using WebGL, mainly developed by @jacomyal and @Yomguithereal, and built on top of graphology.
How to use in your project
To integrate sigma into your project, follow these simple steps:
Installation: Add sigma and graphology to your project by running the following command:
npm install sigma graphology
Usage: Import sigma into your JavaScript or TypeScript file:
import Graph from "graphology";
import Sigma from "sigma";
Then, create a new Sigma instance with your graph data and target container:
const graph = new Graph();
graph.addNode("1", { label: "Node 1", x: 0, y: 0, size: 10, color: "blue" });
graph.addNode("2", { label: "Node 2", x: 1, y: 1, size: 20, color: "red" });
graph.addEdge("1", "2", { size: 5, color: "purple" });
const sigmaInstance = new Sigma(graph, document.getElementById("container"));
How to develop locally
To run the Storybook locally:
git clone [email protected]:jacomyal/sigma.js.git
cd sigma.js
npm install
npm run start
This will open the Storybook in your web browser, which live reloads when you modify the stories or the package sources.
Resources
- GitHub Project: The source code and collaborative development efforts for Sigma.js are hosted on GitHub.
- Website: The official website, sigmajs.org, kindly designed by Robin de Mourat from the Sciences-Po médialab team, showcases the library's capabilities.
- Documentation: A detailed documentation, built with Docusaurus, is available at sigmajs.org/docs. It provides extensive guides and API references for users.
- Storybook: Interactive examples can be found at sigmajs.org/storybook.
- Demo: A comprehensive demo, available at sigmajs.org/demo, features a full-featured React-based web application utilizing Sigma.js.
How to contribute
You can contribute by submitting issues tickets and proposing pull requests. Make sure that tests and linting pass before submitting any pull request.
You can also browse the related documentation here.
How to start a new package
Run npm run createPackage from the project root. It will:
- Ask you the new package name
- Copy the
packages/template folder
- Update the new package
package.json entries (name, description, exports)
- Update various other files (buildable packages list in
tsconfig.json, Preconstruct compatible packages list in package.json...)