Clifft is a fast exact simulator for near-Clifford quantum circuits.
Built and maintained by the Unitary Foundation.
Clifft accepts Stim-format circuits, extends them with non-Clifford gates, and compiles them into symbolic-coordinate sampling plans. It is designed for circuits whose dominant structure is Clifford, but whose behavior depends on localized non-Clifford operations.
The dense active state has 2^k amplitudes, where k is its active width. The
main simulation cost therefore scales with 2^k, rather than directly with the
total number of physical qubits n. Non-Clifford operations can increase k,
while measurements can reduce it.
Clifft's original design established this factored active-state architecture, described in the Clifft paper. SymFT, by Wang Fang, Huazhe Lou, and Riling Li, is the second-generation successor to SOFT. Its planner builds on SOFT's generalized-stabilizer simulation and Clifft's dense active-state representation. SymFT adds symbolic Clifford-Pauli-frame factorization, adaptive stabilizer-coordinate planning, and direct multi-coordinate kernels. Clifft's current sampler adopts these SymFT developments alongside Clifft-specific compiler, continuation, and API machinery. See the theoretical overview for the fuller lineage and implementation boundaries. The symbolic sampling update explains the migration from the original SVM and reports matched release-target benchmarks.
Why Clifft?
- Stim-compatible format and API: parse Stim-format circuits with noise, detectors, observables, and repeat blocks, plus non-Clifford extensions.
- Exact near-Clifford simulation: simulate localized non-Clifford effects without approximating the quantum state.
- Optimizing compiler pipeline: resolve Clifford coordinates and symbolic dependencies once, then sample many shots from a prepared plan.
- Active-width scaling: for low-magic circuits, runtime and memory scale with the localized active state rather than the full Hilbert space.
For QEC workflows, Clifft also supports detector-based post-selection, survivor sampling, and stratified importance sampling for rare-event estimation.
Experimental AMD HIP and NVIDIA CUDA backends are available through an explicit source build and separate APIs. They are not part of the published wheels or selected automatically.
Performance
Clifft reaches millions of attempted shots per second on several complete near-Clifford circuits using one CPU core. Its compiler keeps the dense quantum state small so that exact near-Clifford simulation can approach the throughput usually associated with specialized Clifford tools.
See the Performance guide for comparisons with other simulators, release history, dense Quantum Volume results, and measurement details.
Installation
pip install clifft
| Platform / CPU family | PyPI wheel |
|---|---|
Linux x86_64 with x86-64-v2 support |
Supported |
Linux aarch64 |
Supported |
macOS arm64 |
Supported |
Windows amd64 |
Supported |
All other platforms and CPU families should build from source. See the installation docs.
Quick Start
import clifft
program = clifft.compile("""
H 0
CNOT 0 1
T 2
M 0 1 2
""")
result = clifft.sample(program, shots=1000, seed=42)
print(result.measurements[:5])
Continue with the Quick Start, or use Choose a Workflow to select an API by the result you need. You can also try Clifft in the web-based interactive playground.
Circuit Inputs
| Starting point | Path |
|---|---|
| Stim circuits with Clifft extensions | Use the native clifft API for the broadest feature support. |
| OpenQASM 2 text | Pass input_format="qasm2" for supported unitary circuits. |
Qiskit QuantumCircuit |
Use clifft-qiskit, a Qiskit BackendV2 provider. |
Cirq cirq.Circuit |
Use clifft-cirq, a converter and Cirq-style sampler. |
See Circuit Inputs for installation commands, minimal examples, and current limitations.
Acknowledgments
Clifft has benefited from the following research and software:
- Stim for its circuit format, sampling interfaces, original tableau foundation, and independent validation.
- SOFT and SymFT for generalized-stabilizer simulation, cultivation circuits, symbolic sampling, adaptive coordinate planning, and inspiration for packed execution.
- Tsim for Stim-compatible universal simulation design and open code and data enabling comparisons.
- SqaleSim for motivating the leakage/loss instrument design and providing a five-level neutral-atom model and examples.
- deltakit-stim for inspiring configurable leakage partner effects.
- TOHPE for T-count reduction in the phase-polynomial optimizer.
- Pauli Frame Sparse Representation for the importance-sampling approach used in cultivation analysis.
- Magic-state cultivation for protocols, circuits, data, and analysis tools used in examples and benchmarks.
- xoshiro256++ for the sampling random-number generator.
See Acknowledgments and references for the specific contributions and associated papers, software, and artifacts.
Citation
If you use Clifft in your work, please cite the arXiv preprint below.
@misc{chase2026clifftfastexactsimulation,
title={Clifft: Fast Exact Simulation of Near-Clifford Quantum Circuits},
author={Bradley A. Chase and Farrokh Labib},
year={2026},
eprint={2604.27058},
archivePrefix={arXiv},
primaryClass={quant-ph},
url={https://arxiv.org/abs/2604.27058},
}
Development
See the building from source guide for build instructions.
AI Acknowledgement
We used generative AI tools during parts of the research, software-development, and writing workflow for this project. These tools assisted with code generation and review, implementation analysis, documentation editing, and checks of selected derivations or arguments. All substantive design, validation, and release decisions were made by the human contributors.
Funding
This work was supported by the U.S. Department of Energy, Office of Science, Office of Advanced Scientific Computing Research, Accelerated Research in Quantum Computing under Award Number DE-SC0025336.
This material is also based upon work supported by the U.S. Department of Energy, Office of Science, National Quantum Information Science Research Centers, Quantum Science Center.
License
Apache-2.0
Metadata
Release files for clifft 0.12.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| clifft-0.12.0.tar.gz | 3.7 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| clifft-0.12.0-cp312-abi3-win_amd64.whl | CPython 3.12 | abi3 | Windows x86-64 | Details |
| clifft-0.12.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | abi3 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| clifft-0.12.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl | CPython 3.12 | abi3 | Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 | Details |
| clifft-0.12.0-cp312-abi3-macosx_14_0_arm64.whl | CPython 3.12 | abi3 | macOS 14.0+ ARM64 | Details |
Total release size: 7.9 MB
Release files / clifft-0.12.0.tar.gz
| Download URL | clifft-0.12.0.tar.gz |
|---|---|
| Size | 3.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a2141386202979bb42e097928c3301fc33117bae9da8cbf658c437446abf0dbc
|
|
BLAKE2b-256 checksum How to use checksums |
a53e095caf77b3c6cfbcaff3ac6a510c9e06a92821ee81b24f3e552ea2331c54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logRelease files / clifft-0.12.0-cp312-abi3-win_amd64.whl
| Download URL | clifft-0.12.0-cp312-abi3-win_amd64.whl |
|---|---|
| Size | 930.8 kB |
| Tags | CPython 3.12 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
49edcca4933721eae5422b2876b786ab9813e713ef54740d73f5363dc4948145
|
|
BLAKE2b-256 checksum How to use checksums |
b7fa751828d3e20bad57be56b44e1f15e23c0dc8c641eedce4e0b4b6eaf3603a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logRelease files / clifft-0.12.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | clifft-0.12.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
19c322fd79fbaf83e4707578ae989c99234a4aecf3c0dd034063a92110f10176
|
|
BLAKE2b-256 checksum How to use checksums |
b6af26604b5a034ade96945b7f7336003d9f5fe054dd170930e20356e23add5d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logRelease files / clifft-0.12.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | clifft-0.12.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
925fd9d99008dfafe8bd937362043ab8fb91c509c1ebf6b8b7aa2175d9e7f313
|
|
BLAKE2b-256 checksum How to use checksums |
e6a532738e11e6361fb41b50d3e4e4b502dbedda7d746fa9bf267f7ee25b7b6e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logRelease files / clifft-0.12.0-cp312-abi3-macosx_14_0_arm64.whl
| Download URL | clifft-0.12.0-cp312-abi3-macosx_14_0_arm64.whl |
|---|---|
| Size | 756.2 kB |
| Tags | CPython 3.12 abi3 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
9734352666d979bb8feb8c72e22abcab967c4291d4c2a33cab03aa33b757389d
|
|
BLAKE2b-256 checksum How to use checksums |
8e7273574e59231c08366e63cff9f279ff89e0cd209c1ca9057783207528ad5b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency log