I got a surprise bill from GitHub last month.
My team had been running GitHub Actions workflows for months. We assumed the costs were minimal. Then January 2026 arrived, GitHub changed their pricing, and suddenly the numbers looked very different.
The worst part was not the bill itself. The worst part was that I had no idea how to estimate what we were actually paying before it happened.
GitHub's billing dashboard shows you what you spent. It does not show you what you will spend. It does not compare runner costs. It does not suggest optimizations. It just shows a number after the fact.
So I built a tool to solve that problem.
What I Built
githubactionscost.online — a free GitHub Actions cost calculator that takes your workflow YAML and tells you exactly what it costs, across all three runner types, with AI-powered suggestions to reduce your bill.
No signup. No credit card. No account. Paste your YAML, get your numbers.
The Runner Pricing Problem Nobody Talks About
Here is something that shocked me when I first looked into this seriously.
GitHub charges different rates depending on which runner you use:
| Runner | Cost per Minute |
|---|---|
| Ubuntu (Linux) | $0.008 |
| Windows | $0.016 |
| macOS | $0.080 |
| Self-hosted | $0.002 |
That macOS number is not a typo.
macOS runners cost 10 times more than Ubuntu runners.
If you have a 10-minute workflow running on macos-latest instead of ubuntu-latest, and it runs 20 times per day, here is what that difference looks like over a year:
- Ubuntu: $0.008 × 10 min × 20 runs × 365 days = $584/year
- macOS: $0.080 × 10 min × 20 runs × 365 days = $5,840/year
A $5,256 per year difference. Just from the runner choice.
And the scary thing is how easy it is to accidentally use the wrong runner. Copy-paste a workflow from Stack Overflow. Use a template. Forget to check. That is how it happens.
How the Calculator Works
You paste your .github/workflows/your-file.yml into the tool. It does three things.
First — Cost calculation.
The tool parses your YAML and estimates how long each step takes based on a database of known GitHub Actions timing data. actions/checkout takes about 15 seconds. npm install takes about 120 seconds. docker build takes about 180 seconds. It adds these up, multiplies by your runner's per-minute rate, and shows you the cost per run, daily, monthly, and yearly.
Second — Runner comparison.
For every job in your workflow, it shows you what that exact job would cost on Ubuntu, Windows, macOS, and self-hosted runners side by side. This makes it very obvious when you are using an expensive runner unnecessarily.
Third — AI optimization suggestions.
It sends your workflow to an AI model which analyzes the structure and gives you 5 specific, actionable suggestions with copy-paste YAML code examples. Things like enabling caching, parallelizing jobs, adding concurrency limits, and switching runners.
A Real Example
Here is a typical Node.js CI workflow:
name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- run: npm install
- run: npm run build
- run: npm test
deploy:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v3
- run: docker build -t myapp .
- run: docker push myapp
Running this 10 times per day costs approximately $204/month.
The AI suggested three changes that bring it down to around $85/month:
1. Enable npm caching
- uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
Saves about 2 minutes per run by not re-downloading packages every time.
2. Add concurrency groups
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
Cancels outdated runs when new commits are pushed. If you push 3 commits quickly, only the last one runs.
3. Use npm ci instead of npm install
- run: npm ci
Faster and more deterministic in CI environments.
Three changes. Monthly cost drops from $204 to $85. That is 58% savings.
Why This Matters More Now
GitHub changed their pricing in January 2026. Self-hosted runners now have a charge attached. Hosted runner prices were adjusted. Many developers who had set up workflows and forgotten about them are now seeing different numbers on their bills.
This is exactly the time to audit your workflows. Not after you get the bill. Before.
What the Tool Does Not Do
I want to be honest about the limitations.
The time estimates are approximations. Your actual npm install might take 90 seconds or 150 seconds depending on your package count, network conditions, and cache state. The tool uses averages based on common patterns.
For exact numbers, GitHub's billing dashboard is the source of truth. Use this tool for estimation and optimization discovery, not for precise financial forecasting.
How to Use It
Go to githubactionscost.online.
Paste your YAML or upload your workflow file directly.
Set how many times your workflow runs per day using the slider.
Click Analyze.
You get instant cost results. The AI suggestions load in a few seconds after that.
Everything runs in your browser for the cost calculation part. Your YAML is not stored. No account needed.
The Bigger Picture
GitHub Actions is genuinely excellent. I am not writing this to criticize it. The product is powerful, the integration is seamless, and for most teams the cost is very reasonable.
But like any infrastructure cost, it is worth understanding. The developers who get surprised by bills are almost always the ones who set up workflows quickly, got them working, and never looked at the pricing details.
This tool exists to close that information gap. See what you are paying. Understand why. Make an informed choice about whether to optimize or not.
Sometimes you look at the numbers and realize the cost is totally fine for what you are getting. That is a valid outcome too. The point is to know.
Try It
githubactionscost.online — free, no signup, works with any GitHub Actions workflow.
If you find it useful, sharing it with your team or in your developer communities would genuinely help. I built this as a solo project and every visitor helps it grow.
If you find bugs or have suggestions, I am actively working on it and genuinely want the feedback.
Built with vanilla HTML, JavaScript, Vercel serverless functions, and OpenRouter for the AI suggestions.
Top comments (0)