About This Documentation

This document contains a user guide and automatically generated API documentation for QuTiP. A PDF version of this text is available at the documentation page.

For more information see the QuTiP project web page.


J.R. Johansson


P.D. Nation


Alexander Pitchford


Arne Grimsmo


Chris Grenade


Nathan Shammah


Shahnawaz Ahmed


Neill Lambert


Eric Giguere


Boxi Li


Jake Lishman


Simon Cross




The text of this documentation is licensed under the Creative Commons Attribution 3.0 Unported License. All contained code samples, and the source code of QuTiP, are licensed under the 3-clause BSD licence. Full details of the copyright notices can be found on the Copyright and Licensing page of this documentation.

Citing This Project

If you find this project useful, then please cite:

J. R. Johansson, P.D. Nation, and F. Nori, “QuTiP 2: A Python framework for the dynamics of open quantum systems”, Comp. Phys. Comm. 184, 1234 (2013).


J. R. Johansson, P.D. Nation, and F. Nori, “QuTiP: An open-source Python framework for the dynamics of open quantum systems”, Comp. Phys. Comm. 183, 1760 (2012).

which may also be downloaded from or, respectively.


QuTiP is developed under the auspice of the non-profit organizations:


QuTiP was partially supported by


About QuTiP

Every quantum system encountered in the real world is an open quantum system. For although much care is taken experimentally to eliminate the unwanted influence of external interactions, there remains, if ever so slight, a coupling between the system of interest and the external world. In addition, any measurement performed on the system necessarily involves coupling to the measuring device, therefore introducing an additional source of external influence. Consequently, developing the necessary tools, both theoretical and numerical, to account for the interactions between a system and its environment is an essential step in understanding the dynamics of practical quantum systems.

In general, for all but the most basic of Hamiltonians, an analytical description of the system dynamics is not possible, and one must resort to numerical simulations of the equations of motion. In absence of a quantum computer, these simulations must be carried out using classical computing techniques, where the exponentially increasing dimensionality of the underlying Hilbert space severely limits the size of system that can be efficiently simulated. However, in many fields such as quantum optics, trapped ions, superconducting circuit devices, and most recently nanomechanical systems, it is possible to design systems using a small number of effective oscillator and spin components, excited by a limited number of quanta, that are amenable to classical simulation in a truncated Hilbert space.

The Quantum Toolbox in Python, or QuTiP, is an open-source framework written in the Python programming language, designed for simulating the open quantum dynamics of systems such as those listed above. This framework distinguishes itself from other available software solutions in providing the following advantages:

  • QuTiP relies entirely on open-source software. You are free to modify and use it as you wish with no licensing fees or limitations.

  • QuTiP is based on the Python scripting language, providing easy to read, fast code generation without the need to compile after modification.

  • The numerics underlying QuTiP are time-tested algorithms that run at C-code speeds, thanks to the Numpy, Scipy, and Cython libraries, and are based on many of the same algorithms used in propriety software.

  • QuTiP allows for solving the dynamics of Hamiltonians with (almost) arbitrary time-dependence, including collapse operators.

  • Time-dependent problems can be automatically compiled into C++-code at run-time for increased performance.

  • Takes advantage of the multiple processing cores found in essentially all modern computers.

  • QuTiP was designed from the start to require a minimal learning curve for those users who have experience using the popular quantum optics toolbox by Sze M. Tan.

  • Includes the ability to create high-quality plots, and animations, using the excellent Matplotlib package.

For detailed information about new features of each release of QuTiP, see the Change Log.

QuTiP Plugins

Several libraries depend on QuTiP heavily making QuTiP a super-library


Matsubara is a plugin to study the ultrastrong coupling regime with structured baths


QNET is a computer algebra package for quantum mechanics and photonic quantum networks

Libraries Using QuTiP

Several libraries rely on QuTiP for quantum physics or quantum information processing. Some of them are:


Krotov focuses on the python implementation of Krotov’s method for quantum optimal control


pyEPR interfaces classical distributed microwave analysis with that of quantum structures and hamiltonians by providing easy to use analysis function and automation for the design of quantum chips


scQubits is a Python library which provides a convenient way to simulate superconducting qubits by providing an interface to QuTiP


SimulaQron is a distributed simulation of the end nodes in a quantum internet with the specific goal to explore application development


QInfer is a library for working with sequential Monte Carlo methods for parameter estimation in quantum information


QPtomographer derive quantum error bars for quantum processes in terms of the diamond norm to a reference quantum channel


QuNetSim is a quantum networking simulation framework to develop and test protocols for quantum networks


qupulse is a toolkit to facilitate experiments involving pulse driven state manipulation of physical qubits


Pulser is a framework for composing, simulating and executing pulse sequences for neutral-atom quantum devices.

Contributing to QuTiP

We welcome anyone who is interested in helping us make QuTiP the best package for simulating quantum systems. There are detailed instructions on how to contribute code and documentation in the developers’ section of this guide. You can also help out our users by answering questions in the QuTiP discussion mailing list, or by raising issues in the main GitHub repository if you find any bugs. Anyone who contributes code will be duly recognized. Even small contributions are noted. See Contributors for a list of people who have helped in one way or another.