TechCompare LogoTechCompare

GitHub Actions runners with the best internet performance

Ubicloud Linux x64 leads the measured results at 1,104.1 Mbps. 26 of 26 configurations have a score. This ranks the imported tests, not full workflow runtime.

Package downloads, container layers, and remote uploads can dominate a job even when its CPU is fast. This ranking compares the recorded internet transfer speeds in our runner tests. It combines available download and upload measurements into a fixed Mbps score and includes every tested platform. Leaders and coverage counts come from the current dataset rather than a manually written list.

By TechCompare · Updated

Scored configurations
26 / 26
Every tested platform included
Ranking
Highest score first
Fixed benchmark formula

Current leaders

  1. #1

    Ubicloud Linux x64

    AMD Ryzen 9 7950X3D 16-Core

    1,104.1 Mbps

    $0.001/vCPU/min

  2. #2

    Avrea Linux x64

    AMD EPYC 4585PX 16-Core

    921.7 Mbps

    $0.002/vCPU/min

  3. #3

    Avrea Windows x64

    AMD EPYC 4585PX 16-Core

    823 Mbps

    $0.004/vCPU/min

Results imported 2026-10-10. Pricing checked 2026-10-10. Higher is better. All operating systems and architectures are included. Prices and value use USD. RunJob's EUR rate is converted at €1 = $1.1206 (ECB, 2026-10-09).

Calculator

Ranked runner results

GitHub Actions runner CPU models, single thread CPU scores, disk, cache, and internet scores, and value per USD compute cost. Missing tests have no score.
RunnerInternetCost/vCPU/minUSDMax vCPU
Ubicloud Linux x64

AMD Ryzen 9 7950X3D 16-Core

1,104.1
0.00130
Avrea Linux x64

AMD EPYC 4585PX 16-Core

921.7
0.00232
Avrea Windows x64

AMD EPYC 4585PX 16-Core

823
0.00416
Blacksmith Linux x64

AMD EPYC (model hidden)

741.9
0.00232
Blacksmith Windows x64

AMD EPYC 4565P 16-Core

731.2
0.00432
Ubicloud Linux arm64

Ampere Altra Q80-30

670.4
0.000630
Blacksmith Linux arm64

ARM64 (model undisclosed)

616.7
0.001332
RunJob Linux x64

AMD EPYC 7502 32-Core

382.6
0.001348
GitHub macOS arm64

Apple M2 Pro

273.4
0.02075
GitHub Windows x86

AMD EPYC 7763 64-Core

262.4
0.00596
Blacksmith macOS arm64

Apple M4 Pro

244.5
0.013312
Latchkey Linux x64

AMD EPYC 7R13

214.4
0.001316
GitHub Linux x64

AMD EPYC 9V74 80-Core

209.9
0.00396
Namespace Linux x64

AMD EPYC (model hidden)

187.3
0.001564
BuildPulse Linux x64

AMD EPYC 9R45

159.1
0.00264
BuildPulse Linux arm64

AWS Graviton (gen undisclosed)

155.6
0.001364
Namespace Linux arm64

AmpereOne family (SKU undisclosed)

143.6
0.001532
GitHub Windows x64

AMD EPYC 7763 64-Core

134.2
0.00596
GitHub Windows arm64

Cobalt 100

120.8
0.00564
GitHub Linux x86

AMD EPYC 7763 64-Core

116.3
0.00396
StarSling Linux x64

AMD EPYC (model hidden)

116.3
0.00264
GitHub Linux arm64

Microsoft Cobalt 100

102.9
0.002564
Namespace macOS arm64

Apple M4 Pro

79
0.01516
GitHub macOS x64

Intel Core i7-8700B

76.1
0.015512
Avrea macOS arm64

Apple M5 Max

21.2
0.0116
Avrea Linux arm64

Apple M5 Max

18.8
0.00616

Single thread CPU: CoreMark iterations/s. Disk and cache: composite MiB/s. Internet: composite Mbps. Value: score ÷ USD cost/vCPU/min. K means thousand, M means million. Higher is better. Cache uses each runner's best tested cache or artifact backend. Limits: maximum runner vCPU. Prices and value use USD. RunJob's EUR rate is converted at €1 = $1.1206 (ECB, 2026-10-09).

Open the full GitHub Actions runner benchmark tool

How download and upload become one score

When both directions are recorded, the internet score is their geometric mean in Mbps. When only one direction is available, its measured speed is used directly. HTTPS request latency is kept in the report and does not enter the throughput score. This means the ranking summarizes the available evidence, rather than promising equal download and upload coverage for every runner. No score depends on another configuration's result.

Rates from timed transfer records

Protocol 7 measures actual payload bytes and elapsed time through the 60-second deadline, including the final unfinished request. The imported download and upload speeds are the reported median Mbps values. Upload counters track bytes accepted by the client socket. A partial stage can still supply both directions, and the sample counts include timed transfers. Some Cloudflare results have one download sample and three upload samples. Older timeout records use curl bytes divided by the nominal limit and can omit an unfinished request. Their estimates remain identified in the details. Reports with no usable bytes or speed remain unscored.

Match the network test to your job

A workflow that downloads container layers can behave differently from one that sends small API requests or uploads many artifacts. A combined Mbps score does not describe latency, connection reliability, or sustained traffic to every destination. Inspect the available download and upload directions, then time your own remote operations from the candidate runner. Internet value adds normalized compute cost when you need to consider price alongside transfer speed.

Measurement context

The network stage tests the endpoint named in each result, not every package registry or cloud region. Results include Sharktech Amsterdam and Cloudflare, with newer protocol 7 tests alongside older records. Compare matching endpoints, protocols, and transfer limits for a direct network comparison. Routing, endpoint load, connection setup, and test timing can affect a transfer. Some reports include only one usable direction. Those results keep that direction's rate as their score, with sample counts and measurements shown on hover and in the full tool.

Verdict

Use this page to identify runners with strong recorded transfer performance, then check the services your workflow actually reaches. A high internet score is not a guaranteed link rate to every registry. Cache results measure a separate provider or GitHub transfer path.

More runner benchmark scenarios

Frequently asked questions

Which runner currently leads for internet performance?
Ubicloud Linux x64 leads the measured results at 1,104.1 Mbps. 26 of 26 configurations have a score. This ranks the imported tests, not full workflow runtime.
Do these runner rankings update automatically?
Yes. The rankings, leaders, counts, table, and structured data are calculated from the shared benchmark dataset, researched pricing, and saved exchange rate during each site build. The prebuild refreshes the ECB exchange rate and keeps the dated saved rate if the fetch fails. Importing new results or updating prices changes the next build. They do not fetch live measurements or provider prices while you browse.
Are all operating systems and architectures included?
Yes. These pages include every imported Linux, Windows, and macOS configuration, including x64, ARM64, and 32-bit x86 binaries. The full tool lets you narrow the platform or provider. Operating system, compiler, and affinity differences remain part of each measured result.
Does a missing result mean a runner scored zero?
No. Missing or unusable measurements stay unscored and appear after scored results. Value also requires a positive quoted cost per vCPU per minute. A missing test does not establish that a runner is slow.