As your usage of CI/CD grows, optimizing costs becomes increasingly important. With this tutorial, you can assess your current GitHub Actions costs, estimate the impact of upcoming pricing changes, and identify configuration changes that could reduce expenses or improve efficiency. See 2026 pricing changes for GitHub Actions in GitHub Executive Insights.
1. Download past usage of GitHub Actions
You can download a full breakdown of the costs of using GitHub-hosted runners from the "Usage" view of the "Billing & licensing" tab.
Usage of self-hosted runners is available on the Insights tab of your organization or enterprise. From March 1, 2026, this data will also be included in billing usage reports.
Generate report for runner usage and costs
-
Navigate to your organization or enterprise. For example, from https://github.com/settings/organizations or https://github.com/settings/enterprises.
-
Click Billing & Licensing to display the billing and licensing overview for the account:
- Organization accounts: under "Access" in the sidebar for settings.
- Enterprise accounts: a separate tab at the top of the page.
-
In the left sidebar, click Usage . For enterprises, then click Metered usage.
-
At the top of the page, click Get usage report.
-
Select a report type of Summarized and a time frame of at least three months.
-
Click Email me the report.
When the report is ready for you to download, you'll receive a message to your primary email account with a link to download the report. The link will expire after 24 hours.
Get usage of self-hosted runners
-
Click Insights tab for your organization or enterprise to display additional insights.
-
In the "Insights" navigation menu, click Actions Usage Metrics to display usage data.
-
At the top of the page, click Period:Current month and define a time period of at least three months.
-
In the tabbed table, click Jobs to show all usage split by job.
-
To show only jobs that run on self-hosted runners, add a filter on runner type:
Text runner_type:self-hosted
runner_type:self-hosted -
To the right of the filter box, click to download the data from the table.
2. Summarize past usage and costs
You have downloaded one billing report, summarizedUsageReport, and possibly one actions usage metrics report for self-hosted runners. You need to further summarize the data from the summarizedUsageReport before moving to the next step, for example:
- Get cost per runner type: Sum costs for each
skufor theactionsproduct - Get usage of minutes included in your plan: Sum minutes for each
skuthat were included in your plan, that is:net_amountof0 - Consider splitting the costs and included minutes by organization
For an example Python script that generates this summary information from a summarizedUsageReport, see summarize_actions_costs.py.
Tip
There is no change to the costs of storing artifacts and caches, so you can ignore the actions_storage SKU.
3. Estimate impact of the cost changes
Using the summaries of the recent costs of GitHub-hosted runners and the minutes used by self-hosted runners, you can estimate future costs of using GitHub Actions.
General trend in costs
Assuming that the number of workflows you run and the time they take to complete stays similar, the impact on your future costs will vary according to the types of runners that you currently use:
- Mostly GitHub-hosted runners: You will see lower bills for GitHub Actions.
- Mostly self-hosted runners: You will probably see higher bills for actions. It makes sense to re-evaluate your split between self-hosted and GitHub-hosted runners. You may find that the costs of maintaining your own runners versus using GitHub-hosted runners are more evenly balanced.
- A mix of runner types: You will need to assess how your costs will change with the new charging model and decide whether or not to make any changes to your runner usage.
Detailed calculations of changes to costs
For each type of runner that you use, you can calculate how much the same usage will cost from January and from March 2026 using data from Actions runner pricing.
To estimate your expected spend more precisely, you can also use the GitHub pricing calculator.
In this example, the change in costs for standard GitHub-hosted runners and self-hosted runners is calculated.
| Runner type | Past GitHub bill | January 1, 2026 onward | March 1, 2026 onward |
|---|---|---|---|
Linux 2-core (actions_linux) | past cost | past cost * 0.75 | past cost * 0.75 |
Windows 2-core (actions_windows) | past cost | past cost * 0.62 | past cost * 0.62 |
macOS 3-core or 4-core (actions_macos) | past cost | past cost * 0.77 | past cost * 0.77 |
| Self-hosted | $0 USD | $0 USD | Minutes used * $0.002 USD |
The multipliers in this table reflect the change in per-minute pricing for standard GitHub-hosted runners starting January 1, 2026. For self-hosted runners, billing begins on March 1, 2026, based on total minutes used.
4. Identify runner changes to explore
When you have estimated the impact of the charging changes on your costs, you may want to update your runner usage.
Investing the budget freed in more powerful runners
If the billing changes free some of your budget, then you could identify the workflows that take the longest to run and update them to use larger runners hosted by GitHub.
To identify the longest-running workflows, display the Insights tab for your enterprise or organization and display the Actions performance metrics. Click Avg run time to sort the workflows by run time.
For more information, see Larger runners.
Migrating workflows from self-hosted to GitHub-hosted runners
If the total cost of running workflows on self-hosted runners is now similar to the cost of using GitHub-hosted runners, you may want to simplify your CI/CD platform by migrating from self-hosted runners.
Some considerations:
- Do all the costs of maintaining self-hosted runners come under the same internal budget as billing for actions usage?
- Are we using all the processing time included in our GitHub plan currently?
- Do any of the self-hosted runners provide specialized environments that would be difficult to replicate on a GitHub-hosted runner?
Tip
You can request that additional tools are added to GitHub-hosted runners, by raising an issue with the tool request template.