# Caliper benchmarks Fabric with a fixed set of performance metrics

> Hyperledger Caliper is a blockchain benchmarking framework that runs predefined use cases and reports success rate, throughput, latency and resource consumption. The metrics follow the PSWG white paper, and the current supported chain list names only Fabric v2.X, which narrows what the multi-chain framing still buys you.

**hyperledger-caliper/caliper** —  A blockchain benchmark framework to measure performance of multiple blockchain solutions https://wiki.hyperledger.org/display/caliper

- Repository: https://github.com/hyperledger-caliper/caliper
- Website: https://hyperledger-caliper.github.io/caliper/
- Stars: 708 · Forks: 414
- Language: JavaScript
- License: Apache-2.0
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/hyperledger-caliper-caliper

## Success rate, throughput, latency and resource use

Caliper's value is that it makes performance numbers comparable. The framework lets users test different blockchain solutions with predefined use cases and produces a set of performance test results, and the indicators it currently reports are a fixed list: success rate, transaction and read throughput, transaction and read latency in its minimum, maximum and average forms, and resource consumption covering CPU, memory and network IO. Those are not invented metrics. The project points at the PSWG white paper on blockchain performance metrics for the definitions and the corresponding measurement methods, which matters for anyone reading a Caliper report next to someone else's. In practice the framework is a harness rather than a load generator you point at any endpoint. It owns the workload definitions, the measurement of the results and the reporting format, and a connector supplies the specific blockchain API. That division is the reason the numbers can be compared between runs, and it is also the reason the supported chain list matters so much.

## The supported chain list currently names only Fabric v2.X

Here is where the project's framing and its current state diverge, and any evaluation should start here. Caliper is described as a framework for testing different blockchain solutions, yet the supported list in the README currently contains a single entry: Hyperledger Fabric v2.X, with the deprecated Network SDK and the Gateway SDK named in parentheses. No other ledger appears. That is a real narrowing for a project whose whole premise is cross-chain comparison, and it changes what you can do with it today. A team that wants to compare Fabric against another ledger has no second adapter to point at in the current documentation. A team working only with Fabric v2.X, through the Gateway SDK, is in the supported path and gets the full value of the framework. The README also hints at the practical difficulty of the wider ambition, noting that Caliper interacts with multiple blockchain technologies and that a problem may in fact be with the underlying technology rather than with Caliper, which is why the Fabric and Besu channels on the same Discord server exist. Besu appears there as a channel, not as a supported adapter.

## A monorepo of packages with a separate json-schema tree

The repository layout explains how the framework is put together. The root is a private, private-flagged npm workspace whose name is caliper and whose version reads 0.7.2-unstable, and the actual code lives under packages/, with a separate json-schema/ directory at the top level for the configuration files that describe a benchmark, plus docs/ and dev-docs/ for the documentation site, scripts/ for maintenance tasks, and a .devcontainer/ directory for a containerised development environment. The root also carries the governance files you would look for in a Hyperledger project: CODEOWNERS, MAINTAINERS.md, CODE_OF_CONDUCT.md, CONTRIBUTING.md, SECURITY.md, ISSUE_TEMPLATE.md, PULL_REQUEST_TEMPLATE.md and RELEASE_PROCESS.md. The .build/ directory and the presence of both LICENSE and LICENSE.txt at the root reflect the licensing tooling discussed further down. The split between packages and json-schema is worth internalising, because the configuration your benchmark run depends on is described by schemas that live outside the runtime packages, and an invalid or outdated configuration file is the sort of thing that fails with a schema error rather than a runtime one.

## Node 22 and the workspace scripts that keep licences honest

The root package.json defines the toolchain and the checks that run in CI, and it is short enough to read in full.

```json
    "scripts": {
        "pretest": "npm run licchk --workspaces",
        "licchk": "license-check-and-add",
        "test": "npm run test --workspaces",
        "version-fix": "node ./packages/caliper-publish/publish.js version fix",
        "force-clean": "./scripts/force-clean.sh"
    },
```

Two things follow. The test script is preceded by a pretest hook that runs the licence check across every workspace, so a pull request that adds a file with the wrong header fails before the tests even start. And the version-fix script points at packages/caliper-publish/publish.js, which is the packaging step, with a force-clean shell script for resetting a working tree. The engines field is strict about the toolchain.

```json
    "engines": {
        "node": ">=22",
        "npm": ">=11.5.1"
    },
```

Node 22 or newer and npm 11.5.1 or newer are therefore not suggestions, and a CI image or developer machine on an older Node will fail to install. The published CLI is distributed under the scoped name @hyperledger/caliper-cli, which is what appears in the release and download badges, while the root package stays private and is never published itself.

## Running a benchmark means reading the documentation site

The README deliberately does not carry a quick start. The configuration and usage section points at the documentation site at hyperledger-caliper.github.io/caliper/ and says to consult it, and the project ships separate links for the iOS-style per-platform guides through its docs tree. This is a different onboarding shape from a library with a five line install in its readme, and it has a reason: a benchmark run needs a configuration file, a connector for the target ledger, a running network to point at, and a defined workload. The repository ships the schema for that configuration under json-schema/, and the packages/ tree holds the connectors and the CLI. Because the schema is a separate artefact from the code, a configuration written for an older version of Caliper can be structurally valid and still be interpreted differently, which is the kind of failure that produces a benchmark run with no transactions and a suspiciously clean report. The documentation site is therefore not a convenience link, it is the part of the project you actually read before you run anything.

## A licence checker with per-file-type header formats

Caliper is a Hyperledger project and uses the standard split: source code files are under the Apache License, Version 2.0, found in the LICENSE file, while documentation files are under the Creative Commons Attribution 4.0 International License. What is unusual is that the repository enforces this with a tool rather than a convention, and the configuration in the root package.json is instructive about how much manual work the check tolerates. The checker runs over the whole folder with LICENSE.txt as the reference file, and it excludes entire paths such as CODEOWNERS, LICENSE, packages, scripts and node_modules.

```json
        "file_type_method": "EXCLUDE",
        "file_types": [
            ".yml",
            ".md",
            ".log",
            ".html"
        ],
        "insert_license": false,
```

The file_type_method is EXCLUDE, so Markdown, YAML, log and HTML files are skipped entirely, which is how the documentation stays under CC-BY-4.0 without carrying an Apache header. The insert_license flag is false, so the tool checks and does not rewrite, and the configured header formats differ by extension: JavaScript-style files get a slash-star block with a star prefix on each line, while cfg, editorconfig, yaml and py files get a hash-delimited block. If you contribute to Caliper, this is where a rejected pull request comes from, and it is a narrow problem to solve once you know the formats the config expects.

## An unstable version number and a quiet release rhythm

Maintenance is the last thing to weigh, and here the picture is mixed. The repository is not archived and the last push was on 2026-06-16, which is inside the six month window that would otherwise be a red flag. The recent release history is thinner than that though: v0.7.0 on 2025-10-03, v0.7.1 on 2025-10-07, and v0.6.0 before that on 2024-05-01, so the 0.7 line arrived after a long gap and then moved quickly. The root package version of 0.7.2-unstable says the next release is in preparation, which is a fair signal that a published 0.7.2 is not yet something you can pin to. The version-fix script and RELEASE_PROCESS.md in the root describe how a release is put together, and the presence of CHANGELOG.md gives you a record of what changed. Support does not run through the issue tracker alone. The project maintains a Discord server with a Caliper channel, a mailing list, and separate Fabric and Besu channels, and the README asks people to bring questions and new feature ideas there, while issues remain the right place for reproducible Caliper problems. The licence is Apache 2.0 for code and CC-BY-4.0 for documentation, which is a permissive combination, and the final word on how that applies to your use is your own legal review rather than this article.

## Conclusion

Adopt Caliper when your team needs comparable performance numbers for Fabric deployments and can accept the current scope of the supported chain list, which names only Fabric v2.X with the deprecated Network SDK and the Gateway SDK. Skip it if you need a working adapter for another ledger today, since the project does not list one, or if you need the framework to be a stable dependency, because the root package version reads 0.7.2-unstable. Before your first run, read the metrics definitions in the PSWG white paper so the numbers are comparable with other published results, and check the json-schema/ directory in the repository, since it is where the benchmark configuration is validated.

## FAQ

### Which blockchains does Caliper currently support?

The supported list in the README currently names Hyperledger Fabric v2.X only, with the deprecated Network SDK and the Gateway SDK. Besu has a channel on the project Discord for technical help, but it is not listed as a supported adapter.

### What performance metrics does Caliper report?

Success rate, transaction and read throughput, transaction and read latency in minimum, maximum and average forms, and resource consumption such as CPU, memory and network IO. The definitions and measurement methods come from the PSWG white paper on blockchain performance metrics.

### What does Caliper need in terms of Node.js and npm?

The root package.json declares engines of node >= 22 and npm >= 11.5.1, so an older toolchain will not install the workspace cleanly. The published command line tool is the scoped package @hyperledger/caliper-cli.

### How do I configure a Caliper benchmark run?

The README does not include a quick start and points to the documentation site at hyperledger-caliper.github.io/caliper/ for configuration and usage. The repository keeps the configuration schemas in the top level json-schema/ directory, separate from the runtime packages.

### What licence applies to Caliper code and documentation?

Hyperledger Project source code files are under the Apache License, Version 2.0 in the LICENSE file, while documentation files are under the Creative Commons Attribution 4.0 International License. The root package.json configures a licence-check-and-add run to enforce headers on source files.

## Sources

- [hyperledger-caliper/caliper on GitHub](https://github.com/hyperledger-caliper/caliper)
- [License: Apache-2.0](https://github.com/hyperledger-caliper/caliper/blob/main/LICENSE)
- [Project website](https://hyperledger-caliper.github.io/caliper/)
- [README](https://github.com/hyperledger-caliper/caliper/blob/main/README.md)
- [Releases](https://github.com/hyperledger-caliper/caliper/releases)

---

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