self-host →

the fastest github actions runners, ranked.

Single-thread CPU, queue time, and real $/min for every Linux runner worth considering — official GitHub, self-hosted, and third-party SaaS. The leaderboard re-ranks live as you drag the speed-vs-price dial, and RunsOn rows use real EC2 spot prices in your own AWS account.

TL;DR#

Best value

RunsOn, Namespace, and Blacksmith cluster in the cheap-and-fast corner. RunsOn leads self-hosted on both speed and price; AWS CodeBuild is slower and pricier.

Fastest CPU

x64: Namespace, Blacksmith, and RunsOn’s newest families (m8a / m8azn) lead single-thread. arm64: Namespace leads, followed by RunsOn and Warpbuild.

Cheapest

Self-hosted spot on AWS lands ~5.9× under GitHub — the bill goes to your own AWS account, not a middleman.

How to read: leaderboard and deep dive use the configured CPU/queue percentiles (p50/p50). Higher CPU is better, lower queue is better. Price is normalized $/min.

Providers included#

Official: GitHub (Azure)
Self-hosted: 👋RunsOn (AWS) ·AWS CodeBuild (AWS)
Third-party: Namespace (US/Europe) · Blacksmith (Hetzner) · StarSling (Oracle Cloud) · Avrea (Dedicated hardware) · Warpbuild (Hetzner / AWS) · Ubicloud (Hetzner)

CPU speed vs price per minute#

Each dot is a runner. Up is faster, left is cheaper — so the top-left corner is where you want to be. Dot size is queue time; hover any dot or row to link the two. Drag the speed-vs-price dial and the leaderboard re-ranks live.

Last updated:

Benchmarks use Linux runners only, the Passmark single-thread metric, and the last 30 days of data.

arch
runson price
cheaperfasterleaning faster
70% speed / 30% price
cpu × price × queuespot · us-east-1 · x64
★ cheap & fast1500200025003000350040004500$0.0000$0.0013$0.0026$0.0039$0.0052$0.0065price / min (normalized to 2 vCPU / 8GB) → cheaper is leftCPU score → faster is upRunsOnGitHub

who's who

RunsOn — self-hosted, your AWS account
GitHub — official, the reference price
AWS CodeBuild — managed, in your account
SaaS — Namespace, Blacksmith, Avrea, Warpbuild, Ubicloud

dot size = queue time

~10s
~25s
~40s

Smaller is better — the wait between trigger and first step. GitHub queues fastest; self-hosted spot trades a few seconds for much lower cost.

rank by
#providertypespecscpuqueueprice / minvalue
1Namespacenscloud-ubuntu-24.04-amd64-2x8SaaSstandard4×8GBnorm $0.0024452810s$0.00401.5× cheaper90
2RunsOn family=m8aznSelf-hostedspot2×8GB426923s$0.00125.1× cheaper85
3Avreaavrea-ubuntu-24.04-2-vcpuSaaS2×8GB444818s$0.00401.5× cheaper77
4Blacksmithblacksmith-2vcpu-ubuntu-2404SaaS2×8GB435113s$0.00401.5× cheaper76
5RunsOn family=m8aSelf-hostedspot2×8GB380624s$0.00096.9× cheaper74
6Ubicloudubicloud-premium-2-ubuntu-2404SaaSpremium2×8GB361627s$0.00163.8× cheaper64
7Warpbuildwarp-ubuntu-2404-x64-2xSaaS2×7GB36999s$0.00401.5× cheaper58
8RunsOn family=m8i+r8iSelf-hostedspot2×8GB319523s$0.00105.9× cheaper58
9Ubicloudubicloud-standard-2-ubuntu-2404SaaSstandard2×8GB290814s$0.00106.0× cheaper53
10RunsOn family=c7a+m7a+r7aSelf-hostedspot2×8GB287526s$0.00106.0× cheaper49
11StarSlingstarsling-ubuntu-24.04SaaS2×8GB333513s$0.00401.5× cheaper48
12Ubicloudubicloud-standard-2-ubuntu-2404SaaSstandard2×8GB290936s$0.00106.0× cheaper47
13RunsOn family=c6a+m6a+r6aSelf-hostedspot2×8GB258425s$0.00106.2× cheaper42
14RunsOn family=c7i+m7i+r7iSelf-hostedspot2×8GB254325s$0.00096.5× cheaper41
15GitHububuntu-24.04Official2×8GB23297s$0.0060≈ GitHub9
16GitHubgithub24-2cpu-x64, ubuntu-24.04Official2×8GB22727s$0.0060≈ GitHub7
17GitHubgithub24-2cpu-x64, ubuntu-24.04Official2×8GB21946s$0.0060≈ GitHub5
18AWS CodeBuildcodebuild-ubuntu-8.0-medium, codebuild-ubuntu-8.0-large, codebuild-ubuntu-8.0-smallSelf-hosted2×4GBnorm $0.0059214826s$0.00501.2× cheaper4
19AWS CodeBuildcodebuild-ubuntu-8.0-large, codebuild-ubuntu-8.0-small, codebuild-ubuntu-8.0-mediumSelf-hosted2×4GBnorm $0.0059202226s$0.00501.2× cheaper1
20AWS CodeBuildcodebuild-ubuntu-8.0-large, codebuild-ubuntu-8.0-small, codebuild-ubuntu-8.0-mediumSelf-hosted2×4GBnorm $0.0059202026s$0.00501.2× cheaper1
Value score = weighted speed + price, adjusted for queue (the dial sets the weights). The price side is normalized for the shape the price buys (specs column): vCPU and RAM weighted by AWS Fargate’s per-resource prices (1 vCPU ≈ 9.1 GB), against a 2 vCPU / 8GB reference — so a provider selling 4 vCPU for the same $/min scores as cheaper, without pretending RAM is free. The table still shows the real $/min. RunsOn $/min = real EC2 .large spot in us-east-1 + EBS + license amortized (€300/yr). GitHub is the price baseline for the “× cheaper” column.

How to choose#

$/minWant the lowest bill? Sort by cheapest. Self-hosted spot on AWS lands ~5.9× under GitHub — the cost goes to your AWS account, not a middleman.
cpuWant raw speed? Sort by fastest CPU. Namespace, Blacksmith and RunsOn’s newest families (m8a / m8azn) lead x64 single-thread.
queueLatency-sensitive? Sort by lowest queue. GitHub starts fastest; for self-hosted, warm pools cut RunsOn queues to under ~10s.
ctrlWant control & isolation? Pick self-hosted. RunsOn keeps runners, logs, caches and secrets inside your own VPC — no third party touches your code. See networking options.

Deep dive (full data)#

Open full benchmark table with distributions

Includes per-runner distributions, CPU/queue percentiles, and provider metadata for the last 30 days.

# Provider CPU speed (p50) Queue time (p50) + 30d P90 trend Processor
1
Namespace SaaS
nscloud-ubuntu-24.04-amd64-2x8
$0.004/min 1.5x cheaper standard
p50: 4528p90: 4701
p50: 10.0sp90: 12.0s
AMD EPYC (x86_64)
US/Europe (might vary)
25 samples

CPU 4500+
2
Avrea SaaS
avrea-ubuntu-24.04-2-vcpu
$0.004/min 1.5x cheaper
p50: 4441p90: 4536
p50: 15.0sp90: 24.0s
AMD EPYC 4585PX 16-Core Processor(x86_64)
Dedicated hardware
14 samples
3
Blacksmith SaaS
blacksmith-2vcpu-ubuntu-2404
$0.004/min 1.5x cheaper
p50: 4351p90: 4580
p50: 13.0sp90: 14.0s
AMD EPYC (x86_64)
Hetzner
25 samples
4
RunsOn Self-Hosted
runs-on,family=m8azn
$0.0012/min 5.1x cheaper spot
p50: 4269p90: 4274
p50: 23.0sp90: 31.0s
AMD EPYC 9R05 (x86_64)
AWS
21 samples

CPU 4000+
5
RunsOn Self-Hosted
runs-on,family=m8a
$0.0009/min 6.9x cheaper spot
p50: 3806p90: 3824
p50: 24.0sp90: 58.0s
AMD EPYC 9R45 (x86_64)
AWS
21 samples
6
Warpbuild SaaS
warp-ubuntu-2404-x64-2x
$0.004/min 1.5x cheaper
p50: 3699p90: 3841
p50: 9.0sp90: 27.0s
AMD Ryzen 9 7950X3D 16-Core Processor(x86_64)
Hetzner / AWS / BYOC
25 samples
7
Ubicloud SaaS
ubicloud-premium-2-ubuntu-2404
$0.0016/min 3.8x cheaper premium
p50: 3522p90: 3849
p50: 27.0sp90: 35.0s
AMD Ryzen 9 7950X3D 16-Core Processor(x86_64)
Hetzner (Germany)
24 samples

CPU 3500+
8
StarSling SaaS
starsling-ubuntu-24.04
$0.004/min 1.5x cheaper
p50: 3306p90: 3335
p50: 11.0sp90: 13.0s
AMD EPYC (x86_64)
Oracle Cloud
2 samples
9
RunsOn Self-Hosted
runs-on,family=m8i+r8i
$0.001/min 5.9x cheaper spot
p50: 3195p90: 3202
p50: 23.0sp90: 24.0s
Intel(R) Xeon(R) 6975P-C (x86_64)
AWS
21 samples

CPU 3000+
10
Ubicloud SaaS
ubicloud-standard-2-ubuntu-2404
$0.001/min 6.0x cheaper standard
p50: 2908p90: 2954
p50: 14.0sp90: 38.0s
AMD EPYC 9454P 48-Core Processor(x86_64)
Hetzner (Germany)
23 samples
11
Ubicloud SaaS
ubicloud-standard-2-ubuntu-2404
$0.001/min 6.0x cheaper standard
p50: 2879p90: 2909
p50: 13.0sp90: 36.0s
AMD EPYC 9454 48-Core Processor(x86_64)
Hetzner (Germany)
2 samples
12
RunsOn Self-Hosted
runs-on,family=c7a+m7a+r7a
$0.001/min 6.0x cheaper spot
p50: 2875p90: 2880
p50: 26.0sp90: 33.0s
AMD EPYC 9R14 (x86_64)
AWS
21 samples
13
RunsOn Self-Hosted
runs-on,family=m6a
$0.001/min 6.2x cheaper spot
p50: 2584p90: 2589
p50: 25.0sp90: 26.0s
AMD EPYC 7R13 Processor (x86_64)
AWS
21 samples
14
RunsOn Self-Hosted
runs-on,family=c7i+m7i+r7i
$0.0009/min 6.5x cheaper spot
p50: 2543p90: 2877
p50: 25.0sp90: 26.0s
Intel(R) Xeon(R) Platinum 8488C (x86_64)
AWS
21 samples

CPU 2500+
15
GitHub Official
ubuntu-24.04
$0.006/min ≈ GitHub
p50: 2329p90: 2332
p50: 7.0sp90: 8.0s
Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz (x86_64)
Azure
3 samples
16
GitHub Official
github24-2cpu-x64, ubuntu-24.04
$0.006/min ≈ GitHub
p50: 2271p90: 2276
p50: 7.0sp90: 8.0s
AMD EPYC 7763 64-Core Processor(x86_64)
Azure
28 samples
17
GitHub Official
github24-2cpu-x64, ubuntu-24.04
$0.006/min ≈ GitHub
p50: 2194p90: 2768
p50: 6.0sp90: 12.0s
AMD EPYC 9V74 80-Core Processor(x86_64)
Azure
19 samples
18
AWS CodeBuild Self-Hosted
codebuild-ubuntu-8.0-medium, codebuild-ubuntu-8.0-large, codebuild-ubuntu-8.0-small
$0.005/min 1.2x cheaper
p50: 2148p90: 2155
p50: 26.0sp90: 37.0s
Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz (x86_64)
AWS
34 samples
19
AWS CodeBuild Self-Hosted
codebuild-ubuntu-8.0-large, codebuild-ubuntu-8.0-small, codebuild-ubuntu-8.0-medium
$0.005/min 1.2x cheaper
p50: 2021p90: 2035
p50: 26.0sp90: 30.0s
Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz (x86_64)
AWS
36 samples
20
AWS CodeBuild Self-Hosted
codebuild-ubuntu-8.0-large, codebuild-ubuntu-8.0-small, codebuild-ubuntu-8.0-medium
$0.005/min 1.2x cheaper
p50: 2020p90: 2033
p50: 26.0sp90: 28.0s
Intel(R) Xeon(R) Platinum 8223CL CPU @ 3.00GHz (x86_64)
AWS
5 samples
# Provider CPU speed (p50) Queue time (p50) + 30d P90 trend Processor
1
Avrea SaaS
avrea-ubuntu-24.04-arm-2-vcpu
$0.012/min 2.4x pricier
p50: 5003p90: 5017
p50: 19.0sp90: 32.0s
Apple M5 Max + Virtualization
Dedicated hardware
15 samples

CPU 5000+
2
Namespace SaaS
nscloud-ubuntu-24.04-arm64-2x8,namespace-features:linux-on-apple-silicon=true
$0.012/min 2.4x pricier premium
p50: 4785p90: 4945
p50: 14.0sp90: 26.0s
Apple M4 + Virtualization
US/Europe (might vary)
24 samples

CPU 4500+
3
RunsOn Self-Hosted
runs-on,family=m9g
$0.0009/min 5.5x cheaper spot
p50: 2469p90: 2472
p50: 25.0sp90: 45.0s
Neoverse-V3 (aarch64)
AWS
23 samples

CPU 2000+
4
Warpbuild SaaS
warp-ubuntu-latest-arm64-2x
$0.003/min 1.7x cheaper
p50: 1945p90: 1946
p50: 13.0sp90: 50.0s
Neoverse-V2 (aarch64)
Hetzner / AWS / BYOC
24 samples
5
RunsOn Self-Hosted
runs-on,family=c8g+m8g+r8g
$0.0009/min 5.7x cheaper spot
p50: 1946p90: 1948
p50: 25.0sp90: 28.0s
Neoverse-V2 (aarch64)
AWS
46 samples
6
GitHub Official
github24-2cpu-arm64
$0.005/min ≈ GitHub
p50: 1874p90: 1878
p50: 6.0sp90: 7.0s
Neoverse-N2 (aarch64)
Azure
23 samples
7
RunsOn Self-Hosted
runs-on,family=c7g+m7g+r7g
$0.001/min 5.1x cheaper spot
p50: 1559p90: 1564
p50: 27.0sp90: 31.0s
Neoverse-V1 (aarch64)
AWS
23 samples

CPU 1500+
8
Blacksmith SaaS
blacksmith-2vcpu-ubuntu-2404-arm
$0.0025/min 2.0x cheaper
p50: 1358p90: 1375
p50: 20.0sp90: 22.0s
Ampere-1a (aarch64)
Hetzner
18 samples
9
Blacksmith SaaS
blacksmith-2vcpu-ubuntu-2404-arm
$0.0025/min 2.0x cheaper
p50: 1326p90: 1329
p50: 18.0sp90: 24.0s
Neoverse-N1 (aarch64)
Hetzner
6 samples
10
Ubicloud SaaS
ubicloud-standard-2-arm-ubuntu-2404
$0.001/min 5.0x cheaper standard
p50: 1314p90: 1320
p50: 14.0sp90: 34.0s
Neoverse-N1 (aarch64)
Hetzner (Germany)
24 samples
11
Namespace SaaS
nscloud-ubuntu-24.04-arm64-2x8
$0.004/min 1.3x cheaper standard
p50: 1231p90: 1251
p50: 17.0sp90: 30.0s
Ampere-1a (aarch64)
US/Europe (might vary)
12 samples

What the data says#

Performance
  • Namespace, Blacksmith and RunsOn lead x64 single-thread.
  • Namespace leads arm64; RunsOn and Warpbuild follow. GitHub’s newer Cobalt CPUs are closer but not consistently available.
  • GitHub runs older CPUs overall, most visibly on x64.
Reliability & scaling
  • GitHub’s queue times are excellent for standard runners — and much improved for larger ones.
  • AWS scales better than Hetzner-backed fleets under load.
  • Some SaaS providers gate higher vCPU concurrency (and static egress IPs) behind requests or fees; self-hosted RunsOn and CodeBuild aren’t affected.
  • Variable CPU models on some providers (e.g. Ubicloud tiers) can affect reproducibility.
Security & infra
  • RunsOn is fully self-hosted in your AWS account — your IAM, your network, a dedicated GitHub App.
  • AWS CodeBuild is managed by AWS but runs in your account (shared GitHub App for registration).
  • GitHub runners are managed by GitHub on Azure; private access needs secrets or OIDC.
  • Namespace, Blacksmith, Warpbuild, Ubicloud and Depot are SaaS; control plane and registration aren’t fully yours.

Gap: detailed concurrency/scaling tests are still missing; they matter for high-volume CI/CD (thousands of jobs/day). RunsOn routinely handles more than 1M jobs every day.

Benchmark changelog#

Routine benchmark sample refreshes, design-only changes, SEO edits, and internal refactors are omitted. These are the public-facing changes that affected provider coverage, pricing assumptions, scoring, or data filtering.

  • Aug 2024 — The benchmark tracked CPU speed and queue time across the initial runner-provider set.
  • Oct 2024 — Results moved toward p50/p95 CPU and queue distributions, and restricted or unavailable provider rows were handled explicitly.
  • Jul 2025 — Provider summaries were revamped, and the median calculation was corrected.
  • Oct 2025 — RunsOn m8a family results were added.
  • Feb 2026 — The pricing-aware leaderboard was added, including provider pricing metadata, CPU-vs-price ranking, RunsOn EBS/license costs, and Cirrus monthly pricing normalization.
  • Feb 2026 — RunsOn family-specific pricing, m8azn, spot/on-demand handling, p50/p90 CPU and queue percentiles, queue penalties, value scoring fixes, and family exclusions were added.
  • Apr 2026 — BuildJet and Cirrus were removed from active benchmark/pricing coverage; Cirrus was removed after Cirrus Labs announced it was joining OpenAI and Cirrus Runners stopped accepting new customers.
  • May 2026 — Shipfox was removed and Ubicloud pricing was updated.
  • Jun 2026 — m9g was added, and value scoring started normalizing price by runner resources so differently sized runner shapes compare more fairly.
  • Jun 2026 — Avrea was added with published pay-as-you-go pricing and Apple M5 Max ARM labeling.
  • Jul 2026 — StarSling was added with published pay-as-you-go pricing for x64 Linux runners.
Fastest self-hosted, at ~5.9× lower cost.

The benchmark runs on the same RunsOn anyone can deploy. One CloudFormation stack, your account, ~10 minutes.

Note: this analysis is updated regularly. Things change quickly in this space, so make sure you do your own research as well.