Skip to content
Latchkey LogoLatchkey home
Published September 2026 by Daniel Zoghalchali

The GitHub Actions Cost Index 2026

What a CI minute costs in September 2026, read off the published rate cards: GitHub by operating system and machine size, then eight managed runner vendors at the same 2 vCPU Linux size, turned into three monthly bills.

$0.006
GitHub's published rate for a standard Linux 2-core x64 runner, per minute
docs.github.com, read 21 September 2026
10.33x
What the same minute costs on a standard macOS runner instead of Linux 2-core x64
docs.github.com, read 21 September 2026
$0.002
The lowest published Linux 2 vCPU rate in this index, and it is not ours
Namespace and WarpBuild BYOC price pages, read 20 September 2026

Executive summary

This index records what a CI minute costs in September 2026, from the pages the vendors publish rather than from quotes. GitHub's standard rate card reads $0.006 a minute for Linux 2-core x64, $0.010 for Windows and $0.062 for macOS, read from the Actions runner pricing reference on 21 September 2026. Third-party managed runners at the same 2 vCPU Linux size range from $0.002 to $0.008 a minute on their public price pages, read on 20 September 2026.

Two things matter more than the spread. The first is that the operating system mix moves the bill further than the vendor choice does: macOS is 10.33 times the Linux 2-core rate on GitHub's own card, so a month with a little macOS in it is a different problem from a month without. The second is that a per-minute rate is not a bill. Plan allowances, free tiers, seat fees and flat licenses all sit on top of it, and they reorder the table.

Latchkey publishes $0.0025 a minute for 2 vCPU with 8 GB, which is 58% below GitHub's list rate at the same size. It is not the cheapest rate in this index and this report does not pretend otherwise: Namespace on prepaid credit and WarpBuild in bring-your-own-cloud mode both publish $0.002, and RunsOn's flat license beats any metered rate once the volume is high enough.

What 1,000 minutes costs on a standard GitHub runner. Bar chart: Linux 1-core x64 $2, Linux 2-core arm64 $5.

Derived from the published per-minute rates. macOS is 10.33 times the Linux 2-core x64 rate. · Source: docs.github.com Actions runner pricing, read 21 September 2026

What 1,000 minutes costs on a larger Linux x64 runner. Bar chart: 2-core Advanced $6, 4-core $12, 8-core $22.

Larger runners are charged on public repositories too, and no plan allowance covers them. · Source: docs.github.com Actions runner pricing, read 21 September 2026

A month of 10,000 Linux minutes at 2 vCPU, after allowances. Bar chart: Namespace, prepaid $20, WarpBuild BYOC $20.

After the Team plan allowance and the Blacksmith free tier. The order is not the order of the rate card. · Source: Vendor price pages and docs.github.com, read 20 September 2026 and 21 September 2026

Email me the report

The full report is right here on this page, free. Want the link in your inbox to read later or share, plus new Latchkey reports as they drop? Drop your email and we will send it over.

Sent! Check your inbox for the report link.

No spam. Unsubscribe anytime.

GitHub's own card: the operating system moves the bill more than anything else

GitHub publishes one rate per runner shape. On 21 September 2026 the standard card read $0.002 a minute for the Linux 1-core x64 runner, $0.006 for Linux 2-core x64, $0.005 for Linux 2-core arm64, $0.010 for Windows 2-core x64 and $0.062 for the 3-core or 4-core macOS runner. Those are list rates on private repositories; standard runners on public repositories are free.

The ratios are the part worth internalising. Windows is 1.67 times the Linux 2-core x64 rate and macOS is 10.33 times it. A team arguing about which runner vendor to use while running a macOS job on every pull request is optimising the smaller number, and what a macOS runner costs is usually the shorter path to the saving. Note also that these ratios used to be exactly two and ten, before GitHub re-cut the standard card; any spreadsheet still multiplying Linux minutes by ten for macOS is now reading about 3% low.

  • Linux 2-core x64: $0.006 a minute, the reference rate for everything below.
  • Windows 2-core x64: $0.010, which is 1.67 times Linux.
  • macOS 3/4-core: $0.062, which is 10.33 times Linux.
  • GitHub rounds the minutes and partial minutes each job uses up to the nearest whole minute, so a matrix of very short jobs bills more minutes than it consumes.

Larger runners scale close to linearly, and nothing in your plan covers them

The larger Linux x64 runners run from $0.012 a minute at 4 cores to $0.252 at 96 cores, read on 21 September 2026. Doubling the cores roughly doubles the rate, which means a job that halves its wall clock on twice the cores costs about the same and finishes sooner. That is a good trade and it is the main reason to reach for a larger runner at all.

What catches teams out is the billing rule rather than the rate. GitHub states that larger runners are always charged for, even when used by public repositories or when you have quota available from your plan. A repository that has been free because it is public stops being free the moment a job moves to a larger runner, and the included minutes in your plan never apply. Larger runner pricing sets out the full size ladder.

  • Linux x64 larger runners: $0.012 at 4-core, $0.022 at 8-core, $0.042 at 16-core, $0.082 at 32-core, $0.162 at 64-core, $0.252 at 96-core.
  • Linux arm64 is consistently cheaper at the same core count, from $0.008 at 4-core to $0.098 at 64-core.
  • The larger runners are not free for public repositories, and the plan allowance does not reach them.

The third-party card, and the two vendors that publish a lower rate than we do

At the same 2 vCPU Linux size, the published rates read on 20 September 2026 were: Namespace at $0.002 a minute on prepaid credit, WarpBuild at $0.002 in bring-your-own-cloud mode and $0.004 managed, Latchkey at $0.0025, Blacksmith at $0.004, Depot at $0.006, and Buildkite at $0.004 per vCPU-minute, which is $0.008 for a 2 vCPU agent.

Latchkey is third on that list, not first. Namespace and WarpBuild BYOC are both below us on rate, and each comes with a condition the rate alone does not show: Namespace's $0.002 is a prepaid commitment and carries 4 GB of memory at 2 vCPU against our 8 GB, and WarpBuild's $0.002 runs inside your own cloud account, so the cloud bill is yours. Those are real trade-offs rather than disqualifications, and a team that wants the lowest published Linux rate should be looking at those two.

Several vendors also sell shapes we do not: Blacksmith, Depot and WarpBuild all publish arm64, Windows and macOS runners. Depot tracks usage per second with no one-minute minimum, which is worth more than it sounds on a workload made of very short jobs, given GitHub and most of the field round up. Ubicloud and Semaphore are absent from this index because their recorded rates were last read on 20 August 2026 and this index only carries rates re-read in September; Ubicloud's published Linux rate is below ours as well.

Three worked months, where the rate card stops being the answer

A rate becomes a bill only after the allowances. Take 10,000 Linux minutes a month at 2 vCPU on a Team plan, which includes 3,000 minutes. GitHub bills $42.00, not $60.00. Blacksmith's 3,000 free minutes a month bring it to $28.00, which puts it below WarpBuild managed at $40.00 despite the identical rate. Latchkey is $25.00 and Namespace is $20.00. The ordering of the bill is not the ordering of the rate card.

Scale it to 60,000 minutes and the allowances stop mattering: GitHub is $342.00, Blacksmith $228.00, Latchkey $150.00, Namespace $120.00, Depot $360.00 and Buildkite $480.00 before seats. At that volume RunsOn, whose Starter license was 300 euros a year on 20 September 2026, is cheaper than every metered row here, because the only thing that scales with your minutes is your own AWS bill at spot prices.

The third month is the one that changes decisions. Take 20,000 Linux minutes and 2,000 macOS minutes. GitHub bills $226.00 for that month, of which $124.00 is the macOS, so under a tenth of the minutes is more than half the bill. Moving only the Linux minutes to Latchkey and leaving macOS where it is takes the month to $174.00. That is a 23% saving, not 58%, because the expensive half of the bill did not move. We do not sell a macOS runner, so on this workload the honest answer is a split bill.

The costs a per-minute rate hides: seats, licenses and your own cloud

Two vendors in this index do not sell minutes the way the others do, and comparing them on rate alone gets the answer wrong in both directions. Buildkite charges $30 per active user per month plus $3.50 per agent beyond the ten included on Pro, read on 20 September 2026, before a single job runs. On a team of twenty that is $600 a month standing, which dwarfs the compute difference at the volumes above. Its hosted compute is also priced per vCPU-minute, so the machine size multiplies the rate directly.

RunsOn is the mirror image: a flat license from $350 a year in US dollars, with the compute billed to your own AWS account at whatever spot prices you get. There is no metered rate to put on the chart, which is exactly why it wins at high volume and loses at low volume. The real cost is the AWS account you now own, the EC2 quotas and AMIs you maintain, and the on-call when spot capacity runs short. That is a staffing cost rather than a line item, and this index cannot price it for you.

The same logic applies in reverse to bring-your-own-cloud modes such as WarpBuild's. The $0.002 is the orchestration fee, not the bill. Whether that total beats a fully managed $0.0025 depends entirely on what your cloud charges you for the instances underneath, which is a number only you have.

BuildJet is closed, and a dead rate is not a data point

BuildJet appears in most GitHub Actions pricing comparisons still circulating, usually at $0.004 a minute for 2 vCPU. It should not appear in any of them as a live rate. BuildJet announced its shutdown and stopped running jobs on 31 March 2026, so there is no current price to quote and no service to buy at any price.

It is listed here rather than quietly dropped for two reasons. A reader comparing this index against an older article needs to know why a row vanished, and a vendor that closes is itself a cost signal: the migration off it was unbudgeted work for everyone who had standardised on it. Where a comparison table you are reading still prices BuildJet, treat the whole table as unread since March 2026 rather than as one stale row.

Recommendations

Price your operating system mix before you price your vendor

Pull the Linux, Windows and macOS minute counts out of your own usage report and multiply each by the rate above. If macOS is a meaningful share, that is the line to attack first, whether by cutting the jobs, moving them off macOS, or accepting them and optimising elsewhere. A vendor change on the Linux half of a bill like the third worked month above moves 23% of it, and no vendor choice moves the macOS half.

Use your own minute counts, already rounded

GitHub rounds the minutes and partial minutes each job uses up to the nearest whole minute, so the number in your usage report is already the billed number and the number in your head probably is not. A workflow of twenty twenty-second jobs bills twenty minutes rather than seven. Take the report figure into any comparison, including this one, or put it straight into the GitHub Actions cost calculator.

Compare bills, not rates

Add the plan allowance, the vendor free tier, the seat fees and any license to each candidate before ranking them, and read the runner alternatives roundup for what each vendor includes at its rate. At ten thousand minutes a month the allowance-adjusted order in this index differs from the rate-card order in two places, which is enough to change a decision made on rate alone.

If the lowest published Linux rate is the whole requirement, we are not it

Namespace on prepaid credit and WarpBuild BYOC both publish $0.002 a minute against our $0.0025, and RunsOn's flat license beats every metered rate here once the volume is high enough. Latchkey's case is a flat rate with 8 GB at 2 vCPU, no prepaid commitment and no cloud account to own. Where price alone decides it, the rate card above says who to call.

Outlook

The standard rate card moved once already this year, downward, and the ratios between operating systems moved with it. Any internal model carrying the older integers is now wrong in a direction that flatters GitHub-hosted macOS, so it is worth re-deriving rather than re-reading.

The third-party field is consolidating rather than expanding. One vendor in this index closed in March 2026 and the survivors are differentiating on shapes we do not all sell, arm64 and Windows and macOS, rather than on the Linux rate, where the spread has narrowed to a factor of four across the whole field. Expect the next movement to be in what is included at a rate rather than in the rate itself.

Methodology

Every figure in this report is a published list price read on a stated date. GitHub's rates were read from the Actions runner pricing reference and the Actions billing page on 21 September 2026. The third-party rates were read from each vendor's own pricing page on 20 September 2026 and are recorded, per vendor, in this repository's vendor facts file alongside the concessions each one earns. No rate here is a quoted or negotiated price, and none is an average.

The worked months assume a GitHub Team plan with 3,000 included minutes, private repositories, and a 2 vCPU Linux runner unless stated. The plan allowance is applied to Linux minutes only, which is the conservative reading and makes the GitHub column cheaper rather than dearer. Blacksmith's 3,000 free minutes a month are applied the same way. Seat fees, licenses and bring-your-own-cloud infrastructure costs are excluded from the charts and handled in prose, because they do not scale with minutes.

Buildkite publishes a per vCPU-minute price rather than a per-machine-minute price, so its 2 vCPU figure here is the published unit price doubled, and it is labelled as such wherever it appears. BuildJet carries no rate because the service stopped running jobs on 31 March 2026. Ubicloud and Semaphore are excluded because their recorded rates were last read on 20 August 2026, outside this index's window.

Figures labeled "modeled" are illustrative estimates derived from public pricing and typical pipeline shapes, not a primary survey; figures attributed to a named source reflect that source. Pricing reflects published rates at time of writing and should be verified against current provider pricing.

Sources

Two rows in this index publish a lower rate. Latchkey is $0.0025/min at 2 vCPU with 8 GB, and repairs the runs you would otherwise pay for twice. Start free → 30-day trial · No credit card