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.
The label for this machine
runs-on: superci-4cpu
GitHub-hostedLinux 4-core runner, 16 GB
$1,200
100,000 min × $0.012
Your AWSm8a.xlarge on spot · 4 CPUs, 16 GB
$140
Machine $120.50 + disk $10.96 + address $8.338.6 times less
Your CloudflareContainer · 4 CPUs, 12 GB
$673
CPU $479.55 + memory $179.78 + disk $8.35 + plan $5.001.8 times less
Your ModalSandbox · 4 CPUs, 16 GB
$1,113
CPU $473.04 + memory $640.321.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 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.
- 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
- GitHub: GitHub-hosted runners, their sizes
- GitHub: larger runners, their sizes
- GitHub: GitHub Actions billing
- AWS: EC2 Spot Instances pricing
- AWS: EC2 On-Demand pricing
- AWS: EBS pricing
- AWS: VPC pricing (public IPv4 addresses)
- Cloudflare: Containers pricing
- Modal: pricing