How to Compare Per-Minute Rates Across Runner Types
Runner cost is per-minute and varies widely by OS and size, so the same job can cost very different amounts depending on where it runs.
Build a rate table for the runner types you use, then place each job on the cheapest runner that can do the work correctly.
Relative cost by runner type
| Runner type | Relative per-minute cost | Best for |
|---|---|---|
| Standard Linux | Baseline (1x) | Most jobs: lint, unit tests, builds |
| Windows | About 2x Linux | Windows-only builds and tests |
| macOS | About 10x Linux | Apple platform builds only |
| Larger Linux (more vCPU) | Scales with cores | Parallelizable heavy builds |
| GPU runner | Highest | ML training or GPU test suites only |
Pin the cheapest capable runner
.github/workflows/ci.yml
jobs:
unit:
runs-on: ubuntu-latest # baseline rate
ios-build:
runs-on: macos-latest # only where Apple toolchain is required
gpu-tests:
runs-on: [self-hosted, gpu] # reserve GPU runners for GPU workGotchas
- Exact prices change; always confirm current rates on the GitHub billing docs before budgeting.
- GPU and macOS runners are the easiest way to overspend if jobs land there by accident.
- Larger-runner rates stack on top of the OS tier, they do not replace it.
Related guides
How to Account for Minutes Multipliers by OSUnderstand GitHub Actions minute multipliers so you budget correctly: macOS bills at 10x and Windows at 2x th…
How to Weigh the Cost of Larger RunnersDecide when a larger GitHub Actions runner is worth it: more vCPUs finish faster but bill a higher per-minute…