GitHub Actions ARM runners cost versus x64
GitHub-hosted arm64 runners are priced below the x64 runners of the same size, except in one case. This page puts the two price lists side by side and shows what the difference is worth on a monthly bill, using the same figures as this site's calculator.
Standard runners
| Operating system | x64, per minute | arm64, per minute |
|---|---|---|
| Linux 2-core | $0.006 | $0.005 |
| Windows 2-core | $0.01 | $0.01 |
On standard runners the saving exists on Linux only: the standard Windows runner costs the same on both architectures. Standard arm64 runners use your plan's included minutes in a private repository like any other standard runner.
Larger runners
| Size | Linux x64 | Linux arm64 | Windows x64 | Windows arm64 |
|---|---|---|---|---|
| 4-core | $0.012 | $0.008 | $0.022 | $0.014 |
| 8-core | $0.022 | $0.014 | $0.042 | $0.026 |
| 16-core | $0.042 | $0.026 | $0.082 | $0.05 |
| 32-core | $0.082 | $0.05 | $0.162 | $0.098 |
| 64-core | $0.162 | $0.098 | $0.322 | $0.194 |
From 4 cores up, an arm64 minute costs between a third and two fifths less than the x64 minute of the same size, on Linux and on Windows alike. Larger runners are billed for every minute: GitHub's pricing reference says included minutes cannot be used for them and that they are not free for public repositories. The 96-core size is listed for x64 only.
Worked example: standard Linux runners
A GitHub Team account runs 40 jobs per working day in a private repository, 6 minutes each, 22 working days a month: 5,280 minutes, of which 3,000 are included and 2,280 are billed.
- All jobs on Linux 2-core x64: $13.68 a month ($164.16 a year).
- All jobs on Linux 2-core arm64: $11.40 a month ($136.80 a year).
The switch saves $2.28 a month, $27.36 a year. On a workload this size the standard-runner saving is real but small, and a workload that fits inside the included minutes saves nothing at all, because nothing was being billed.
Worked example: an 8-core larger runner
The difference matters more where every minute is billed. An organization runs 20 jobs a day on a Linux 8-core runner, 10 minutes each, 22 working days: 4,400 minutes. With the calculator's full version:
- Linux 8-core x64: $96.80 a month.
- Linux 8-core arm64: $61.60 a month.
That is $35.20 a month less, or $422.40 a year, if the job takes the same 10 minutes on arm64.
What if the job is slower on arm64?
It may be. Some builds run at the same speed, some are slower, some faster. The lower rate leaves room for a slower job:
| Job length on arm64 | Minutes per month | Cost per month |
|---|---|---|
| 10 minutes | 4,400 | $61.60 |
| 12 minutes | 5,280 | $73.92 |
| 15 minutes | 6,600 | $92.40 |
| 16 minutes | 7,040 | $98.56 |
In this example arm64 stays cheaper until the job takes half as long again as it does on x64. At 16 minutes the bill passes the x64 figure, and by then you are also waiting six minutes longer for every run.
Before you switch
- Check that everything you run exists for arm64. Container images, prebuilt binaries and the actions you use all have to support the architecture.
- Check what you ship. If your users run x64, tests on arm64 do not replace tests on x64. A common split is to move linting and unit tests and keep release builds where they are.
- Time a few real runs. The tables above only help once you know your own job length on each architecture.
Compare with your own numbers. The free calculator includes the standard Linux and Windows arm64 runners in the runner mix. The full version adds the larger arm64 runners.