GitHub Actions Pricing Explained: Minutes, Runners & Real Cost
GitHub Actions looks free until it is not. Here is exactly how the billing model works and which line items quietly add up.
GitHub Actions is billed on compute minutes. Public repos are free; private repos get a monthly included allowance and then pay per minute. The details - OS multipliers, larger-runner rates, and storage - are where bills surprise teams.
Included minutes and overage
Private repos get a monthly free allowance (e.g. 2,000 minutes on Free, more on Team/Enterprise). Past that you pay per minute. The allowance only applies to standard runners.
OS multipliers
Minutes are not equal. Linux is the base rate; Windows is ~2x and macOS is ~10x the Linux per-minute price. A macOS-heavy mobile pipeline burns the allowance roughly ten times faster.
- Linux 2-core: ~$0.008/min
- Windows 2-core: ~$0.016/min
- macOS: ~$0.08/min and up
Larger runners bill from minute one
Larger runners (4, 8, 16, 32, 64 vCPU) are billed per minute with no free allowance and a higher rate. They are convenient for big builds but are where invoices balloon.
The hidden cost: re-runs
Every flaky failure you re-run is minutes paid twice. At scale, transient failures can add 10–20% to a CI bill - pure waste that self-healing runners eliminate.
Key takeaways
- You pay per compute minute past a monthly allowance (standard runners only).
- Windows ~2x and macOS ~10x Linux minutes.
- Larger runners bill from the first minute, no free tier.
- Flaky re-runs are a silent 10–20% tax on your bill.