# igraph: C library for network analysis with R, Python and Mathematica interfaces

> igraph is a C library for complex network analysis and graph theory, emphasising efficiency, portability and ease of use. The R, Python and Mathematica interfaces each live in a separate repository, and the README sends users to igraph.org for installation instructions.

**igraph/igraph** — Library for the analysis of networks

- Repository: https://github.com/igraph/igraph
- Website: https://igraph.org
- Stars: 2,011 · Forks: 448
- Language: C
- License: GPL-2.0
- Published: 2026-10-11 · Updated: 2026-10-11 · Language: en
- Canonical page: https://hysenlabs.com/projects/igraph-igraph

## C library at the center, with three language-specific interfaces in separate repositories

igraph is a C library for complex network analysis and graph theory, with an emphasis on efficiency, portability and ease of use. Source lives in the src/ and include/ directories of this repository.

Three language interfaces are listed in the README, and all three are maintained in separate repositories. R users work through rigraph, hosted at github.com/igraph/rigraph. Python users work through python-igraph, at github.com/igraph/python-igraph. Mathematica users work through IGraphM, at github.com/szhorvat/IGraphM.

That structure matters when deciding which codebase to track for a bug report or a feature request. If your work is in Python, the python-igraph repository is where language-level issues belong, not here. Algorithm implementations live in the C repository's src/ directory, and all three language interfaces build on top of that core. Maintenance, versioning and documentation are handled independently for each interface.

## CMake drives the build, with separate MSVC support and a pkg-config template

No installation instructions appear in the README itself. It directs users to igraph.org for both build steps and documentation. An INSTALL file is present at the repository root and may hold notes for building from source, though the primary pointer is the website.

CMake is the build system. CMakeLists.txt at the root is the top-level project file, and for developers targeting the Microsoft Visual C++ toolchain on Windows, an msvc/ directory provides a specific build path for that toolchain.

igraph.pc.in at the root is a pkg-config template. Once igraph is installed, a system that supports pkg-config can use the generated file to locate headers and link flags without manual configuration, which matters when adding igraph as a dependency in C projects that already use pkg-config. Example code is in examples/simple/ and examples/tutorial/.

## Azure Pipelines and GitHub Actions carry active badges; Travis CI configuration is also present

Three continuous integration configurations coexist in the repository. Azure Pipelines is set up through a .azure/ directory and an azure-pipelines.yml file at the root. GitHub Actions runs through workflows in the .github/ directory. A .travis.yml file is also present, which is the Travis CI configuration format.

Only Azure Pipelines and GitHub Actions have build-status badges in the README. No Travis CI badge appears there. All three configuration files are versioned in the repository, and the codecov.yml file at the root handles code coverage reporting alongside the CI runs.

A fuzzing/ directory indicates fuzz testing as a practice separate from the standard test suite in tests/. A .pre-commit-config.yaml file defines pre-commit hooks for code quality checks, and a .devcontainer/ directory provides a standardised development container for contributors working in container-based editors.

## The 2006 citation request applies to researchers, backed by two machine-readable formats

Researchers who use igraph are asked to cite the paper by Csardi and Nepusz titled 'The igraph software package for complex network research,' published in InterJournal, Complex Systems. That request is for academic attribution and applies to research publications rather than to software deployment. No clause in the README extends the citation request beyond academic work.

Two machine-readable citation formats are in the repository. CITATION.cff is the GitHub-supported citation metadata file, present at the root. A .zenodo.json file drives integration with Zenodo, and the README carries a DOI badge linking to the Zenodo record. Both files point researchers toward the same publication, keeping the citation target consistent.

CONTRIBUTORS.md, CONTRIBUTORS.txt, AUTHORS and ACKNOWLEDGEMENTS.md each document contributors in different formats. igraph is described in the README as a collaborative work of many people from all around the world.

## What the interfaces/ and vendor/ directories indicate about the C core's structure

At the top level, interfaces/ is a directory separate from the three external language repositories listed in the README. Its presence inside the C repository means that some code relevant to the language binding build process lives alongside the core C implementation rather than entirely in the external repos.

vendor/ at the root bundles some C dependencies with the source. Bundling means those dependency versions are fixed to whatever is in the tree, which has implications for both build reproducibility and for tracking security updates to vendored code.

An .astylerc file is also present, which is an Artistic Style formatter configuration that sets C code formatting rules for contributors. An .editorconfig file at the root defines editor-level formatting defaults. Version 1.0.0 and 0.10.17 were both published on 2025-09-19, about ten hours apart, with 1.0.1 following on 2025-12-26; the code is distributed under GPL-2.0.

## Algorithm scope comes from the repository topics, not from the README

Repository topics for igraph include c, complex-networks, graph-algorithms, graph-theory, mathematics, network-analysis and network-graph. None of those topics is accompanied by a list of specific algorithms in the README. No function names, no API surface and no description of which graph metrics or operations are available appear in the README text.

Documentation for the algorithm set lives at igraph.org. That is where the README's pointer for installation also leads, so both the build steps and the API reference are at the website rather than in the repository. A doc/ directory exists at the repository root and holds documentation source, but the README gives no breakdown of its contents.

For any project evaluating igraph, igraph.org is the only path the README itself identifies. Checking the algorithm list there before committing to igraph as a dependency is necessary, because the README cannot substitute for it.

## ONEWS alongside NEWS in the root: a detail the README does not explain

NEWS and ONEWS both appear in the repository's top-level directory as distinct named files. Two files with nearly the same name in the same directory is a detail visible only by reading the directory listing, and the README makes no reference to either of them.

Neither file is a subdirectory or an archive of the other. A project that retains ONEWS as a file in the root rather than folding its entries into a single history has not merged those two files. The repository offers no explanation for why both exist rather than one.

A VERSIONING.md file also sits at the root, establishing a written versioning policy, though the README does not link to it. For contributors, CONTRIBUTING.md explains how to participate and SUPPORT.md documents where to get support. All three files sit at the root without any mention in the README.

## Conclusion

igraph is a good fit for researchers and engineers who need an established C library for network analysis and graph theory, and for whom R, Python or Mathematica access via the wrapper projects is sufficient. It is not the right choice when you expect an algorithm reference in the source repository, when you need installation steps without an external website, or when a multi-repository setup for core and language wrappers adds overhead your team cannot absorb. Before adopting igraph, verify that the specific algorithms you need are covered at igraph.org, since the README provides no function list.

## FAQ

### What is igraph?

igraph is a C library for complex network analysis and graph theory, with emphasis on efficiency, portability and ease of use. It has separately maintained interfaces for R, Python and Mathematica.

### Does igraph have a Python interface?

Yes. python-igraph is a separate project at github.com/igraph/python-igraph. It wraps the C library and is maintained in its own repository.

### How do I install igraph?

The README directs users to igraph.org for installation steps. CMakeLists.txt at the repository root is the CMake project file, and an INSTALL file is also present.

### What licence does igraph use?

igraph is distributed under GPL-2.0, and the COPYING file at the repository root contains the licence text.

### Where is the igraph API documentation?

igraph.org is where the README points for both installation instructions and documentation. A doc/ directory exists in the repository root, but the README itself contains no API reference.

## Sources

- [igraph/igraph on GitHub](https://github.com/igraph/igraph)
- [License: GPL-2.0](https://github.com/igraph/igraph/blob/main/LICENSE)
- [Project website](https://igraph.org)
- [README](https://github.com/igraph/igraph/blob/main/README.md)
- [Releases](https://github.com/igraph/igraph/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/igraph-igraph
