CheckOps
Bencher
Bencher is an open-source continuous benchmarking platform that runs, tracks and catches performance regressions, with Bencher Bare Metal runners that give identical hardware from your terminal, an agent sandbox or CI.
- Open source
- Free tier
- Paid
- SaaS
- Self Hosted
- Rust
- Command Line
- CI
- Performance Testing
- Benchmarking
- Performance & load
- Release & CI gates
- Unit testing
Latest public signals
Not refreshed yet. Refresh reads the public site and, when the entry has a GitHub repository, the latest release.
Introduction
Bencher is a continuous benchmarking platform that helps engineers and agents catch performance regressions before they merge. Its argument starts from what most teams do: run benchmarks on GitHub Actions with a comparison script. That breaks down because shared CI runners are noisy: shared CPU, memory contention and scheduler jitter mean two identical runs can differ wildly, and when benchmarks cry wolf on every PR, engineers stop looking.
The examples it gives of costly regressions are concrete: a database regression on a hot path paging someone, a compiler regression silently slowing every downstream build, a browser engine shipping a 10% paint regression, or a crypto library adding a microsecond to a handshake and breaking an SLA. Local benchmarks are not reproducible either, because each check means pulling the baseline branch and waiting.
Bencher’s workflow has three steps. Run: execute benchmarks locally or in CI on the exact same bare-metal runners, using your favourite benchmarking tools; the bencher CLI orchestrates the run and stores results. Track: monitor, query and graph results over time in the web console by branch, testbed, benchmark and measure. Catch: detect regressions with customisable statistical thresholds before they merge, locally or in CI, on the same hardware.
Benchmark harness adapters parse the output of popular tools, such as Rust’s Criterion (rust_criterion), JSON output and a “magic” adapter that auto-detects formats. PR comments show each benchmark’s result, its change, the threshold boundary and whether an alert fired, with links to plots and alerts.
Bencher is open source and can be self-hosted, including a self-hosted GitHub App and OAuth options, or used as Bencher Cloud. The project’s own analogy is useful: for the same reason you run unit tests to prevent feature regressions, you should run benchmarks to prevent performance regressions.
Bare Metal is what separates Bencher from a simple results dashboard: if your current CI benchmarks are too noisy to trust, moving them to dedicated, identical machines is often a bigger improvement than any statistical trick. Whatever tool you choose, benchmark results are only useful if they are stable. Pin the hardware or runner, run enough iterations to make variance visible, and treat a single noisy result as a reason to rerun, not to block a merge.
The source code is at bencherdev/bencher on GitHub under the Apache-2.0 or MIT (outside its “plus” directories) licence, with about 929 stars; the most recent commit was on 10 November 2026.
Bencher’s public project pages are also a transparency tool: open-source maintainers can show users a history of performance across releases, which builds trust and makes regressions visible to contributors.
Thresholds deserve care. Start with generous boundaries, watch how much results vary on your chosen testbed, and tighten them gradually so alerts stay rare and meaningful.
For teams without dedicated hardware, the cloud service is the easiest way to see whether bare-metal runs make results noticeably more stable than shared CI runners.
Features
- Run, track, catch: End-to-end benchmarking workflow.
- Bare-metal runners: Identical hardware locally, in sandboxes and in CI.
- Harness adapters: Criterion, JSON and auto-detecting adapters.
- Statistical thresholds: Customisable regression detection.
- PR reports and alerts: Results with boundaries in PRs.
- Web console: Plots by branch, testbed and measure.
- CLI:
bencher runorchestration. - Self-hosting: Self-hosted server and GitHub App.
Pros
- Language-agnostic: Works with existing benchmark tools.
- Noise solution: Bare metal tackles noisy runners.
- Free to use: Open source under the Apache-2.0 or MIT (outside its “plus” directories) licence, so the core tool costs nothing to use.
- Actively maintained: The repository had commits as recent as 10 November 2026.
Cons
- Bare Metal is paid: Dedicated hardware costs money.
- Mixed licensing: Some “plus” features are under a separate licence.
- Setup effort: Thresholds need tuning.
Usage and Links (Example)
bencher run \
--project my-project \
--branch main \
--testbed intel-v1 \
--spec intel-v1 \
--adapter rust_criterion \
--error-on-alert \
"cargo bench"
In GitHub Actions, install the CLI and run bencher run with your benchmark command and API token.
Resources:
Pricing
Bencher is open source and can be self-hosted. Bencher Cloud and Bare Metal runners are offered as paid services; see bencher.dev/pricing for current plans.
Recommended for?
- Teams whose CI benchmarks are too noisy to trust.
- Open-source projects wanting public performance history.
- Organisations needing self-hosted benchmarking.
Conclusion
Bencher is the leading open-source continuous benchmarking platform, and Bare Metal addresses noise at the root.
Start with the free tier, then move critical benchmarks to bare metal.
On CheckOps, Bencher is filed under the Performance & load, Release & CI gates and Unit testing stages. Related tools listed here include BenchmarkDotNet, hyperfine, JMH, K6, Lighthouse CI and cargo-nextest. Before standardising on one, compare recent maintenance activity, the pricing model as your usage grows, and the integrations you rely on today. Information on this page was verified against the official website, documentation and repository on 11 November 2026.
Compare
CheckOps pages that put Bencher next to related tools. There is no paid placement on these lists.
Alternatives
Other tools on CheckOps that cover similar ground. Open a page, or compare one with Bencher side by side.
BBenchmarkDotNetBenchmarkDotNet is the MIT-licensed .NET library for turning methods into reliable, reproducible micro-benchmarks with statistical analysis, diagnosers and exportable reports.Compare with Bencher
Hhyperfinehyperfine is an Apache-2.0 command-line benchmarking tool that runs shell commands repeatedly with warm-up, statistical analysis and exports, ideal for comparing CLIs and builds.Compare with Bencher
JJMHJMH (Java Microbenchmark Harness) is OpenJDK's GPL-2.0 harness for building, running and analysing nano, micro, milli and macro benchmarks in Java and other JVM languages.Compare with Bencher
KK6k6 is an open-source tool and cloud service that makes load testing easy for developers and QA engineers.Compare with Bencher
LLighthouse CILighthouse CI is Google Chrome's Apache-2.0 toolkit for running Lighthouse on every commit, asserting budgets, storing results and blocking performance, accessibility and SEO regressions.Compare with Bencher
Ccargo-nextestcargo-nextest is an Apache-2.0 next-generation test runner for Rust, up to 3x faster than cargo test per its site, with per-test process isolation, retries, partitioning, JUnit output and a filterset DSL.Compare with Bencher