Belum ada versi bahasa Melayu, jadi dipaparkan dalam bahasa Inggeris.

How much do GitHub Actions runners cost? Which is cheapest?

Convika Team22 min read

  • ci
  • github-actions
  • self-managed
  • comparison
On this page

GitHub-hosted Linux runners cost $0.006 a minute at 2 vCPUs and $0.022 at 8 vCPUs, and GitHub charges nothing for self-hosted runners. At 8 vCPUs, hosted alternatives range from $0.024 a minute (Depot) to $0.005 (Ubicloud), and a Hetzner server beats GitHub's price past about 5,000 busy minutes a month.

Which one is cheapest for you depends on how many minutes you run and how big your jobs are:

  • Under about 3,000 minutes a month of 2 vCPU jobs: you likely pay nothing. GitHub Pro and GitHub Team include $18 of compute each month, which buys 3,000 minutes at $0.006 ($18 ÷ $0.006), and Blacksmith's pricing page offers "3,000 free min/mo."
  • Thousands of minutes of 8 vCPU jobs: per minute, RunsOn on AWS spot (about $0.0021, plus a licence) and Ubicloud ($0.005 standard, $0.008 premium) cost least. Blacksmith and WarpBuild ($0.016) are 27% under GitHub's $0.022; Depot ($0.024) is 9% over it.
  • A runner that's busy most of the working day: a machine at a flat monthly price wins against most of them. One Hetzner AX42 runs two 8 vCPU jobs at once and works out to about $0.0052 a job-minute when both slots are busy 8 hours a day, 22 days a month.

Every price below was read on the vendor's own page on November 8, 2026, between 10:48 and 11:00 UTC. They're list prices for Linux x64 runners, before tax. Euros are converted at the European Central Bank's reference rate of November 6, 2026: €1 = $1.1165. The comparison is per minute of a job of the same size. Several vendors say their machines finish jobs faster (Blacksmith: "We are 2x faster than GitHub's runners"), which would mean fewer minutes; no runner was benchmarked or run for this post.

What GitHub charges after the January 2026 price cut

GitHub's January 1, 2026 changelog: "GitHub users will see price reductions of up to 39% for GitHub-hosted runners, depending on the machines they use." The rates on GitHub's rate card, read November 8:

GitHub-hosted runnerMemoryPer minute
Linux 1-core$0.002
Linux 2-core, the standard runner$0.006
Linux 4-core16 GB$0.012
Linux 8-core32 GB$0.022
Linux 16-core64 GB$0.042
Windows 2-core$0.010
macOS 3- or 4-core (M1 or Intel)$0.062

Memory is from GitHub's larger runners reference, which gives the 4-core and larger sizes. GitHub bills whole minutes: "GitHub rounds the minutes and partial minutes each job uses up to the nearest whole minute." The 4-core and larger Linux runners are larger runners, "only available for organizations and enterprises using the GitHub Team or GitHub Enterprise Cloud plans."

What each GitHub plan includes

Since October 28, 2026, the monthly allowance is a dollar amount. GitHub's changelog: "Your included Actions compute entitlement is now one shared, dollar-based pool instead of a fixed number of standard runner minutes." On GitHub Team and GitHub Enterprise Cloud, larger runners draw from it too.

PlanIncluded compute a month2-core Linux minutes (÷ $0.006)8-core Linux minutes (÷ $0.022)
GitHub Free$122,000No larger runners
GitHub Pro$183,000No larger runners
GitHub Free for organizations$122,000No larger runners
GitHub Team$183,000818
GitHub Enterprise Cloud$30050,00013,636

Two kinds of use don't touch that allowance. GitHub's billing page lists "Standard GitHub-hosted runners in public repositories" and "Self-hosted runners" as usage that "remains free independently and does not reduce the included compute usage." Larger runners aren't free anywhere: "Larger runners are billed for public repositories."

Copilot code review now uses Actions minutes

Since June 1, 2026, GitHub bills each Copilot code review in two ways. Its billing page: "Each Copilot code review consumes GitHub Actions compute in addition to AI credits." On private repositories, "The runner cost draws from your account or organization's included compute usage." Reviews run on standard GitHub-hosted Ubuntu runners by default, and GitHub's changelog adds that Copilot code review "also supports self-hosted runners and GitHub-hosted larger runners."

More code from agents means more CI. Linear wrote on September 21, 2026 that its test suites had almost quadrupled since the start of the year, and that "Agents have made it exponentially faster to ship code, but validating those changes hasn't quite kept up at the same rate."

Does GitHub charge for self-hosted runners?

No, not as of November 8, 2026. GitHub's billing page puts "Self-hosted runners" under usage that "remains free independently and does not reduce the included compute usage."

The belief that it does comes from GitHub's changelog of December 16, 2025: "On March 1, 2026, GitHub will introduce a new $0.002 per minute GitHub Actions cloud platform charge that will apply to self-hosted runner usage." GitHub put an update at the top of the same post, which was last modified on December 17, 2025: "We're postponing the announced billing change for self-hosted GitHub Actions to take time to re-evaluate our approach." The hosted-runner price cut went ahead on January 1.

Postponed isn't cancelled. The Register, reporting the reversal on December 17, 2025: "GitHub didn't say it won't ever go forward with charging for self-hosted runners, only that it's postponing the change." No later GitHub changelog post found for this article gives a new date. If the charge came back as first announced, 20,000 self-hosted minutes a month would add $40 (20,000 × $0.002).

GitHub Actions runner prices compared

Per-minute list prices for Linux x64, from each vendor's own page on November 8, 2026. Memory is shown where the vendor states it.

RunnerHow it bills4 vCPU8 vCPU16 vCPUIncluded or extra
GitHub-hosted larger runnerPer minute, rounded up$0.012 (16 GB)$0.022 (32 GB)$0.042 (64 GB)$18 a month of compute on GitHub Team
BlacksmithPer minute$0.008$0.016$0.032"3,000 free min/mo."
DepotPlan fee, then per minute, tracked per second$0.012 (16 GB)$0.024 (32 GB)$0.048 (64 GB)Depot's Developer plan ($20 a month, 1 user): 2,000 minutes. Startup ($200 a month): 20,000 minutes. Both counted at 2 vCPUs
NamespacePlan fee, then per minute$0.004 prepaid, $0.006 overage (8 GB)$0.008, $0.012 (16 GB)$0.016, $0.024 (32 GB)Namespace Team ($100 a month): 100,000 unit-minutes. A unit is 1 vCPU and 2 GB for a minute
UbicloudPer minute$0.0025 standard, $0.004 premium (16 GB)$0.005, $0.008 (32 GB)$0.010, $0.016 (64 GB)A $2.50 credit a month. Premium is the default for new users
WarpBuildPer minute$0.008 (16 GB)$0.016 (32 GB)$0.032 (64 GB)On your own AWS, GCP, or Azure: $0.002 a minute plus that cloud's bill
RunsOnLicence, plus AWS's bill in your accountAbout $0.0013About $0.0021About $0.0037Starter licence €300 a year, under 50,000 jobs a month. AWS spot, 7-day average, us-east-1, as RunsOn's page showed it
ActuatedFlat, per server you bring$150 a month for the first server, $125 for each more. "Unlimited build minutes"
Self-hosted on a Hetzner AX42FlatAbout $0.0052 when both slots are busy 8 hours a day€99 a month plus a €49 setup fee, before VAT. GitHub charges nothing

Ubicloud's own price list says "All new users get the superior performance of our premium runners by default"; you can turn premium off in its account settings. Namespace's 8 vCPU shape has 16 GB: its 8 vCPU, 32 GB shape counts 16 units, so it costs twice as much.

What an 8 vCPU job costs a month

The same job on each runner, at 5,000, 20,000, and 100,000 job-minutes a month, where m is the job-minutes. Free allowances are left out (GitHub's $18, Blacksmith's free minutes, Ubicloud's $2.50): they matter only at the low end. So are GitHub's per-seat plan fees, which you pay either way.

Runner, 8 vCPUFormula5,00020,000100,000
GitHub 8-corem × $0.022$110$440$2,200
Depot, Startup plan$200 + (m − 5,000) × $0.024$200$560$2,480
Blacksmithm × $0.016$80$320$1,600
WarpBuildm × $0.016$80$320$1,600
Namespace, Team plan (Business at 100,000)$100 + (m − 12,500) × $0.012; Business: $250 + (m − 31,250) × $0.012$100$190$1,075
Ubicloud premium, the defaultm × $0.008$40$160$800
Ubicloud standardm × $0.005$25$100$500
RunsOn, AWS spot$27.91 licence + m × $0.0021$38$70$238
Hetzner AX42, self-hostedservers × $110.53$111 (1 server)$111 (1 server, busy 95% of working hours)$553 (5 servers), or $221 (2) around the clock
Actuated on AX42 serversservers × $110.53 + $150 + $125 × (servers − 1)$261$261$1,203 (5 servers), or $496 (2)

How the inputs were worked out:

  • Depot: its included minutes are "measured at 2 vCPUs," and its 8 vCPU runner has a 4× minutes multiplier, so the Startup plan's 20,000 minutes cover 20,000 ÷ 4 = 5,000 minutes at 8 vCPUs. Past them, 4 × $0.006 = $0.024 a minute. Depot's one-user Developer plan comes to $128, $488, and $2,408 ($20 + (m − 500) × $0.024). Its included minutes cost more than its overage rate ($200 ÷ 20,000 = $0.01 a minute against $0.006), so the Startup plan buys seats, not cheaper minutes.
  • Namespace: an 8 vCPU, 16 GB job uses 8 units a minute. Team's 100,000 units cover 100,000 ÷ 8 = 12,500 minutes, and Business's 250,000 cover 31,250. Business is cheaper than Team past 25,000 minutes a month. Namespace's page doesn't say which rate its pay-as-you-go Developer plan pays.
  • RunsOn: the Starter licence is €300 a year, or €25 a month: 25 × 1.1165 = $27.91. AWS spot prices move. RunsOn's figure includes a 30 GB root volume; other AWS charges, such as data transfer, aren't counted.
  • Hetzner AX42: €99 × 1.1165 = $110.53 a month. One AX42 has 16 threads and 64 GB, so it runs two 8 vCPU jobs at once. In 8-hour working days, 22 a month, that's 2 × 8 × 60 × 22 = 21,120 job-minutes per server; 100,000 ÷ 21,120 = 4.7, so 5 servers. Around the clock in a 30-day month, a server has 2 × 43,200 = 86,400 job-minutes, so 2. The €49 setup fee per server ($54.71) is a one-time cost, left out.

At 100,000 minutes, the spread is about 9×: $2,200 on GitHub's 8-core runner, $238 with RunsOn on AWS spot. At 5,000 minutes, every runner except GitHub's, Depot's Startup plan, and the flat setups costs under $100.

Flat price or per minute: the break-even

A flat-priced machine costs the same whether it runs one job or ten thousand, so it pays off once the minutes it replaces would cost more than its fee:

break-even job-minutes a month = flat monthly cost ÷ per-minute price

For one Hetzner AX42 at $110.53:

AgainstPer minute, 8 vCPUBreak-even, job-minutes a month
GitHub 8-core$0.022110.53 ÷ 0.022 = 5,024
Blacksmith or WarpBuild$0.016110.53 ÷ 0.016 = 6,908
Namespace Team$100, then $0.012 past 12,50012,500 + 10.53 ÷ 0.012 = 13,378
Ubicloud premium$0.008110.53 ÷ 0.008 = 13,817
Ubicloud standard$0.005110.53 ÷ 0.005 = 22,107
RunsOn on AWS spot$0.0021, plus a $27.91 licence(110.53 − 27.91) ÷ 0.0021 = 39,343

Busy all working day, one AX42 delivers 21,120 job-minutes, which is past every break-even down to Ubicloud's premium runners. Ubicloud standard stays slightly cheaper even then: 21,120 × $0.005 = $105.60. RunsOn's spot prices beat the AX42 unless it runs around the clock. Actuated adds $150 a month to the first server, which moves the break-even against GitHub's 8-core runner to 260.53 ÷ 0.022 = 11,842 job-minutes.

Your own time is the other input. If upkeep takes h hours a month at a cost of c an hour, the flat cost is $110.53 + h × c, and the break-even moves up by h × c ÷ the per-minute price.

Queueing is what a flat runner costs you

A per-minute vendor starts a fresh machine for each job, up to its concurrency limit. A flat machine has fixed slots, and jobs past them wait. Say an agent opens 10 pull requests at once, and each starts a 10-minute 8 vCPU job. On one AX42 with 2 slots, the jobs start at 0, 0, 10, 10, 20, 20, 30, 30, 40, and 40 minutes: the average job waits 20 minutes, and the last result arrives after 50. On runners that start all 10 at once, every result arrives after 10 minutes, for the same job-minutes.

Concurrency limits differ. Namespace's Team plan runs up to 64 Linux vCPUs at once, 8 jobs of this size. Depot lists "Unlimited concurrency" on every plan, and WarpBuild advertises "unlimited job concurrency." Blacksmith's pricing page names "Enterprise-grade concurrency" for its Enterprise plan and gives no number for the others.

Self-hosting on a Hetzner server: what it really costs

Hetzner's AX42 costs €99.00 a month before VAT, plus a €49.00 one-time setup fee. It has an AMD Ryzen 7 PRO 8700GE with 8 cores and 16 threads, 64 GB of DDR5 ECC memory, and two 512 GB NVMe drives, in Helsinki (HEL1) or Falkenstein (FSN1). For bigger jobs, Hetzner's AX102 has a 16-core Ryzen 9 7950X3D and 128 GB, from €159.00 a month plus €129.00 setup. These are prices after Hetzner's rise of April 1, 2026, which heise reported on February 23, 2026: "Hosting provider Hetzner is increasing prices for existing and new services from April 2026. The reason is increased costs for RAM and SSDs."

The server is the cheap part. GitHub's own documentation lists the rest:

  • A clean machine for every job. GitHub: "GitHub recommends implementing autoscaling with ephemeral self-hosted runners." An ephemeral runner takes one job, then GitHub de-registers it. GitHub's example registers one this way:

    ./config.sh --url https://github.com/octo-org --token example-token --ephemeral
    

    You still need automation that wipes the machine or container and registers a new runner after each job. A just-in-time runner, created through GitHub's REST API, starts with ./run.sh --jitconfig ${encoded_jit_config}, and GitHub warns: "Re-using hardware to host JIT runners can risk exposing information from the environment." Both commands are quoted from GitHub's docs and weren't run for this post.

  • Updates. With automatic updates off, "If you do not perform a software update within 30 days, the GitHub Actions service will not queue jobs to your runner."

  • Who can run code on it. GitHub: "self-hosted runners should almost never be used for public repositories on GitHub, because any user can open pull requests against the repository and compromise the environment." On private repositories, it warns, anyone who can fork the repository and open a pull request can reach the runner's secrets and its GITHUB_TOKEN. CI secrets are a target wherever a job runs: in the LiteLLM compromise of October 2026, an attacker pushed branches to two of its repositories whose workflows posted the CI secrets to a webhook (what happened, step by step).

  • Isolation between jobs. Two runners on one server share its operating system unless you give each its own VM. GitHub's hosted runners "execute code within ephemeral and clean isolated virtual machines"; self-hosted runners "do not have guarantees around running in ephemeral clean virtual machines."

  • More than one box. GitHub's answer is Actions Runner Controller, "the recommended Kubernetes-based solution for autoscaling self-hosted runners," or its Runner Scale Set Client for VMs.

Two products sit between doing all of this yourself and a hosted runner. Actuated runs jobs in Firecracker microVMs on servers you provide, with a "Fully managed control-plane, just add servers," for $150 a month for the first server. RunsOn installs runners in your own AWS account, where its Flex mode "launches one ephemeral instance per job," for a licence from €300 a year plus AWS's bill.

Closed or changed: Cirrus Runners and BuildJet

AI answers still recommend two runners you can no longer sign up for.

  • Cirrus Runners sold the flat-price runner many answers describe, and its pricing page still says, on November 8, 2026: "Each Cirrus Runner costs $150 a month and there is no limit on the amount of minutes for your actions." Cirrus Labs announced on April 7, 2026 that it is joining OpenAI, and its announcement says: "We are no longer accepting new customers for Cirrus Runners but will continue supporting the service for existing customers through their existing contract periods." Cirrus CI shut down on June 1, 2026.
  • BuildJet is shut down. Its homepage: "BuildJet for GitHub Actions has been shut down." Its blog post of February 6, 2026 stopped new sign-ups that day and set the end: "As of March 31st, 2026, runners using the BuildJet for GitHub Actions service will no longer be available."

When not to switch

  • Your minutes fit in GitHub's allowance. On GitHub Pro or GitHub Team, $18 a month covers 3,000 minutes at 2 vCPUs. A switch saves nothing there, and adds a vendor.
  • Your repository is public. Standard GitHub-hosted runners cost nothing in public repositories, and self-hosted runners are the setup GitHub says to "almost never" use there.
  • You need macOS or Windows. The savings above are for Linux. GitHub charges $0.062 a minute for macOS and $0.010 for 2-core Windows. Blacksmith's macOS M4 runner is $0.08 a minute at 6 vCPUs. Namespace counts Windows minutes at 2× and macOS at 10× its Linux rate, and its Developer plan has no Windows runners. Ubicloud's price list has Linux runners only.
  • Your CI depends on GitHub's own machines. Copilot code review runs on standard GitHub-hosted runners unless you configure larger runners or "self-hosted runners via Actions Runner Controller (ARC)," in GitHub's words. Custom images "can only be used with larger runners."
  • Your jobs are short and checkout-heavy. Third-party runners sit outside GitHub's network. After Linear switched, its checkouts got slower and sometimes hung: "Because the third-party runners sit outside GitHub's network, they rely on a direct IP link to reach GitHub." Linear wrote its own checkout action that retries.
  • You can't watch the bill. Per-minute billing has no ceiling unless you set one. Forestwalk tried Blacksmith's free tier without a card and got a $1,081.45 invoice. Blacksmith's support told it: "We don't cut workflows when the free tier is exceeded; they continue running and accrue usage at the published rates." Forestwalk added that Blacksmith later offered to credit the overage. Depot has caps: "If you reach a cap, Depot will stop running builds until the next month or until you raise the cap." On GitHub, budgets cap spending, and without a payment method on file "usage is blocked once you consume the included compute usage."

CI also leaves reports that someone has to open. Convika's upload box turns a single HTML file into a link that opens on a phone, as in how to preview an HTML file from Codex or Claude Code. Its no-sign-up preview runs no scripts, and Playwright's HTML report is one index.html that draws itself with JavaScript, so it shows blank there; click Keep this page — free, no card and sign up, and the page moves into your account, where its scripts run.

A bill that can't grow, and no server to run: Skipbox

Fluxenic, the company behind Convika, also makes Skipbox, so this section is about our own product.

Skipbox answers the last point under "When not to switch," the bill nobody watched. It runs the jobs of a GitHub organization's or personal account's private repositories at a flat $39, $79, or $149 a month. There are no usage charges, so a busy month can't turn into an invoice like Forestwalk's, and no spending cap stops your jobs before the month ends. A plan sets size, not minutes: S gives you 4 vCPU and 8 GB, M 8 vCPU and 16 GB, and L 16 vCPU and 32 GB. Jobs run at once while they fit, and the rest wait their turn.

Against GitHub's own runner of the same size on GitHub Team, after its $18 of included compute, a Skipbox plan pays for itself past 4,750 job-minutes a month for S (the 4-core, $0.012 a minute), 4,410 for M (the 8-core, $0.022), and 3,977 for L (the 16-core, $0.042). Past that, more minutes cost nothing more.

Each job gets a fresh Linux VM in Helsinki, deleted when the job ends, and Skipbox keeps the runner up to date. So two of the self-hosting chores above, a clean machine for every job and runner updates, aren't yours. The VM is Ubuntu 24.04 on x64 with Docker, git, build-essential, Node 22, and Python 3.12. GitHub's ubuntu-latest has more preinstalled, so a job that needs another language adds its setup action, such as actions/setup-go. A job can run for up to 6 hours, and there are no macOS or Windows runners. No benchmark of Skipbox has been published, so this post claims no speed for it.

To move a job, install the Skipbox CI app on your organization, or Skipbox (personal) on your personal account, then change the job's runs-on: line to skipbox and push. On plans that include the larger VMs, skipbox-8x16 and skipbox-16x32 ask for them. To leave, change the line back. The Skipbox trial takes no card: one 4 vCPU job at a time, for 7 days or 3,000 job-minutes from your first job, whichever comes first.

Start a free Skipbox trial on skipbox.dev

Frequently asked questions

How much does GitHub Actions cost?

Nothing for standard runners in public repositories. For private repositories, GitHub Free includes $12 of compute a month and GitHub Pro and GitHub Team $18, which is 2,000 or 3,000 minutes on the standard 2-core Linux runner at $0.006 a minute. Past that, GitHub charges per minute: $0.012 for 4-core Linux, $0.022 for 8-core, $0.042 for 16-core, $0.010 for 2-core Windows, and $0.062 for macOS. Storage beyond your plan's allowance is $0.25 per GB a month for artifacts and $0.07 for cache.

Is GitHub charging for self-hosted runners in 2026?

No. GitHub announced a $0.002-a-minute charge on December 16, 2025, to start March 1, 2026, and postponed it the next day. Its billing page, read November 8, 2026, lists self-hosted runners as usage that "remains free independently and does not reduce the included compute usage." No GitHub changelog post since gives the charge a new date.

What is the cheapest GitHub Actions runner?

Per minute at 8 vCPUs, on November 8, 2026: RunsOn on AWS spot, at about $0.0021 plus a €300-a-year licence, then Ubicloud's standard runners at $0.005. Ubicloud's premium runners, the default for new users, are $0.008. Under 3,000 minutes a month of 2 vCPU jobs, GitHub's included compute or Blacksmith's free minutes cost nothing. A self-hosted runner has no GitHub charge; on a Hetzner AX42 at €99 a month, it works out to about $0.0052 a job-minute when two jobs run 8 hours a day.

Blacksmith vs Depot: which costs less?

Per minute, Blacksmith: $0.016 at 8 vCPUs against Depot's $0.024, and $0.008 against $0.012 at 4 vCPUs. Depot also has a plan fee, $20 a month for one user or $200 for a team, with included minutes counted at 2 vCPUs. At 20,000 job-minutes of 8 vCPU jobs, that's $320 on Blacksmith and $560 on Depot's Startup plan. Depot bills GitHub Actions jobs by the second with no one-minute minimum and lets you cap usage. Blacksmith's page offers 3,000 free minutes a month, and its support has said jobs keep running past them.

Is a self-hosted runner on Hetzner worth it?

On cost alone, past a few thousand busy minutes a month. One AX42, at €99 ($110.53) a month, costs the same as GitHub's 8-core runner at 5,024 job-minutes and as Blacksmith at 6,908. It costs you time on top: a clean machine for every job, runner updates within 30 days, care about who can open pull requests, and queues when many jobs arrive together. On a public repository, GitHub says self-hosted runners "should almost never be used."

Are Cirrus Runners and BuildJet still available?

No, not for new customers. Cirrus Labs stopped accepting new Cirrus Runners customers when it announced on April 7, 2026 that it is joining OpenAI; existing customers keep the service through their contract periods. BuildJet stopped new sign-ups on February 6, 2026 and stopped running jobs on March 31, 2026.

Sources