GitHub Actions pricing in 2026: per-minute rates and free usage
What GitHub Actions costs: free usage on public repositories, included compute per plan, per-minute runner prices, the self-hosted fee, and how to pay less.
In this series24 guides, you're on Pricing
GitHub Actions is free on public repositories with standard runners, and free with self-hosted runners anywhere. On private repositories, each account gets a monthly amount of included compute ($12 on GitHub Free, $18 on Pro and Team, $300 on Enterprise Cloud), then pays per minute: $0.006 on a standard Linux runner, $0.010 on Windows and $0.062 on macOS. Larger runners are billed from the first minute in public repositories too, and can draw from the included compute on Team and Enterprise Cloud.
These are GitHub’s prices as of November 2026, from its runner pricing reference ↗.
Is GitHub Actions free?#
It depends on the repository and the runner:
| Runner | Public repository | Private repository |
|---|---|---|
Standard GitHub-hosted (ubuntu-latest, windows-latest, macos-latest…) | Free, no limit | Included compute, then per minute |
| Larger runners | Per minute | Included compute (Team, Enterprise Cloud), then per minute |
| Self-hosted runners | Free | Free, and they don’t use the included compute |
“Free” covers GitHub’s bill only. A self-hosted runner still costs whatever its machine costs you.
Included compute per plan#
Since October 2026, the monthly allowance for private repositories is a dollar amount rather than a number of minutes. It is shared by every private repository of the account, and resets each billing cycle:
| Plan | Price | Included each month |
|---|---|---|
| GitHub Free | $0 a month per user | $12 of included compute a month for private repositories (2,000 minutes on a 2-core Linux runner) |
| GitHub Team | $4 a month per user | $18 of included compute a month, which larger runners can draw from too (3,000 minutes on a 2-core Linux runner) |
| GitHub Enterprise Cloud | $21 a month per user | $300 of included compute a month, which larger runners can draw from too (50,000 minutes on a 2-core Linux runner) |
GitHub Pro, for individual accounts, includes the same $18 as Team. Because the allowance is in dollars, it buys fewer minutes on pricier runners: $12 is about 2,000 minutes on standard Linux, but about 1,200 on Windows and about 190 on macOS.
When the allowance runs out, jobs keep running and are billed per minute if the account has a payment method. Without one, jobs are blocked until the next billing cycle.
Per-minute prices#
Every job is billed per minute, rounded up to the next whole minute, so a 10-second job costs a full minute. Prices for the Linux and Windows runners, by vCPU count (2 vCPUs is the standard runner in private repositories; everything above is a larger runner):
| vCPUs | Linux x64 | Linux arm64 | Windows x64 |
|---|---|---|---|
| 2 | $0.006 | $0.005 | $0.010 |
| 4 | $0.012 | $0.008 | $0.022 |
| 8 | $0.022 | $0.014 | $0.042 |
| 16 | $0.042 | $0.026 | $0.082 |
| 32 | $0.082 | $0.050 | $0.162 |
| 64 | $0.162 | $0.098 | $0.322 |
| 96 | $0.252 | – | $0.552 |
The 1-vCPU ubuntu-slim runner costs $0.002 a minute. Standard macOS runners cost $0.062 a minute, the macOS larger runners $0.077 (macos-latest-large) and $0.102 (macos-latest-xlarge), and the NVIDIA T4 GPU runner $0.052 a minute on Linux. The price roughly doubles with each doubling of vCPUs, and Windows costs about twice Linux at the same size.
The self-hosted runner fee#
In December 2025, GitHub announced a $0.002 per minute platform fee on self-hosted runner jobs from March 2026, then suspended it. As of November 2026 it is still suspended: self-hosted runner jobs cost nothing on GitHub’s bill and don’t use the included compute. The history and what the fee would have cost are in our post on the fee.
Storage#
Caches are free up to 10 GB per repository. Above that, GitHub bills the extra storage, and once the budget for it runs out the cache turns read-only: restores work but saves fail. Artifacts count against your plan’s storage, so short retention-days on artifacts that only hand files between jobs keep that bill down (see passing data between jobs). Custom images for larger runners count as storage too, beyond 75 GB on Team and 150 GB on Enterprise Cloud.
An example bill#
A team of 10 on GitHub Team whose private repositories run 20,000 minutes a month on standard Linux runners:
- Compute: 20,000 × $0.006 = $120, minus the $18 included = $102 a month.
- Seats: 10 × $4 = $40 a month, paid whatever runners you use.
The same minutes on 8-vCPU larger runners would cost $422 a month, unless the bigger machine finishes the jobs faster. Each doubling of vCPUs about doubles the price per minute, so a bigger runner lowers the bill only if the job then takes about half the time or less. The cost calculator runs this for your own minutes and runner mix.
Paying less#
- Cancel superseded runs. A push that replaces an open pull request’s last commit doesn’t need the old run:
cancel-in-progressstops it and its minutes. - Cache dependencies. Minutes spent downloading and rebuilding the same packages are billed like any other: see caching dependencies and Docker layer caching.
- Move to arm64 where your toolchain allows it: $0.008 against $0.012 a minute at 4 vCPUs.
- Size runners from measurements, not guesses: run the job on both sizes and compare (see are more cores worth it?).
- Run jobs on your own machines. Self-hosted runners take nothing from GitHub’s bill. RunsOn starts one EC2 instance per job in your AWS account and terminates it after: a 4-vCPU Linux runner costs about $0.0013 a minute on spot (instance and disk, us-east-1, 7-day average) against GitHub’s $0.012, plus a flat yearly license.