LibSBML is a programming library that helps you read, write, manipulate, translate, and validate SBML files and data streams. The library supports all Levels and Versions of SBML. LibSBML is written in ISO standard C++ and C and provides APIs for the languages C, C++, C#, Java, JavaScript, MATLAB, Perl, PHP, Python, R, and Ruby. It works on Linux, Windows, and MacOS X, and has been known to work on FreeBSD and Solaris in the past.

Please cite the paper if you use libSBML

Article citations are crucial to our ability to justify continued development of libSBML, as well as our academic careers. If you use libSBML and you publish papers about your software, we ask that you please cite the following paper:

LibSBML: An API Library for SBML Bornstein, B. J., Keating, S. M., Jouraku, A., and Hucka M. Bioinformatics, 24(6):880–881, 2008.BibTeX EndNote

Features of libSBML

There are many reasons to prefer libSBML over the direct use of an XML parser. First, libSBML understands all Levels and Versions of SBML, and supports extensions for SBML Level 3 packages. Here are some additional benefits:

  • API for many languages. LibSBML is written in ISO C and C++ but can be used from many other languages.

  • Object model. LibSBML’s object model and API are designed around SBML and the operations that are commonly needed when working with SBML.

  • Features. LibSBML offers powerful features such as reading/writing compressed SBML files, detecting overconstrained models, checking units, an API for SBML <annotation> content, and support for the three most popular XML parser libraries: Xerces, Expat, and libxml2.

  • Validation. LibSBML implements all the validation rules defined in the SBML specifications, and performs additional validation of its own. An API provides control over libSBML’s validation behavior.

  • Portability. The code is highly portable. It’s supported on Linux (multiple variants), Windows (native), MacOS X, and also runs on Solaris and FreeBSD.

LibSBML is available for free under the terms of the LGPL version 2.1 in both source-code form and precompiled binaries for a variety of systems.

Software releases

A stable release includes support for SBML Level 3 Core and all accepted SBML  3 packages, as well as support for packages that are currently under development. An experimental-only release only updates code for the SBML Level 3 packages under development. A full explanation of the libSBML release types and the release schedule can be found on the libSBML release schedule page.

We provide Zenodo DOIs for specific releases, so that you can cite the exact version of the software that you use:

LibSBML authors and contributors

LibSBML’s main authors are Sarah M. Keating, Frank T. Bergmann, Lucian P. Smith, Brett G. Olivier, Akiya Jouraku, Michael Hucka, and Ben Bornstein, with contributions from many other people. We especially thank the following (in alphabetical order):

  • Gordon Ball
  • Bill Denney
  • Alessandro Felder
  • Christoph Flamm
  • Akira Funahashi
  • Ralph Gauges
  • Rainer Machné
  • Martin Ginkel
  • Alex Gutteridge
  • Stefan Hoops
  • Totte Karlsson
  • Moriyoshi Koizumi
  • Ben Kovitz
  • Thomas Pfau
  • Jamie J. Quinn
  • Nicolas Rodriguez
  • Fengkai Zhang

Community and help

If you use libSBML in your software, we encourage you to join the mailing list and web forum, where you can ask questions and discuss the development, use, and interoperability of SBML and software that supports SBML.

There is a also list/forum devoted to discussions about LIBSBML: If you’re using LIBSBML or interested in learning more, feel free to join the group!

You can also reach the main developers directly via email at

Funding acknowledgments

We are immensely thankful to the funding agencies, particularly NIH and DARPA, that have supported the development of libSBML over the years. Please visit our funding acknowledgements page for more information.