CI Bench

Open benchmark · Result set v1 · Measured Oct 7–11, 2026

GitHub Actions runners, measured on real CI

Nine runner configurations, twelve workloads from open-source projects, 8,370 jobs. Every workflow and raw job record is public.

Fastest of the nine configurations measured
2.3×
Vitko Runners (warm starts + test splitting)
vs GitHub-hosted (ubuntu-latest); no other provider’s interval overlaps it
Lowest cost per job among the managed runners measured
−84%
Vitko Runners
cost per job vs GitHub-hosted (ubuntu-latest); next: Ubicloud, −83%
Lowest median time
8 / 12
workloads
Vitko Runners (warm starts + test splitting)
Jobs measured
8,370
930 per configuration
9 configurations × 12 workloads, 3 sessions of 10 rounds
Show
Jobs a month
Filters apply to the charts, the heatmap and the table below.

Speed

× faster than GitHub-hosted (ubuntu-latest) · higher is better
Vitko Runners (warm starts + test splitting)
2.3×
Vitko Runners
1.7×
GitHub-hosted larger runner (4 vCPU)
1.6×
Blacksmith
1.6×
Self-hosted runners on Google Cloud
1.5×
RunsOn
1.2×
Self-hosted runners on AWS (one VM per job)
1.2×
Ubicloud
1.1×
GitHub-hosted (ubuntu-latest)
1.0×

Cost per job

USD per $1.00 spent on GitHub-hosted (ubuntu-latest) · lower is better
Vitko Runners
$0.16
Vitko Runners (warm starts + test splitting)
$0.16
Ubicloud
$0.17
Self-hosted runners on Google Cloud
$0.41
Blacksmith
$0.48
Self-hosted runners on AWS (one VM per job)
$0.51
GitHub-hosted (ubuntu-latest)
$1.00
GitHub-hosted larger runner (4 vCPU)
$1.39
RunsOn
$1.43
Vitko Runners
$0.16
Vitko Runners (warm starts + test splitting)
$0.16
Ubicloud
$0.17
RunsOn
$0.25
Self-hosted runners on AWS (one VM per job)
$0.40
Self-hosted runners on Google Cloud
$0.41
Blacksmith
$0.48
GitHub-hosted (ubuntu-latest)
$1.00
GitHub-hosted larger runner (4 vCPU)
$1.39
RunsOn
$0.12
Vitko Runners
$0.16
Vitko Runners (warm starts + test splitting)
$0.16
Ubicloud
$0.17
Self-hosted runners on AWS (one VM per job)
$0.38
Self-hosted runners on Google Cloud
$0.41
Blacksmith
$0.48
GitHub-hosted (ubuntu-latest)
$1.00
GitHub-hosted larger runner (4 vCPU)
$1.39

Time by workload

lowest3× slower

Median job time relative to the lowest median on each workload (1.0× = lowest)

List prices

Per-minute list prices, read 2026-10-24. List price per minute is not cost per job; faster runners finish sooner. All providers
Provider$ per minute (2 vCPU)BillingIncluded minutes
Ubicloud$0.00125Per minute (resource use calculated at per-minute granularity, billed monthly)Not stated on the pricing page
Vitko Runners$0.002Per second, no per-job minimum2,000 minutes every month
Sengi$0.003Per minute3,000 minutes a month on 2 vCPU (1,500 on 4 vCPU, 750 on 8 vCPU, or an
Blacksmith$0.004Per minute3,000 free minutes a month
WarpBuild$0.004Per minute ("CI runners are billed on a per-minute basis")A free usage or credit amount is mentioned
BuildJet$0.004Per minuteOne-time $5 credit (last published)
CRACI$0.004Metered per secondNot stated on the pricing page
GitHub-hosted runners (ubuntu-latest, 2 vCPU)$0.006Per minutePlan-dependent, private repositories only: 2,000 minutes (Free), 3,000
Depot$0.006Per second2,000 GitHub Actions minutes a month on the Developer plan

All configurations

Speed and cost per job against GitHub-hosted (ubuntu-latest)
Speed and cost per job against GitHub-hosted (ubuntu-latest)
ConfigurationTypeSpeedCost per job vs GitHub-hosted (ubuntu-latest)Failed runs
Vitko Runners (warm starts + test splitting)VitkoManaged2.3x faster84% lower84% lower84% lower3 of 360
Vitko RunnersVitkoManaged1.7x faster84% lower84% lower84% lower0 of 360
GitHub-hosted larger runner (4 vCPU)Managed1.6x faster39% higher39% higher39% higher3 of 360
BlacksmithManaged1.6x faster52% lower52% lower52% lower3 of 360
Self-hosted runners on Google CloudSelf-hosted1.5x faster59% lower59% lower59% lower1 of 360
RunsOnSelf-hosted1.2x faster88% lower75% lower43% higher1 of 360
Self-hosted runners on AWS (one VM per job)Self-hosted1.2x faster62% lower60% lower49% lower0 of 360
UbicloudManaged1.1x faster83% lower83% lower83% lower1 of 360
GitHub-hosted runners (ubuntu-latest, 2 vCPU)Managedbaselinebaselinebaselinebaseline3 of 360

The cost column follows the jobs-a-month setting. Managed prices do not change with volume; self-hosted options spread fixed monthly costs over the volume, so their cost does. Green marks the leading value. Cost by volume.

Indexes and 95% intervals
ConfigurationTime index95% intervalCost index95% interval
Vitko Runners (warm starts + test splitting)0.4360.423 to 0.4590.1580.156 to 0.160
Vitko Runners0.5740.556 to 0.6020.1570.155 to 0.159
GitHub-hosted larger runner (4 vCPU)0.6420.629 to 0.6691.3871.350 to 1.424
Blacksmith0.6450.606 to 0.7590.4820.435 to 0.537
Self-hosted runners on Google Cloud0.6670.658 to 0.6920.4090.386 to 0.440
RunsOn0.8280.816 to 0.8590.1210.117 to 0.125
Self-hosted runners on AWS (one VM per job)0.8690.833 to 0.9470.3830.358 to 0.405
Ubicloud0.8790.847 to 0.9210.1730.167 to 0.180
GitHub-hosted runners (ubuntu-latest, 2 vCPU)1.0001.000 to 1.0001.0001.000 to 1.000

Index = the configuration's value divided by GitHub-hosted (ubuntu-latest)'s, geometric mean over the workloads, at 100,000 jobs a month. Lower is faster or cheaper.

How to read this

Speed
× faster than GitHub-hosted (ubuntu-latest), median job time.
Cost
What the same jobs cost, per $1 on GitHub.
Averages hide workloads
Check the heatmap and the head-to-heads.
Scope
2 vCPU class and one 4 vCPU reference, Linux x64, one region per provider, public repositories. No GPU, macOS, Windows or Arm.
Sample
One result set: 3 sessions, 10 measured rounds each. Intervals cover sampling, not your workflow.
Operator
We operated the self-hosted options. More.