Add a CI Speed Badge to Your README
Last updated
A CI speed badge shows the median time of your repository's recent GitHub Actions runs, right in your README. Contributors see at a glance how long they will wait for checks, and a fast number is a quiet signal that the project is well looked after. This page shows how to add one, what the number means, and the privacy rules behind it.
The badge
For a repository that runs its CI on compiler.dev, add this line to README.md, replacing OWNER/REPO:
[](https://compiler.dev/benchmarks)
It renders as a small badge such as CI | 2m 14s · compiler.dev. GitHub caches README images through its camo proxy; the badge allows a 10-minute cache, so the number follows your runs closely.
What the number means
The time is the median of your last 20 workflow runs in the past 30 days, measured from the first job being queued to the last job finishing. That is the time a contributor actually waits, including queue time, not the sum of job minutes. Only runs whose jobs all finished on compiler.dev machines count, so a run that fell back to your own runners does not skew the number.
The median is used instead of the average so one stuck or cancelled run cannot make the badge jump.
Privacy
The badge only shows a time for public repositories. Before showing a number, compiler.dev checks GitHub's public API; for a private repository, or one GitHub does not know, the badge just says "powered by compiler.dev". So putting the badge URL of a private repository somewhere public reveals nothing about it, not even whether it uses compiler.dev.
Not on compiler.dev yet?
The badge needs run times, which compiler.dev records for the jobs it runs. You can still measure your CI today with the free CI Timing Report action, which adds a job-by-job timing table to every run summary. To make the number smaller, start with how to speed up GitHub Actions and the test shard calculator.
FAQ
Why does my badge say "powered by compiler.dev" instead of a time?
Either the repository is private, it has no completed runs on compiler.dev in the last 30 days, or GitHub's API could not be reached. Check that the owner and repository name in the URL are spelled exactly as on GitHub.
How often does the badge update?
Run times are recalculated at most every 10 minutes, and the badge allows GitHub to cache it for 10 minutes, so new runs show up within about 20 minutes.
Can I use the badge for one workflow only?
Not yet. The badge covers all workflow runs of the repository that ran on compiler.dev. If you need per-workflow numbers, the CI Timing Report action shows them in each run summary.
Related
- Speed Up .NET in GitHub ActionsSpeed up .NET builds in GitHub Actions: NuGet caching with setup-dotnet, --no-restore, --no-build, parallel dotnet test, and SQL Server services.
- Speed Up Bazel in GitHub ActionsSpeed up Bazel in GitHub Actions with setup-bazel, a disk cache, repository cache, a remote cache, and the right --jobs setting. Working YAML.
- Speed Up Django in GitHub ActionsSpeed up Django tests in GitHub Actions with pip or uv caching, pytest-xdist, --reuse-db, a Postgres service, and test splitting. Working YAML.
- Speed Up Elixir in GitHub ActionsSpeed up Elixir and Phoenix CI in GitHub Actions: deps and _build cache keyed on mix.lock and OTP, mix test --partitions, Postgres service, Dialyzer PLT.