# GitHub Actions cost calculator

What a month of jobs costs on GitHub's runners, and on machines of the same size that SuperCI starts in your own AWS, Cloudflare or Modal account.

For example, 100,000 minutes a month of Linux jobs on 4 CPUs and 16 GB:

- GitHub's Linux 4-core runner, 16 GB: $1,200.00
- AWS, m8a.xlarge on spot, 4 CPUs, 16 GB: $139.79 (8.6 times less)
- Cloudflare, every CPU busy, Container, 4 CPUs, 12 GB: $672.67 (1.8 times less)
- Modal, Sandbox, 4 CPUs, 16 GB: $1,113.36 (1.1 times less)

## A minute on each machine

The price of one minute of a job, in US dollars, on a machine with the CPUs and memory of GitHub's runner. AWS's prices are for us-east-1 on 12 October 2026, with the machine's disk and public address counted in; spot prices change through the day and from zone to zone. Cloudflare's are with every CPU busy, before its plan. A dash is a machine that cloud does not have.

### Linux, x64

| CPUs | Memory | GitHub-hosted | AWS spot | AWS on-demand | Cloudflare | Modal | The label |
|---|---|---|---|---|---|---|---|
| 2 | 8 GB | $0.006 | $0.0008 | $0.0022 | $0.0037 | $0.0056 | `superci-2cpu` |
| 4 | 16 GB | $0.012 | $0.0014 | $0.0043 | $0.0067 | $0.011 | `superci-4cpu` |
| 8 | 32 GB | $0.022 | $0.0030 | $0.0083 | – | $0.022 | `superci-8cpu` |
| 16 | 64 GB | $0.042 | $0.0058 | $0.016 | – | $0.045 | `superci-16cpu` |
| 32 | 128 GB | $0.082 | $0.010 | $0.033 | – | $0.089 | `superci-32cpu` |

### Linux, arm64

| CPUs | Memory | GitHub-hosted | AWS spot | AWS on-demand | Cloudflare | Modal | The label |
|---|---|---|---|---|---|---|---|
| 2 | 8 GB | $0.005 | $0.0008 | $0.0017 | – | – | `superci-2cpu-arm64` |
| 4 | 16 GB | $0.008 | $0.0014 | $0.0032 | – | – | `superci-4cpu-arm64` |
| 8 | 32 GB | $0.014 | $0.0020 | $0.0062 | – | – | `superci-8cpu-arm64` |
| 16 | 64 GB | $0.026 | $0.0046 | $0.012 | – | – | `superci-16cpu-arm64` |
| 32 | 128 GB | $0.050 | $0.0091 | $0.024 | – | – | `superci-32cpu-arm64` |

### Windows, x64

| CPUs | Memory | GitHub-hosted | AWS spot | AWS on-demand | Cloudflare | Modal | The label |
|---|---|---|---|---|---|---|---|
| 2 | 8 GB | $0.010 | $0.0020 | $0.0038 | – | – | `superci-windows-2cpu` |
| 4 | 16 GB | $0.022 | $0.0037 | $0.0074 | – | – | `superci-windows-4cpu` |
| 8 | 32 GB | $0.042 | $0.0072 | $0.015 | – | – | `superci-windows-8cpu` |
| 16 | 64 GB | $0.082 | $0.014 | $0.029 | – | – | `superci-windows-16cpu` |
| 32 | 128 GB | $0.162 | $0.028 | $0.057 | – | – | `superci-windows-32cpu` |

### Linux with a GPU (an NVIDIA T4)

| CPUs | Memory | GitHub-hosted | AWS spot | AWS on-demand | Cloudflare | Modal | The label |
|---|---|---|---|---|---|---|---|
| 4 | 32 GB | $0.052 | $0.0043 | $0.013 | – | $0.027 | `superci-gpu-4cpu-32gb` |

Add `-ondemand` to a label for an on-demand machine on AWS, and `-aws`, `-cloudflare` or `-modal` to keep a job in one cloud. [Labels and machines](/docs/labels) has every part a label can have.

## How it is worked out

- **GitHub's bill** is your minutes times GitHub's price for a minute on a runner of that size. GitHub rounds every job up to a whole minute.
- **AWS** is the same minutes on the machine SuperCI starts for the label: the machine at its spot or on-demand price, its disk (60 GB of gp3, 100 GB on Windows, at $0.08 a GB-month) and its public IPv4 address ($0.005 an hour).
- **Cloudflare** bills a container by the second: $0.000020 for each CPU while it is in use, $0.0000025 for each GiB of memory and $0.00000007 for each GB of its 20 GB disk while it runs. Containers need the Workers Paid plan, at $5 a month, which includes 375 CPU-minutes, 25 GiB-hours of memory and 200 GB-hours of disk. The bill is the plan and what goes over those.
- **Modal** bills a sandbox by the second for the size it has: $0.00003942 for each physical core, which is two CPUs, $0.00000667 for each GiB of memory, and $0.000164 for a T4.
- **SuperCI** adds nothing. It is open source, and no service of ours stands between you and your cloud.

## The same size everywhere

Each machine has the CPUs and the memory of GitHub's runner beside it, so the label names both where it has to: `runs-on: superci-4cpu` is 4 CPUs and 16 GB, like GitHub's 4-core runner. (`runs-on: superci` alone is 4 CPUs and 8 GB, and costs a little less.) Three machines differ:

- **Cloudflare's largest container** has 4 CPUs and 12 GB, so at 4 CPUs it has 12 GB where the others have 16.
- **GitHub's GPU runner** has 4 cores, 28 GB and a T4. The label asks for 32 GB, and the smallest T4 machine AWS has with that memory has 8 CPUs.
- **Cloudflare bills only the CPU a job uses**, where the others bill the whole machine. The calculator starts with every CPU busy all the time, which is the most a job can cost there; choose half or a quarter for jobs that mostly wait.

## What is not counted

- **The minutes in your GitHub plan.** In private repositories GitHub Free includes 2,000 minutes a month, Pro and Team 3,000, and Enterprise Cloud 50,000. They count on the standard 2-core runners only: larger runners are billed from the first minute. Public repositories pay nothing on standard runners.
- **The time a machine takes to start.** About 15 seconds on AWS and about 7 on Cloudflare, which your cloud bills and GitHub does not.
- **Jobs that left spot.** When AWS takes a spot machine back, or has none, the job runs on an on-demand machine at the on-demand price. See [Spot machines](/docs/spot-machines).
- **Modal's free compute.** Its Starter plan has no monthly fee and includes $30 of compute a month.
- **Cloudflare's Worker and Durable Objects.** A Worker starts the containers and each container has a Durable Object; Cloudflare bills both as Workers usage, beside the container.
- **Data sent out**, and the control plane itself, which is a small function in your account and not a machine that is always on.

## Sources

Read on 12 October 2026.

- [GitHub: Actions runner pricing](https://docs.github.com/en/billing/reference/actions-runner-pricing)
- [GitHub: GitHub-hosted runners, their sizes](https://docs.github.com/en/actions/reference/runners/github-hosted-runners)
- [GitHub: larger runners, their sizes](https://docs.github.com/en/actions/reference/runners/larger-runners)
- [GitHub: GitHub Actions billing](https://docs.github.com/en/billing/concepts/product-billing/github-actions)
- [AWS: EC2 Spot Instances pricing](https://aws.amazon.com/ec2/spot/pricing/)
- [AWS: EC2 On-Demand pricing](https://aws.amazon.com/ec2/pricing/on-demand/)
- [AWS: EBS pricing](https://aws.amazon.com/ebs/pricing/)
- [AWS: VPC pricing (public IPv4 addresses)](https://aws.amazon.com/vpc/pricing/)
- [Cloudflare: Containers pricing](https://developers.cloudflare.com/containers/pricing/)
- [Modal: pricing](https://modal.com/pricing)
