Why is GitHub Actions so slow?
Why are my GitHub Actions workflows slow?
GitHub Actions is slow mostly because of the machine each job gets: on a private repository, ubuntu-latest is a 2 vCPU, 8 GB virtual machine on a cloud server CPU, and every job starts with a cold disk, an empty Docker layer cache and every dependency to fetch again. Queue time, jobs chained with needs and caches that miss add the rest. Fix the caches and the job graph first, then run what is still slow on faster hardware: Sengi runs each job on an AMD Ryzen 9 7950X3D boosting past 5 GHz with local NVMe, with up to 3× the multi-core CPU of GitHub’s 2 vCPU runner and builds up to 1.9× faster, from $0.003 a minute.
Last checked October 23, 2026, against GitHub’s hosted-runner reference. Speed figures measured on Sengi in October 2026 against GitHub’s runner of the same size.
What slows a GitHub Actions job down, and how do I fix each cause?
| Cause | How to spot it | Fix |
|---|---|---|
| A small, slow machine | Compile, test and build steps take most of the job. | More cores, a faster CPU, or both. |
| Cold dependency caches | Install steps take minutes on every run. | actions/cache or a setup action’s cache: input; see slow npm install. |
| No Docker layer cache | Every RUN step runs; no CACHED lines. | type=gha layer caching. |
| Jobs that wait on each other | A long chain of needs in the run graph. | Run independent jobs in parallel; split long test suites into a matrix. |
| Queue time | “Waiting for a runner to pick up this job.” | Check labels and concurrency; see waiting for a runner. |
| A slow disk | Unpacking, installs and database-backed tests drag. | Local NVMe instead of network storage. |
The full method, with the YAML for each fix, is in how to speed up GitHub Actions.
How much does faster hardware help?
The same jobs on GitHub’s ubuntu-latest and on Sengi, same 2 vCPU, medians measured October 2026:
| Job, 2 vCPU | GitHub-hosted | Sengi | Faster |
|---|---|---|---|
| Node + Docker build | 539 s | 299 s | 1.8× |
| Vite build and test | 552 s | 328 s | 1.68× |
| fd (Rust) build and test | 76 s | 51 s | 1.49× |
| Mastodon Docker image | 252 s | 172 s | 1.47× |
| GitHub CLI (Go) test and build | 367 s | 284 s | 1.29× |
Each job also cost 64–75% less per run on Sengi, at $0.003 a minute against GitHub’s $0.006. What makes the difference is in faster GitHub Actions runners, and how Sengi compares with other providers is in the runner comparison.
Frequently asked questions
Why is GitHub Actions slower than my laptop?
A recent laptop has 8 to 16 cores, a fast local SSD and warm caches. A private-repository ubuntu-latest job gets 2 vCPU and 8 GB on a cloud server CPU, on a fresh machine where every dependency, package cache and Docker layer has to be fetched or rebuilt.
Is GitHub Actions slow today?
If every workflow is suddenly slower or stuck in the queue at once, check GitHub's status page for an Actions incident first. If only some jobs are slow, the cause is in those jobs: their caches, their dependencies or the machine they run on.
Does a bigger GitHub runner make jobs faster?
Only the parts that use more cores, such as parallel compiles and sharded tests. A larger runner adds cores and memory; it does not make a single-threaded step faster. GitHub bills larger runners from the first minute, at $0.012 a minute for 4 cores and $0.022 for 8.
How much faster is Sengi than GitHub's runner?
On the same 2 vCPU as ubuntu-latest, real CI jobs ran 1.29× to 1.8× faster, measured October 2026. At 4 vCPU on RunsOn's open benchmark harness, a production Docker image built 1.9× faster and Rust, TypeScript and Docker builds together ran 1.8× faster, on an AMD Ryzen 9 7950X3D boosting past 5 GHz.
The fastest hardware for your GitHub Actions.
AMD Ryzen 9 7950X3D desktop CPUs boosting past 5 GHz, on bare metal with local NVMe, a fresh VM for every job, and 2 vCPU jobs ready in 2 seconds. Builds finish up to 1.9× faster than on GitHub’s runners, and at up to half GitHub’s price per minute they cost up to 74% less per build. Change one runs-on line, or give your coding agent one prompt and it opens the pull request for you.
