JSNetworkX is a port of the popular Python graph library NetworkX. From their website:

NetworkX is a Python language software package for the creation, manipulation, and study of the structure, dynamics, and function of complex networks.

With NetworkX you can load and store networks in standard and nonstandard data formats, generate many types of random and classic networks, analyze network structure, build network models, design new network algorithms, draw networks, and much more.

JSNetworkX aims to bring graph processing to JavaScript, client- and server-side, and to provide an easy way to visualize graphs in the browser.


JSNetworkX currently undergoes a major rewrite (v0.3). This will (hopefully) make it easier for others to contribute and to maintain the library. Some of the upcoming features / changes will be:
  • Node.js first: JSNetworkX will follow CommonJS module syntax and thus make it very easy to be used with Node.js.
  • Web worker support in browsers: Browsers don't allow scripts to run for a long time, however some graph algorithms take some time. To solve this, JSNetworkX will allow to use web workers to do the heavy computations.
  • Changed API conventions: We are changing from this_naming_convention to thisNamingConvention, which is more popular in the JS community.
  • API documentation: We'll finally have automatic code API documentation.

To find out more about the progress, have a look at the issue tracker and the development branch. The plan is to publish prerelease versions to npm as soon as the API documentation process works and the methods are renamed.


JSNetworkX is still in an early stage of development and only part of NetworkX has been fully ported. The API progress page provides a list of methods and modules which are available to use. The base graph classes and SVG drawing are already available.


JSNetworkX and this website make use of various libraries and tools and we want to hereby thank them: