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
| Lever | What to do | Why it changes the bill | Source |
|---|---|---|---|
| Cancel superseded runs | Add 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 jobs | Merge 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 runner | Use 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-host | Run 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.