DEV Community

Cover image for I Built a Free GitHub Actions Cost Calculator Over a Weekend. Here's What 7 Days of Data Taught Me.
Shubham
Shubham

Posted on

I Built a Free GitHub Actions Cost Calculator Over a Weekend. Here's What 7 Days of Data Taught Me.

Last month I got an email from GitHub.

Pricing changes. Effective January 2026. Self-hosted runners now have a per-minute fee attached.

I did the math for our team's workflows. The numbers were not catastrophic, but they were not small either. And the frustrating part was that I had to do that math manually — in a spreadsheet, looking up runner rates, estimating step times, multiplying everything out.

There had to be a better way.

So I built one.


What I Built

githubactionscost.online — a free GitHub Actions cost calculator.

Paste your workflow YAML. Get the exact cost per run, daily, monthly, and yearly. See what the same workflow would cost on Ubuntu, Windows, and macOS runners side by side. Then get AI-powered suggestions with copy-paste YAML code to cut your bill.

No account. No signup. No credit card. Your YAML never leaves your browser for the calculation part.

I built it in a weekend. Shipped it. And here is what happened.


The Numbers After 7 Days

I did not promote it anywhere. No Reddit post. No Hacker News. No tweet. Just deployed it and watched Google Analytics.

109 active users in 7 days.

That might sound small. But zero promotion, seven days, and a very niche developer tool? I will take it.

What surprised me more than the traffic was where it came from.

United States — 46 users (42%)
Makes sense. GitHub's largest user base.

France — 10 users (9%)
Did not expect this at all.

India — 6 users (5.5%)
Smallest number but by far the most engaged. Average session time of 6 minutes and 5 seconds. Engagement rate of 58%. These users actually used the tool.

Germany, Netherlands, UK, Poland, China, Colombia — all showed up organically.

Organic traffic from 10 countries in 7 days with zero promotion tells me the search intent is real right now.


Why GitHub Actions Costs Are Confusing

Most developers set up a workflow, get it working, and forget about it. The billing is abstracted away until the monthly invoice arrives.

Here is what catches people off guard.

GitHub charges different rates depending on which runner you use. And the difference is not small.

Runner Cost Per Minute
Ubuntu (Linux) $0.008
Windows $0.016
macOS $0.080

That macOS number deserves a moment of attention.

macOS runners cost 10 times more than Ubuntu runners. Per minute.

If you have a 10-minute workflow running on macos-latest instead of ubuntu-latest, and it triggers 20 times per day, the annual cost difference is over $5,000.

Most developers using macOS runners do not need macOS runners. They copied a workflow template, it had macos-latest in it, it worked, and they moved on. Nobody audited the runner choice.

That is exactly the kind of thing this tool surfaces.


A Real Example

Here is a standard Node.js workflow:

name: CI Pipeline
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
Enter fullscreen mode Exit fullscreen mode

Running this 10 times per day costs approximately $205 per month.

The AI suggested three changes:

1. Add npm caching

- uses: actions/cache@v4
  with:
    path: ~/.npm
    key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Cancels outdated runs when new commits push quickly. If you push 3 times in 5 minutes, only the last one runs.

3. Use npm ci instead of npm install

- run: npm ci
Enter fullscreen mode Exit fullscreen mode

Faster and more deterministic in CI environments.

Result: estimated monthly cost drops from $205 to around $85. That is 58% savings from three YAML changes.


How the Cost Calculation Actually Works

The tool parses your YAML using js-yaml in the browser. Then it estimates time for each step based on a database of known action timings.

actions/checkout — approximately 15 seconds.
actions/setup-node — approximately 20 seconds.
npm install — approximately 120 seconds.
docker build — approximately 180 seconds.
npm test — approximately 180 seconds.

It adds these up, rounds up to the nearest minute, multiplies by the runner's per-minute rate, and shows you per-run, daily, monthly, and yearly costs for every job.

Then it shows you the same job's cost across all four runner types side by side — Ubuntu, Windows, macOS, and self-hosted — so you can see immediately if you are on an expensive runner unnecessarily.

The AI suggestions come from a serverless function that sends your workflow structure to an LLM and asks for specific optimizations. The model returns JSON with titles, descriptions, savings estimates, priority levels, and copy-paste YAML code examples.


What I Learned Building This

The non-code work takes longer than the code.

Building the actual tool took a weekend. The domain purchase, DNS setup, Vercel deployment, SSL, privacy policy, terms, Google Analytics, Search Console verification, sitemap submission — that took another 3 days. For small solo projects, the launch infrastructure is real work.

Zero-friction tools get organic traffic.

I did not promote this anywhere and 109 people showed up in 7 days purely from search. Developer tools that solve a specific, searchable problem get found.

Timing matters more than most people think.

GitHub's pricing change in January 2026 created a search spike. The keywords "github actions price" and "github actions cost" are trending right now. Building a tool that matches a trending search intent is different from building a tool and then hoping people search for it.

The most engaged users are not always the largest segment.

India was 5.5% of my traffic but 58% engagement rate and 6 minutes average session time. The US was 42% of traffic but 4% engagement and 1 second average session. Knowing which segment actually uses your product versus which one bounces is important for understanding who you are really building for.


What Is Next

The tool is live and working. Promotion starts now — starting with this article.

After that: Hacker News, Reddit communities, and finding the right GitHub repositories where cost-conscious developers are already having this conversation.

If you use GitHub Actions and have not audited your runner choices recently — paste a workflow into the calculator. It takes about 30 seconds and might save you more than you expect.

githubactionscost.online — free, no signup, no data stored.


Built with vanilla HTML/CSS/JS, Vercel serverless functions, and OpenRouter for the AI suggestions. The entire frontend is a single HTML file.


Top comments (0)