GitHub Actions pricing, explained
GitHub Actions pricing has two halves: what GitHub includes for free, and what each additional minute costs once the allowance runs out. The free half depends on your plan and repository visibility. The paid half depends on the runner's operating system and size, plus billing rules, like rounding every job up to a whole minute, that decide what a run really bills. This page carries GitHub's own numbers, then the two levers that lower the bill.
Topics covered: This guide covers GitHub's included-minutes free tier, the per-minute rates by runner OS and size, the billing rules that inflate a bill, and how to pay less per minute without leaving GitHub Actions.
GitHub Actions is free for public repositories on standard GitHub-hosted runners. Private repositories get an included-minutes allowance by plan (2,000 per month on Free, 3,000 on Pro and Team, 50,000 on Enterprise Cloud), then pay per minute: Linux is the cheapest rate, Windows and macOS bill higher, larger runners are always billed, and every job is rounded up to a whole minute. Teams lower the bill by cutting billed minutes and by paying less per minute with drop-in runners.
Real results
TL;DR
- Public repositories run free on standard GitHub-hosted runners. Private repositories get an included-minutes allowance by plan, then bill per minute.
- The per-minute rate depends on the runner: Linux is the cheapest, Windows bills more, macOS bills roughly ten times the Linux rate, and larger runners are always billed, even on public repositories.
- GitHub rounds every job up to the next whole minute, so many short jobs, matrix legs, and re-runs bill more than the compute they use.
- The bill has two levers: bill fewer minutes (caching, path filters, cancelling superseded runs, timeouts), and pay less per minute (a drop-in runner label change).
- Want the audit done for you? Run the free /ci-speedup skill to find where your workflows waste billed minutes, then use this page to check its math.
What GitHub includes for free
Included minutes apply to private repositories running on standard GitHub-hosted runners; usage on standard runners in public repositories is free. The allowance resets monthly.
| Plan | Included minutes / month | Artifact storage | Who it covers |
|---|---|---|---|
| Free | 2,000 | 500 MB | Personal accounts and organizations on the free plan |
| Pro | 3,000 | 1 GB | Individual accounts on GitHub Pro |
| Team | 3,000 | 2 GB | Organizations on the Team plan |
| Enterprise Cloud | 50,000 | 50 GB | Organizations on GitHub Enterprise Cloud |
GitHub's per-minute rates
Once the included minutes are spent, each additional minute bills at a rate set by the runner's operating system and size. These are GitHub's published rates, checked 2026-08-13.
| Runner | Rate | What it means for the bill |
|---|---|---|
| Linux 2-vCPU (standard) | $0.006/min | The baseline. ubuntu-latest jobs on private repositories draw included minutes first, then bill at this rate. |
| Windows 2-vCPU (standard) | $0.010/min | The same job bills two-thirds more on Windows than on Linux, so keep Windows jobs to what genuinely needs Windows. |
| macOS (3- or 4-vCPU) | $0.062/min | Roughly ten times the Linux rate. A macOS matrix leg is the most expensive line in most bills. |
| Larger runners (Linux x64, up to 96 vCPU) | $0.006 to $0.252/min | Always billed, on public and private repositories alike; included minutes never apply to larger runners. |
| Self-hosted runners | $0/min from GitHub | GitHub bills no Actions minutes; you pay for and operate the machines, patching, and scaling yourself. |
GitHub Actions cost calculator
Pick a runner, enter your minutes, and the estimate updates as you type: what the workload bills on GitHub-hosted runners at the published rates above, next to the same workload on StarSling's published rate card. Your plan's included minutes are deducted first on standard runners; larger runners are always billed.
Rates checked 2026-08-13 · GitHub's published ratesMonthly estimate
GitHub-hosted
$108.00
18,000 billed min · 2,000 included
StarSling
$80.00
20,000 billed min · no allowance
Save $28.00
per month · 26% less
Estimates use GitHub's published list rates and treat every minute as billed after rounding; storage and re-runs are extra on any provider.
Sources: GitHub's published pricing
The allowances, rates, and billing rules on this page are GitHub's numbers, not ours, checked 2026-08-13. GitHub publishes each of them:
The billing gotchas
Most surprise GitHub Actions bills are not mysterious. They come from a short list of documented billing rules that quietly multiply billed minutes:
- Every job is rounded up to the next whole minute. A 61-second job bills 2 minutes, and a matrix of twenty short jobs pays that rounding tax twenty times per run.
- Re-runs bill like first runs. A flaky suite that needs two attempts doubles that workflow's spend.
- Larger runners are never free and included minutes never apply to them, even on public repositories.
- Windows and macOS bill at higher rates than Linux, so a job that can run on Ubuntu should.
- Storage accrues hourly across the month. Deleting artifacts stops future accrual but does not remove charges already accrued.
- Superseded runs keep billing until they finish or are cancelled. Without a concurrency group, pushing a new commit leaves the old run burning billed minutes for a result nobody will read.
Paste this into your agent
This prompt turns the rules above into an audit of your own repository: where the billed minutes go, how much is rounding and re-runs, and the smallest changes that cut the bill.
Audit this repository's GitHub Actions spend. Inspect .github/workflows/*.yml and .github/workflows/*.yaml, then report where billed minutes go: which workflows and jobs run most often, which runner operating systems and sizes they bill on, and how much of the spend is rounding (jobs that finish in seconds but bill a whole minute), re-runs, superseded runs, or jobs triggered by changes that cannot affect them. Propose the smallest set of changes that cuts billed minutes without changing product behavior: concurrency groups that cancel superseded runs, caches keyed on lockfiles, path filters, affected-only builds, job timeouts, and right-sized runners. Estimate the minutes each change saves, then open one small PR with the highest-impact fixes and before/after reasoning.Cut the minutes before you cut the rate
The cheapest minute is one you never bill. Before changing runners, apply the workflow fixes that remove billed minutes outright; each one keeps GitHub Actions syntax and applies on any runner:
- Cancel superseded runs: a concurrency group keyed on the ref stops billing for commits you have already pushed past.
- Cache dependencies: a cache keyed on the lockfile stops every run re-downloading and rebuilding the same packages.
- Use path filters: docs-only changes should not bill an expensive test suite.
- Build only affected projects: a one-package change should not bill a full monorepo build.
- Bound job timeouts: GitHub otherwise lets a hung job run, and bill, for up to 6 hours.
StarSling's agents open these same fixes as reviewable AI optimization PRs, and every one of them can also be applied by hand; the best-practices catalog carries the YAML.
Pay less per Linux minute, size for size
The other lever is the rate itself. StarSling's Linux runners are drop-in replacements priced 21 to 33% below the GitHub-hosted equivalent at every size. GitHub reference prices are GitHub's larger-runner list prices for Linux x64, checked 2026-08-13; StarSling rates are the published rate card.
Rates checked 2026-08-13 · GitHub's published rates$0.006/min$0.004/min−33%
$0.012/min$0.008/min−33%
$0.022/min$0.016/min−27%
$0.042/min$0.032/min−24%
$0.082/min$0.064/min−22%
$0.162/min$0.128/min−21%
Queue time is never billed on StarSling and there are no seat fees; new accounts get 2,000 free minutes in the first month. The migration is the one-line change below.
The one-line migration
Keep GitHub Actions syntax, keep existing actions, and change the runner label on Ubuntu/Linux jobs to a supported StarSling instance type. StarSling runners are Linux only, so macOS and Windows jobs stay on GitHub-hosted runners.
runs-on: ubuntu-latestruns-on: starsling-ubuntu-24.04- Keep GitHub Actions syntax and existing actions.
- Change runner labels on Ubuntu/Linux jobs only.
- Lower per-minute rate at every size, and queue time is never billed.
- Checks, branch protections, and PR review flow stay in GitHub Actions.
When StarSling helps most
StarSling tends to cut a GitHub Actions bill most when:
- Your workflows already run on
ubuntu-latestorubuntu-24.04, where the migration is a one-lineruns-onchange. - Paid Linux minutes dominate the bill, so a 21 to 33% lower per-minute rate compounds on every run.
- Billed minutes are inflated by cache misses, superseded runs, broad triggers, or runaway jobs, the waste AI optimization PRs turn into reviewable diffs.
- You want the bill to go down while GitHub Actions syntax, checks, and branch protections stay exactly as they are.
A bill dominated by macOS or Windows minutes will not move much on Linux runners: scope those jobs to what genuinely needs them, then move the Ubuntu jobs.
Key caveats
- GitHub's rates and allowances quoted here are GitHub's published figures, checked 2026-08-13; GitHub's billing docs are the authoritative source.
- StarSling runners are Ubuntu/Linux only; macOS and Windows jobs stay on GitHub-hosted runners.
- StarSling keeps GitHub Actions syntax, checks, and branch protections. It is not a replacement CI platform.
- For new accounts, AI-powered optimization PRs are only available to customers on paid plans and are not enabled by default.
FAQ
How much does GitHub Actions cost?
GitHub Actions is free for public repositories on standard GitHub-hosted runners. Private repositories get included minutes by plan (2,000 per month on Free, 3,000 on Pro and Team, 50,000 on Enterprise Cloud), then bill per minute at a rate set by the runner OS and size, starting at $0.006 per minute for standard Linux runners.
Is GitHub Actions free?
For public repositories on standard GitHub-hosted runners, yes. Private repositories are free only up to the plan's included minutes. Larger runners are never free: they are billed on public and private repositories alike, and included minutes do not apply to them.
What do GitHub Actions minutes cost after the free tier?
Standard runners bill $0.006 per minute for Linux, $0.010 for Windows, and $0.062 for macOS. Larger Linux x64 runners run from $0.006 up to $0.252 per minute at 96 vCPU. Every job is rounded up to the next whole minute.
Do included minutes cover larger runners?
No. Included minutes apply only to standard GitHub-hosted runners in private repositories. Larger runners are always billed, even for public repositories.
Why is my GitHub Actions bill higher than expected?
The usual causes are billing rules rather than raw compute: every job rounds up to a whole minute, re-runs bill like first runs, superseded runs keep billing until cancelled, Windows and macOS bill at higher rates than Linux, and artifact storage accrues hourly across the month.
How do I reduce GitHub Actions cost?
Work both levers. Cut billed minutes with concurrency groups that cancel superseded runs, dependency caches, path filters, affected-only builds, and job timeouts. Then cut the per-minute rate: for supported Ubuntu jobs, a drop-in runner label change moves the job to cheaper hardware without touching workflow syntax.
How much do StarSling runners cost?
StarSling Linux runners are usage-based from $0.004 per minute (2 vCPU) to $0.128 per minute (64 vCPU), 21 to 33% below the equivalent GitHub-hosted list price at every size. Queue time is never billed, there are no seat fees, and new accounts get 2,000 free minutes in the first month.
Is StarSling a replacement for GitHub Actions?
No. StarSling is a drop-in runner replacement for supported Ubuntu/Linux GitHub Actions jobs, plus agents that open reviewable optimization PRs. Workflow syntax, checks, branch protections, and PR review stay in GitHub Actions.
Pay less for every GitHub Actions minute
Keep GitHub Actions workflows. Move supported Ubuntu jobs to faster runners, then let optimization PRs improve the workflow over time.
Last reviewed August 14, 2026