Skipbox

How GitHub Actions billing works, and how to work out your bill

GitHub Actions bills every job that runs on a GitHub-hosted runner by the minute, at a rate set by the runner's operating system and size, and rounds each job up to the next whole minute. Your plan includes a monthly amount of compute in dollars ($12 on GitHub Free, $18 on Pro and Team, $300 on Enterprise Cloud), so your bill is the minutes times each runner's rate, less that amount. Billing & Licensing → Usage shows the total, and the usage report CSV breaks it down by runner, repository and workflow.

What GitHub charges per minute

Rates for the runners most teams use, in US dollars per minute:

GitHub's runner pricing page lists the rest: Linux and Windows up to 96 cores, arm64 sizes, GPU runners, and the larger macOS runners.

Three rules decide what you pay:

  • Each job rounds up. "GitHub rounds the minutes and partial minutes each job uses up to the nearest whole minute." A job that runs 2 minutes 5 seconds bills 3 minutes.
  • Larger runners need GitHub Team or Enterprise Cloud. Only organizations on those plans can use them, and they're billed on public repositories too.
  • Some use is free. Standard runners on public repositories, self-hosted runners, GitHub Pages and Dependabot don't draw on your included compute.

What each plan includes

GitHub used to include a number of minutes. It now includes compute "expressed as a monetary amount, not a fixed number of minutes":

The minutes column divides the dollars by the Linux 2-core rate; GitHub gives the same guide for Enterprise Cloud ("$300 USD covers 50,000 minutes on a standard Linux runner"). On a faster runner the same dollars buy fewer minutes. Larger runners draw on the included compute only on GitHub Team and Enterprise Cloud.

The included compute resets at the start of each billing cycle. For metered products that's 00:00 UTC on the first of the month, and unused compute doesn't carry over.

Storage is billed apart from minutes: shared artifact and Packages storage over the allowance costs $0.25 per GB a month, and Actions cache over its 10 GB per repository costs $0.07 per GB a month.

The formula

For one month:

bill = Σ (minutes on each runner × its rate) − included compute, and never below $0.

Count the minutes per job, rounded up, then add them per runner SKU. Larger runners draw on the included compute too, since only Team and Enterprise Cloud have them.

Read your bill in Billing & Licensing → Usage

  1. For an organization: click your profile picture, Your organizations, then Settings next to the organization, and Billing & Licensing under Access in the sidebar. For a personal account: github.com/settings/billing.
  2. Open the Usage (or Metered usage) view.
  3. Filter to Actions, set Group to SKU, and pick the Time Frame. The chart and the table below it show the same data.

The dashboard may show Actions as spend in dollars rather than minutes; that spend already reflects each runner's rate. You need to be an owner or a billing manager to see an organization's usage.

For one run, open the run's summary and click Usage under "Run details". It shows the billable minutes per job, rounded up, for GitHub-hosted runners on private repositories.

Read the usage report CSV

The usage report gives you every row behind the chart.

  1. On the Metered usage page, click Get usage report.
  2. Choose the report and the period, then click Email me the report.
  3. Open the link in the email within 24 hours; it expires after that.

There are two reports:

  • Summarized usage report: up to one year, summed by date, sku, repository and cost_center_name.
  • Detailed usage report: up to 31 days, and adds username and workflow_path. Only the web interface has it; the REST API returns the summary.

The columns that matter for Actions:

To find your costs, filter product to Actions, then make a pivot table: rows by sku, sums of quantity and net_amount. Group by workflow_path instead to see which workflow costs most. If the month's net_amount is zero but gross_amount isn't, the included compute covered everything; gross_amount is what the same jobs cost once it doesn't.

A worked example

An organization on GitHub Team runs these jobs on private repositories in a month:

GitHub Team includes $18 of compute, and larger runners may draw on it, so the bill is $102.60 − $18 = $84.60.

What moves that number:

  • Rounding. If the 9,000 Linux minutes come from 3,000 jobs that each ran 2 minutes 5 seconds, the real running time is about 6,250 minutes; rounding adds about 2,750 billed minutes, or $16.50.
  • macOS. 300 macOS minutes cost $18.60, while 300 Linux 2-core minutes would cost $1.80.
  • The plan. On GitHub Enterprise Cloud the same month draws $102.60 from $300 of included compute, so the bill is $0.

Price your own last 30 days

The GitHub Actions cost calculator does this arithmetic on your own jobs, free. Sign in with GitHub and install the Skipbox app on the repositories you choose: it reads their last 30 days of jobs and, for the Linux jobs Skipbox can run, prices the minutes by runner size at GitHub's current rates and breaks them down by repository and workflow. macOS and Windows jobs are left out. Or give it your usage report CSV: your browser reads the file, which is never uploaded, and shows the month's Actions cost by runner SKU. Either way it shows the mix of Skipbox's $39, $79, and $149 monthly plans that runs the same Linux jobs, for one fixed monthly price with unlimited minutes and no usage charges. Signed in, it also lays out a summary for your approval form.

FAQ

Are self-hosted runners free on GitHub Actions?

Yes, today. GitHub lists self-hosted runners as usage that remains free, and it doesn't reduce your included compute. In the usage report, GitHub takes their cost off in discount_amount, so you aren't billed for them.

Does unused included compute roll over to the next month?

No. It resets to the full amount at the start of each billing cycle, which for metered products is 00:00 UTC on the first of the month.

Do failed or cancelled jobs cost money?

Yes, for the minutes they ran. GitHub's example: a workflow that fails after 5 minutes uses 5 minutes, and a successful 10-minute re-run brings the total to 15.

Why does Billing & Licensing show dollars instead of minutes?

Because GitHub now measures included compute as money. The billing dashboard may show Actions usage as spend, which already reflects each runner's rate. The usage report CSV has both: quantity holds the units used, and gross_amount the dollars.

Do public repositories cost anything?

Standard GitHub-hosted runners are free in public repositories. Larger runners are billed there at the same rates as in private repositories.

Sources

All read on 2026-11-09.

Updated November 9, 2026

See your own GitHub Actions bill

The free cost calculator reads your repositories' last 30 days of runs and gives one fixed monthly amount for the same jobs.

Open the cost calculator