How much does my GitHub Actions workflow cost?
Price your workflow right now.
You don't need to install anything. Paste the YAML into
budget for the per-run/monthly
number, or the calculator for a quick
category-based estimate. Then grab the Cut Your CI Bill
cookbook to actually push that number down.
$19, one-time, MIT-licensed templates.
GitHub bills Actions in minutes. Most engineers know that. Far fewer know what a minute costs on the runner they're using, that the cost changes per OS, that matrices multiply runs, and that the number on the invoice is the sum across every workflow file in every repo in the org.
By the time you see the bill, the bill already happened.
gha-budget
is a free MIT CLI that reads a workflow YAML, walks the jobs, expands
matrices, applies the official runner price multipliers, and tells you
what each run costs - and what a month of typical usage will cost - before
you commit.
The pricing model
GitHub-hosted runners are priced as a multiplier over the base
ubuntu-latest rate. As of writing:
| Runner | Multiplier |
|---|---|
ubuntu-latest (2-core) | 1x |
windows-latest | 2x |
macos-latest (3-core) | 10x |
macos-latest (M1) | 10x |
macos-13-xlarge | 12x |
| self-hosted | 0x (you eat the bill) |
At current rates the base minute is roughly $0.008 for Linux on private
repos. So one minute on macos-latest is about $0.08, ten
minutes is $0.80, a 4x4 matrix that runs ten minutes on macOS is $12.80
per push. Multiply by 30 pushes a day and that's $384/day on one job.
One command
npx gha-budget
It scans .github/workflows/, reads each file, and prints a
table per workflow:
workflow: ci.yml
job: build (matrix: 6 combos)
runner: ubuntu-latest
estimated minutes per run: 60
cost per run: $0.48
job: e2e (matrix: 1 combo)
runner: macos-latest
estimated minutes per run: 15
cost per run: $1.20
total per push: $1.68
projected monthly (30 push/day): $1,512
Use --json to feed the numbers into a budget alert,
--markdown to drop the table into a PR comment.
What it can't tell you
gha-budget uses estimated minutes per job. It
doesn't run your workflow. The estimate counts steps and assigns
reasonable defaults; you can override with --minutes-per-job
or annotate jobs with x-budget-minutes in the YAML if you
have observed numbers.
For real per-run minutes you need GitHub's
Usage
CSV. gha-budget answers a different question: before
this workflow merges, what shape is the bill?
The two tools to run before you push a workflow
In order:
npx ci-doctor --fix # apply safe permissions / concurrency / timeout fixes
npx gha-budget # see what this workflow will cost
ci-doctor
cuts cost by adding cancel-in-progress, capping job timeouts,
and trimming artifact retention. gha-budget tells you whether
the cost is acceptable in the first place.
The deep version
The CLI is free and ships every rule. The Cut Your CI Bill cookbook is the longer playbook: 30 patterns and 5 paste-ready snippet workflows for cheaper, faster, less leaky GitHub Actions ($19, one-time).
Try it
npx gha-budget
No signup. No telemetry. Source on GitHub.