GitHub Actions monthly cost for a small team of five
A team of five rarely thinks about its CI bill until the included minutes run out halfway through the month. This page works through one plausible five-person workload and prices it on several runner setups with this site's calculator. The assumptions are stated so you can swap in your own.
Assumptions
- Five developers working in private repositories on GitHub Team.
- Each developer pushes 4 times per working day, and each push starts a workflow of 3 jobs (for example lint, test and build). That is 60 jobs per working day.
- The average job is billed as 5 minutes. GitHub rounds every job up to a whole minute, so a job of 4 minutes and 20 seconds counts as 5.
- 22 working days a month.
- Standard GitHub-hosted runners. Compute only: seat prices, storage and taxes are not in the figures.
Together that is 1,320 jobs and 6,600 minutes a month. GitHub Team includes 3,000 minutes, so 3,600 minutes are billed. These are assumptions for a worked example, not a measurement of any team; a team that pushes less often or runs a single job per push will sit well inside the allowance.
The bill by runner setup
| Runner setup | Cost per month | Cost per year | Range for the month |
|---|---|---|---|
| All jobs on Linux 2-core, x64 | $21.60 | $259.20 | no range: one rate |
| All jobs on Linux 2-core, arm64 | $18.00 | $216.00 | no range: one rate |
| 80% Linux x64, 20% Windows | $24.48 | $293.76 | $21.60 to $26.88 |
| 90% Linux x64, 10% macOS | $41.76 | $501.12 | $21.60 to $58.56 |
| Any setup, public repository | $0.00 | $0.00 | standard runners are free |
On Linux alone the team pays $21.60 a month for compute, which is $4.32 per developer. The rates behind the table are $0.006 a minute for Linux 2-core x64, $0.005 for Linux arm64, $0.01 for Windows and $0.062 for macOS.
Why a mixed setup has a range
With one runner, 3,600 billed minutes have one price. With two runners at different rates, the bill depends on which jobs use the 3,000 included minutes. The headline figure assumes they are shared in proportion to each runner's minutes. In the macOS row, that means 2,700 included minutes go to Linux and 300 to macOS.
In practice the allowance is used in the order jobs run. If the macOS jobs took their included minutes first, the month would cost $21.60, the same as Linux alone. If the Linux jobs used the whole allowance, every macOS minute would be billed and the month would cost $58.56. The real bill falls between the two.
What moves the bill
- A tenth of the jobs on macOS nearly doubles it. The macOS setup costs $41.76 against $21.60, because a macOS minute costs a little more than ten Linux minutes.
- The plan's allowance. On GitHub Free for organizations, which includes 2,000 minutes, the all-Linux workload has 4,600 billed minutes and costs $27.60 a month ($331.20 a year). The extra 1,000 included minutes of GitHub Team are worth $6.00 a month here. The seat prices of the plans are not in this site's data, so compare those on GitHub's own pricing page.
- Job count per push. Three jobs per push triples the minutes of a single job. Merging two short jobs into one also saves the rounding on each.
- Pushes that do not need CI. Skipping the workflow for documentation-only changes or cancelling superseded runs lowers the jobs per day directly.
Is it worth optimizing at this size?
Usually only a little. At $259.20 a year on Linux, an afternoon spent tuning the pipeline costs more than it saves in compute. The exception is macOS: a team that builds a mobile or desktop app on macOS for most of its jobs is in a different range altogether, and should price that share on its own.
Use your own numbers. Put your jobs per day, average job length and runner mix into the free calculator. It shows the included minutes used, the overage and the range for a mixed setup.