ActionRank

README badges

Show the security and maintenance grade of your GitHub Action right in your README. The badge is a live image: it reads the current score every time it is fetched, so it stays honest without you touching it again.

Example ActionRank badge for CheckoutLeft half: who is grading. Right half: the grade and the 0–100 score.

Embed it

Copy one of these snippets and swap actions-checkout for your own action's slug — it is the last part of its ActionRank URL, /actions/your-slug. Find your action to get it.

Markdown
[![ActionRank](https://actionrank.dev/api/badge/actions-checkout)](https://actionrank.dev/actions/actions-checkout)
HTML
<a href="https://actionrank.dev/actions/actions-checkout"><img src="https://actionrank.dev/api/badge/actions-checkout" alt="ActionRank score"></a>

Both snippets link the badge back to the action's ActionRank page, so readers can see exactly which signals produced the grade.

Live examples

These are real badges for real actions, fetched from the same endpoint your README would use. If one of these scores changes tomorrow, the image below changes with it.

What the grade means

The number is a 0–100 composite of four weighted dimensions — security 35%, maintenance 30%, popularity 20%, reliability 15% — and the letter is a fixed band of that number. The right half of the badge is coloured by the letter:

Badge colours by grade band
GradeScoreBadge colour
A85–100#16a34a
B70–84#65a30d
C55–69#d97706
D40–54#ea580c
FBelow 40#dc2626

Full formula, signal list and data sources are on the methodology page.

Styles

Add ?style=flat-square for square corners and no gradient, to match the rest of your badge row.

Badge in the default flat style/api/badge/actions-checkoutdefault (flat)
Badge in the flat-square style/api/badge/actions-checkout?style=flat-squareflat-square

How often it updates

Scores are recomputed daily for popular actions and at least weekly for the whole catalog. The badge image is cached for one hour in browsers and one day at our CDN, and served stale for up to a week while it refreshes in the background — so a README full of badges never waits on us, and never breaks if we are down.

GitHub also proxies and caches README images through its own image service, so expect a score change to take a few hours to show up on github.com even after our copy has updated.

Actions we don't track yet

An unknown slug returns a neutral grey badge instead of an error, because a broken image in someone's README is worse than an honest “we have no data”:

Free to use, independently assessed

The badge is free to embed in any repository, public or private, with no attribution requirement, no signup and no tracking of who displays it. Remove it whenever you like.

The grade it shows is an independent third-party assessmentcomputed by ActionRank from public data. It is not an endorsement, not a certification, and not issued or approved by the action's maintainers. ActionRank is not affiliated with, endorsed by, or sponsored by GitHub, Inc. If you believe a grade is wrong, report the data issue — we verify every report against the primary sources.

Frequently asked questions

How often does the ActionRank badge update?

The badge always reflects the latest score in our database. Scores are recomputed daily for popular actions and at least weekly for the full catalog. The image is cached for one hour in browsers and one day at our CDN, and GitHub additionally caches README images through its own image proxy, so a score change can take a few hours to appear in a rendered README.

Does using the ActionRank badge cost anything or require attribution?

No. The badge is free to embed in any repository, public or private, with no signup, no rate limit for normal README traffic, and no attribution requirement. You can remove it at any time.

What does the badge show if my action is not tracked?

An unknown or untracked action returns a neutral grey badge reading "not tracked" instead of an error, so the image never breaks in your README. Submit the action and it will show a grade after the next data refresh.