Self-hosted versus GitHub-hosted runners: when the minutes bill disappears
Moving jobs to your own machines takes them off the GitHub Actions minutes bill. It does not make them free: the cost moves to hardware and upkeep that you pay for yourself. This page shows how to find the usage at which the move pays, with figures from this site's calculator.
What GitHub charges for self-hosted runners
GitHub's Actions billing page, read on 2026-10-05, states that GitHub Actions usage is free for self-hosted runners and for public repositories that use standard GitHub-hosted runners. Neither GitHub page read on that date lists a platform charge for self-hosted minutes, so the calculator applies none. If GitHub has announced a change somewhere else, it is not reflected here: check the billing page linked at the foot of this page before you decide.
Self-hosted jobs also do not use your plan's included minutes. The allowance stays available for whatever you keep on GitHub-hosted runners.
What replaces the minutes bill
None of these have a price in this site's data, because they are yours, not a vendor's list price. The calculator asks you for them:
- Machines. Rent or depreciation for each runner machine, per month, including disk and network.
- Upkeep. Hours per month spent on updates, runner upgrades, cleaning disks and fixing stuck jobs, at what an hour of that person's time costs you.
- Things GitHub-hosted runners do for you. A fresh machine for every job and preinstalled tools. On your own runner you build each of them or go without.
The break-even formula
Self-hosted cost = machines × monthly cost per machine + upkeep hours × hourly cost. The GitHub-hosted bill only starts after the included minutes, so:
Break-even minutes = included minutes + self-hosted cost ÷ the average per-minute rate of your runner mix.
Below that many minutes a month, GitHub-hosted is cheaper. Above it, your own machines are, provided they can carry the load and the jobs take the same time on them.
Worked example: a typical small team
A GitHub Team account runs 40 jobs per working day in a private repository, 6 minutes each, 22 working days a month, on the Linux 2-core runner: 5,280 minutes, 3,000 included, a hosted bill of $13.68 a month.
For the self-hosted side, assume two machines at $40.00 a month each and one hour of upkeep at $50.00 an hour. These three figures are assumptions for the example, entered by hand; they are not prices from any vendor. The self-hosted cost is $130.00 a month.
| Jobs per day | Minutes per month | GitHub-hosted bill | Self-hosting saves |
|---|---|---|---|
| 40 | 5,280 | $13.68 | nothing: it costs $116.32 more |
| 200 | 26,400 | $140.40 | $10.40 a month |
At 40 jobs a day, self-hosting would cost $116.32 a month more than staying hosted. The break-even is 24,667 minutes a month, about 187 jobs a day of this length. At 200 jobs a day the hosted bill reaches $140.40 and self-hosting comes out $10.40 a month ahead ($124.80 a year), which one extra hour of upkeep would more than erase.
The rate of the runner you replace matters most
The break-even falls quickly when the hosted minutes are expensive ones. With the same assumed $130.00 a month but all jobs on the standard macOS runner, at $0.062 a minute, the break-even is 5,097 minutes a month. That only helps if a Mac of your own fits inside the same monthly figure, which is your number to check.
Larger runners move the line the same way. Their minutes are billed in full, with no included minutes, so the calculator's full version takes the larger-runner bill off the self-hosted cost before working out the break-even.
Before you move
- Count all the upkeep. Double your first guess and see whether the answer changes.
- Size for the peak. Two machines run two jobs at a time; a busy hour queues the rest.
- Try the cheaper fix first. Caching, path filters and cancelling superseded runs lower the hosted bill with no machine to look after.
Find your own break-even. The free calculator gives your GitHub-hosted bill. The full version adds the self-hosted break-even from your own machine and upkeep figures.