# Is GitHub Actions free?

> Are GitHub Actions free? Yes on public repositories with standard runners, partly on private ones, never on larger runners, with the arithmetic.

Source: https://latchkey.dev/learn/cost/is-github-actions-free  
Updated: 2026-09-20

Are GitHub Actions free? On a public repository with standard GitHub-hosted runners, genuinely yes: GitHub's own reference says their use "is free and unlimited on public repositories". On a private repository you get an allowance of 2,000 to 50,000 minutes a month depending on plan and pay per minute after it, and on larger runners nothing is free anywhere, on public and private repositories alike.

The short answer has three branches and most articles only tell you about one. Whether you pay depends on repository visibility, on the runner you asked for, and only then on your plan.

The rest of this page is those three branches with the rules quoted, the allowance converted into something you can recognize, and the limits that come with the free tier even when no money changes hands.

## Free, and unlimited, on public repositories

GitHub's runner reference does not hedge: "Use of the standard GitHub-hosted runners is free and unlimited on public repositories." There is no minute cap attached to that sentence and no plan requirement. The billing documentation adds GitHub Pages and Dependabot to the same free list, and self-hosted runners are free everywhere because their usage is not metered at all.

Public repositories are also given more machine for nothing. The standard Linux runner has four vCPUs and 16 GB of RAM on a public repository and two vCPUs and 8 GB on a private one, read from the same reference today. Same label, same zero cost, twice the machine.

One exception spoils the sentence, and it is the exception this whole page exists for. Larger runners are not standard runners: "The larger runners are not free for public repositories." An open source project that moves a job to a 16-core machine begins paying $0.042 a minute for a workflow that was free the day before.

## Partly free on private repositories, and the allowance is in minutes

Private repositories get a monthly quantity of included minutes for standard GitHub-hosted runners, which resets at the start of each billing cycle: 2,000 on GitHub Free, 3,000 on Pro and on Team, and 50,000 on GitHub Enterprise Cloud. Storage has separate allowances and its own rates.

Because the allowance is counted in minutes rather than dollars, the useful question is not what it is worth but what it buys. An 8 minute job on a standard Linux runner fits 250 times into 2,000 minutes, which is about 12 runs on each working day of a 21 day month. That sounds generous until you remember the unit is a job, not a run.

A realistic workflow of five jobs that each bill 8 minutes spends 40 minutes per run. That is 50 runs a month on GitHub Free and 75 on Pro or Team. A team of four merging a few pull requests a day will pass it in the second week, which is why [running out of minutes](/learn/cost/github-actions-out-of-minutes) is a more common page to need than the pricing page.

| Plan | Included minutes a month | Runs of one 8-minute job | Runs of a 5-job workflow |
| --- | --- | --- | --- |
| GitHub Free | 2,000 | 250 | 50 |
| GitHub Pro | 3,000 | 375 | 75 |
| GitHub Team | 3,000 | 375 | 75 |
| GitHub Enterprise Cloud | 50,000 | 6,250 | 1,250 |

> Allowances read from [GitHub Actions billing](https://docs.github.com/en/billing/managing-billing-for-your-products/about-billing-for-github-actions) on 20 September 2026. The two right columns are those allowances divided by 8 and by 40 billed minutes, since every job is rounded up to a whole minute separately.

## Never free on larger runners, wherever the repository lives

Larger runners get their own paragraph because they break both of the rules above at once. "Included minutes cannot be used for larger runners", so your allowance does not touch them, and "The larger runners are not free for public repositories", so visibility does not help either. They bill from the first minute of the first job.

They also come with prerequisites that make the billing explicit before you can start. GitHub requires "a valid credit card on file in order to use larger runners", says your "GitHub Actions spending limit must be set to a value greater than zero", and restricts them to organizations on GitHub Team or GitHub Enterprise Cloud. If you have never been asked for a card, you have never used one.

The full size ladder and what each step costs is on [larger runners pricing](/learn/cost/github-actions-larger-runners-pricing).

## What the free tier costs you in limits

Free minutes are not the only thing a plan meters. GitHub's limits reference publishes concurrency by plan, and on the free tier it is the tightest number in the product: 20 concurrent jobs and at most 5 of them on macOS. Pro raises the first number to 40, Team to 60, and Enterprise to 500 with 50 macOS.

Three other ceilings apply whatever you pay. A job on a hosted runner may run for up to six hours, a matrix "can generate a maximum of 256 jobs per workflow run", and since April 2026 "A workflow run can be re-run a maximum of 50 times". The `ubuntu-slim` runner adds a fourth: jobs on it are cut off at 15 minutes.

None of these costs money. All of them decide whether free is workable for you, and the concurrency number is usually the one that decides it first: 20 concurrent jobs is one large matrix.

## Where free stops being the cheapest option

On a public repository, nothing paid can beat free standard runners, and no page on this site will pretend otherwise. If your repository is open and your jobs fit the standard machine, the cost conversation is over.

On a private repository past the allowance, the question becomes what a minute costs rather than whether it is free. GitHub charges $0.006 for a standard Linux minute. Latchkey publishes $0.0025 for a 2 vCPU runner, so 10,000 minutes a month is $60 on GitHub against $25 of compute on Latchkey plus a monthly plan fee of $5 on Developer, $19 on Launch or $49 on Scale, with Latchkey's own included minutes not netted off: $30, $44 or $74 all in. Two of those three are below $60 and one is not, which is what an honest rate comparison looks like at 10,000 minutes. [How Latchkey cuts the GitHub Actions bill](/github-actions-cost-reduction) sets out where that gap stops being marginal.

Before changing a rate, though, check what you are running. [How to reduce GitHub Actions costs](/learn/cost/reduce-github-actions-costs) ranks seven changes by what each one saves, and the top three are all about running less rather than running cheaper.

## FAQ

### Does GitHub Actions cost money?

It costs nothing on a public repository with standard GitHub-hosted runners, and nothing for self-hosted runners on any repository. On a private repository it costs nothing until your included minutes are used up, then $0.006 a minute for a standard Linux runner and more for Windows, macOS and larger machines. Larger runners cost money from the first minute everywhere.

### How many GitHub Actions minutes are free?

2,000 a month on GitHub Free, 3,000 on GitHub Pro and GitHub Team, and 50,000 on GitHub Enterprise Cloud, for standard GitHub-hosted runners in private repositories. They reset at the start of each billing cycle and do not carry over. On public repositories the standard runners are free and unlimited, so no allowance applies.

### What are the GitHub Actions free tier limits on a private repository?

2,000 included minutes a month, 500 MB of artifact storage shared with Packages, and 10 GB of Actions cache per repository. Alongside those, GitHub Free allows 20 concurrent jobs with at most 5 on macOS. The standard Linux runner in a private repository has two vCPUs and 8 GB of RAM, half the machine a public repository gets.

### Are GitHub Actions free for open source projects?

Yes, as long as the repository is public and the jobs run on standard GitHub-hosted runners: GitHub's reference describes that use as free and unlimited. The one way to start paying on an open source project is to move a job to a larger runner, which GitHub bills on public repositories too and which cannot draw on any included minutes.

## References

- [GitHub-hosted runners: free and unlimited on public repositories, and the machine specs (verified 2026-09-20)](https://docs.github.com/en/actions/reference/runners/github-hosted-runners)
- [GitHub Actions billing: included minutes and storage allowances by plan (verified 2026-09-20)](https://docs.github.com/en/billing/managing-billing-for-your-products/about-billing-for-github-actions)
- [GitHub: Actions runner pricing and the larger runner exceptions (verified 2026-09-20)](https://docs.github.com/en/billing/reference/actions-runner-pricing)
- [GitHub Actions limits: concurrency by plan, matrix size and re-runs (verified 2026-09-20)](https://docs.github.com/en/actions/reference/limits)
- [Latchkey pricing: published per-minute runner rates and plan fees (verified 2026-09-20)](https://latchkey.dev/pricing)

---

Latchkey runs CI/CD that repairs its own failures. Agent entry points: https://latchkey.dev/agent.txt, https://latchkey.dev/openapi.json, https://latchkey.dev/llms.txt
