How GitHub Actions minutes are billed
A GitHub Actions bill is built from four things: how long each job runs, which runner it runs on, whether the repository is public or private, and how many minutes your plan includes. This page walks through each one and ends with worked examples you can reproduce in the calculator.
The unit is the job, rounded up to a whole minute
GitHub meters every job on a GitHub-hosted runner separately. Its documentation says that it rounds the minutes and partial minutes each job uses up to the nearest whole minute. A job that takes 5 minutes and 12 seconds is billed as 6 minutes, and a job that takes 20 seconds is billed as 1 minute. The rounding applies to each job, not to the workflow as a whole, so a workflow split into ten short jobs is rounded up ten times.
That makes job count matter as much as job length. Two workflows that do the same work in the same wall-clock time can be billed differently if one of them spreads the work over many small jobs.
Each runner has its own per-minute rate
There is no single price for "an Actions minute". Each kind of runner has a rate, and the operating system is the biggest factor. These are the standard GitHub-hosted runners in the pricing data this site uses.
| Standard runner | Rate per minute |
|---|---|
| Linux 1-core (x64) | $0.002 |
| Linux 2-core (x64) | $0.006 |
| Linux 2-core (arm64) | $0.005 |
| Windows 2-core (x64) | $0.01 |
| Windows 2-core (arm64) | $0.01 |
| macOS 3-core or 4-core (M1 or Intel) | $0.062 |
The two GitHub pages read for this site on that date list no minute multiplier and no separate platform charge: each runner simply has its own rate, and included minutes are counted as plain minutes. The full list, including larger runners, is on the runner pricing page.
What is free
- Public repositories on standard runners. GitHub's billing page states that Actions usage is free for public repositories that use standard GitHub-hosted runners.
- Self-hosted runners. The same page states that usage is free for self-hosted runners. You pay for the machine yourself instead.
- The included minutes of your plan. Private repositories get a monthly allowance of minutes on standard runners. GitHub Free includes 2,000 minutes per month, GitHub Pro and GitHub Team include 3,000, and GitHub Enterprise Cloud includes 50,000. See included minutes and overage for the full table.
Larger runners are the exception to all three. GitHub's pricing reference says included minutes cannot be used for larger runners and that larger runners are not free for public repositories. Every minute on one is billed.
What happens after the included minutes
Once a private repository's account has used its included minutes, each further minute is charged at the rate of the runner it ran on. There is no separate "overage price": a Linux minute beyond the allowance costs the Linux rate and a macOS minute costs the macOS rate.
Storage is billed on its own track. Artifacts and packages share one allowance, caches have another, and usage beyond them is charged per GB per month: $0.25 for shared storage and $0.07 for Actions cache in the data read on 2026-10-05. The calculator's free estimate covers minutes only.
Worked example: one runner
A team on GitHub Team runs 40 jobs per working day in a private repository, 22 working days a month, all on the Linux 2-core runner, and each job takes 6 minutes. The calculator gives:
| Jobs per month | 880 |
|---|---|
| Billable minutes per month | 5,280 |
| Included minutes consumed | 3,000 |
| Minutes beyond the plan | 2,280 |
| Overage cost per month | $13.68 |
| Overage cost per year | $164.16 |
Make the same repository public and the calculator returns $0.00: the minutes still run, but none are billable and no included minutes are used.
Worked example: what rounding costs
Take the same team, but compare two average job lengths. With jobs of exactly 5 minutes, the month comes to 4,400 billable minutes and an overage of $8.40. With jobs of 5.2 minutes, the jobs really run for 4,576 minutes, but each one is billed as 6 minutes, so the month is billed as 5,280 minutes and costs $13.68. Twelve extra seconds per job add $5.28 a month here. The calculator knows only your average job length, so it rounds the average up; if your jobs vary a lot in length, the real figure can differ.
Worked example: a mix of runners
Now a GitHub Team account running 50 jobs a day for 20 working days, 6 minutes each: 70% on Linux 2-core, 20% on Windows 2-core and 10% on macOS. That is 6,000 minutes against 3,000 included.
| Runner | Minutes | Included minutes used | Minutes beyond the plan | Cost per month |
|---|---|---|---|---|
| Linux 2-core | 4,200 | 2,100 | 2,100 | $12.60 |
| Windows 2-core | 1,200 | 600 | 600 | $6.00 |
| macOS | 600 | 300 | 300 | $18.60 |
| Total | 6,000 | 3,000 | 3,000 | $37.20 |
The macOS jobs are a tenth of the minutes and half of the bill. The headline figure of $37.20 a month ($446.40 a year) assumes the included minutes are spread over the runners in proportion to their use. Included minutes are really used up as jobs run through the month, so the calculator also shows a range: $18.00 if the dearest runners happened to use the allowance, $56.40 if the cheapest ones did.
Run your own numbers. The GitHub Actions cost calculator takes your plan, jobs per day, job length and runner mix and shows the same breakdown. It runs in your browser and the free part needs no key.