# GitHub Actions Pricing Explained: Minutes, Runners & Real Cost

> How GitHub Actions pricing actually works - included minutes, per-minute rates, multipliers for Windows and macOS, and larger-runner billing - and where the bill comes from.

Source: https://latchkey.dev/learn/ci-cost/github-actions-pricing-explained  
Updated: 2026-06-25

GitHub Actions looks free until it is not. Here is exactly how the billing model works and which line items quietly add up.

GitHub Actions is billed on compute minutes. Public repos are free; private repos get a monthly included allowance and then pay per minute. The details - OS multipliers, larger-runner rates, and storage - are where bills surprise teams.

## Included minutes and overage

Private repos get a monthly free allowance (e.g. 2,000 minutes on Free, more on Team/Enterprise). Past that you pay per minute. The allowance only applies to **standard** runners.

## OS multipliers

Minutes are not equal. Linux is the base rate; **Windows is ~2x** and **macOS is ~10x** the Linux per-minute price. A macOS-heavy mobile pipeline burns the allowance roughly ten times faster.

- Linux 2-core: ~$0.008/min
- Windows 2-core: ~$0.016/min
- macOS: ~$0.08/min and up

## Larger runners bill from minute one

Larger runners (4, 8, 16, 32, 64 vCPU) are billed per minute with **no free allowance** and a higher rate. They are convenient for big builds but are where invoices balloon.

## The hidden cost: re-runs

Every flaky failure you re-run is minutes paid twice. At scale, transient failures can add 10–20% to a CI bill - pure waste that self-healing runners eliminate.

## FAQ

### Are public repositories really free?

Standard runners on public repos are free. Larger runners and some features still bill, and self-hosted/managed runners are about control and cost at scale.

---

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
