CI Bench

Sourced guide · read 2026-10-27 · Updated October 27, 2026

How to cut your GitHub Actions bill without changing CI providers

What GitHub's own documentation lets you change, with the rates that make each lever matter, and what changing only the runner measured.

Short answer

Four levers stay inside GitHub Actions: cancel superseded runs with a concurrency group set to cancel-in-progress, because every cancelled run is minutes not billed; combine very short jobs, because each job is rounded up to a whole minute; pick the smallest runner size that finishes the job, because larger runners are always charged and the 4-core Linux rate ($0.012 a minute) is twice the 2-core rate ($0.006); and run jobs on self-hosted runners, which GitHub does not charge for (you pay for the machines). If you can change the runner but not the CI provider, managed runner services change one runs-on line: in CI Bench v1 the managed ones measured ranged from 52% lower to 84% lower cost per job than GitHub-hosted (ubuntu-latest) at 10,000 jobs a month. Maintained by Vitko, Inc., which sells one of the products measured.

The levers, with the source for each

Ways to lower a GitHub Actions bill
LeverWhat to doWhy it changes the billSource
Cancel superseded runsAdd a concurrency group with cancel-in-progress: true to workflows that run on every push.GitHub: a new run in the same group cancels the one in progress, so the cancelled run stops accruing minutes.GitHub Docs, control concurrency, read 2026-10-27
Combine very short jobsMerge jobs that each run seconds into one job.Each job on GitHub-hosted runners is rounded up to a whole minute, so ten 10-second jobs bill as ten minutes.GitHub Docs, runner pricing, read 2026-10-27
Right-size the runnerUse the 2-core Linux runner unless the job gets faster on more cores by more than its price ratio.Rates per minute, Linux x64: 2-core $0.006, 4-core $0.012, 8-core $0.022, 16-core $0.042; larger runners are always charged.GitHub Docs, runner pricing, read 2026-10-27
Self-hostRun jobs on your own machines.GitHub: usage is free for self-hosted runners; you pay for the machines and their operation.GitHub Docs, billing and usage, read 2026-10-27

If you can change the runner but not the CI provider

A managed runner service keeps GitHub Actions as the CI system and changes one runs-on line. CI Bench v1 measured 4 managed configurations: cost per job against GitHub-hosted (ubuntu-latest) at 10,000 jobs a month: Vitko Runners (warm starts + test splitting) 84% lower; Vitko Runners 84% lower; Blacksmith 52% lower; Ubicloud 83% lower. See the cost per job ranking, and List price per minute is not cost per job; faster runners finish sooner.

Check your plan's included minutes first: free minutes by provider. Vitko Runners (private beta, Ubuntu 24.04 on x64, private repositories) is one of the options measured.

More: 12 options compared · ranked by cost per job · price per minute, 2 and 4 vCPU · free minutes · calculator.

GitHub's pages may have changed since October 27, 2026; they are the authority. Method: how the runs were made; data: results.json; every raw record: the repository. Maintained by Vitko, Inc., which sells one of the products measured. Page dated October 27, 2026.