Badgen Service
Go to file
Amio Jin 7fdd5137bb
chore: bump badgen-icons to 0.23.0 (#658)
* chore: bump badgen-icons to 0.23.0

* chore: npm update

* chore: update eslint deps
2024-02-18 15:58:44 +08:00
.github test: add e2e tests (#645) 2023-08-21 11:00:43 -05:00
.vscode chore: bump deps 2023-06-10 09:03:32 +08:00
api- feat: migrate /circleci (#643) 2023-08-08 23:57:11 +08:00
components fix: wrong url for placeholder badge (#642) 2023-08-01 23:43:02 +08:00
libs feat: migrate /circleci (#643) 2023-08-08 23:57:11 +08:00
pages feat: migrate /circleci (#643) 2023-08-08 23:57:11 +08:00
public/statics chore: refine content and styles for help page 2023-07-09 18:52:40 +08:00
styles feat: use builder page as new home 2023-01-04 09:31:10 +08:00
test test: add e2e tests (#645) 2023-08-21 11:00:43 -05:00
tools feat: include legacy badge examples in badge builder 2023-03-18 18:02:14 +08:00
.babelrc fix: sentry error about "Authentication credentials were not provided" when building on vercel 2023-03-18 13:20:18 +08:00
.codeclimate.yml chore: add .codeclimate.yml 2018-08-13 16:58:11 +08:00
.dockerignore chore: add .git to .dockerignore (#375) 2020-04-19 18:07:02 +08:00
.editorconfig chore: add `.editorconfig` (#446) 2020-11-08 10:39:19 +08:00
.eslintignore docs: remove note on standard 2019-09-01 21:32:00 +08:00
.eslintrc.yml chore: use tsx instead of ts-node for job executing 2022-12-31 18:53:16 +08:00
.firebaserc Simplify firebase config 2019-06-12 22:40:04 +08:00
.gitignore chore: replace @sentry/node with @sentry/nextjs 2023-03-18 10:34:07 +08:00
.hintrc chore: replace @sentry/node with @sentry/nextjs 2023-03-18 10:34:07 +08:00
.nvmrc feat: add new static badge generator under next-13 pages 2023-01-15 00:06:15 +08:00
.vercelignore chore: update vercel static path to public 2022-12-31 19:44:19 +08:00
Dockerfile chore: update node version to 18 in Dockerfile (#639) 2023-07-30 23:19:25 +08:00 chore: add license and improve readme (#89) 2018-08-08 10:48:25 +08:00 chore: remove david-dm badge in readme 2023-07-02 09:27:40 +08:00
cloudbuild.yaml chore: alter gcloud deploy target 2019-09-01 22:03:15 +08:00
firebase.json Simplify firebase config 2019-06-12 22:40:04 +08:00
next-env.d.ts feat: init new next app 2022-12-31 14:29:41 +08:00
next.config.js feat: migrate /circleci (#643) 2023-08-08 23:57:11 +08:00
nodemon.json badge(memo): add memo badge (#399) 2020-06-14 17:40:19 +08:00
package-lock.json chore: bump badgen-icons to 0.23.0 (#658) 2024-02-18 15:58:44 +08:00
package.json chore: bump badgen-icons to 0.23.0 (#658) 2024-02-18 15:58:44 +08:00
sentry.client.config.ts chore: replace @sentry/node with @sentry/nextjs 2023-03-18 10:34:07 +08:00
sentry.edge.config.ts chore: replace @sentry/node with @sentry/nextjs 2023-03-18 10:34:07 +08:00 chore: replace @sentry/node with @sentry/nextjs 2023-03-18 10:34:07 +08:00
sentry.server.config.ts chore: replace @sentry/node with @sentry/nextjs 2023-03-18 10:34:07 +08:00
server.tsconfig.json chore: migrate to Now v2 (#320) 2019-11-18 23:52:07 +08:00
tsconfig.json chore: replace @sentry/node with @sentry/nextjs 2023-03-18 10:34:07 +08:00
vercel.json feat: migrate /circleci (#643) 2023-08-08 23:57:11 +08:00

Badgen Service

Home of, fast badge generating service.

The Badgen Story

That's a service, that's a library, hooorey! - @tunnckoCore

Finally something to replace - @EGOIST

Epic work on Badgen! Porting the @dependabot badges over to it now. - @greybaker

The badgen library was born as an exploration of "is it possible to generate badge SVG markup directly (without using pdfkit/canvas/puppeteer to measure text width)?". The result is better than I expected, Width of Verdana (the de-facto font for badges) text can be calculated precisely with a prebuilt char-width-table, even no need to worry about kerning 🤯

Then, logically, Badgen Service was born. I had a good time with, but as time goes by Shields gets slower, leaves more and more broken badges in READMEs. Badgen is trying to be a fast alternative with simplicity and flexibility. Its codebase is simple (2K LoCs vs Shields' 22K LoCs), well structured and fun to develop - it is pretty easy to add badge(s) for new service(s).

In the beginning, I was considering both Vercel and Google Cloud Functions. Then Vercel announced Edge Network on the same day as (the PoC of Badgen Service)'s reveal, what a fate! Cloudflare powered Vercel Edge Network is a perfect choice for such service, caching and scalability in simplicity. Badgen is the fastest possible badge generating service out there. It's fast, it's reliable, it's globally distributed and cached, thanks to Vercel.

At the time of's reveal, it had only four live badges as demonstrations. Since then, thanks to awesome people's help, Badgen keeps getting better at a fast pace. Welcome to join us, let's build the best badge service in the universe 🔥


  • Written in TypeScript
  • Using badgen library to generate svg on the fly
  • Two visual styles
  • Two badge types
    • static badge - URL defined badge (label, status, color)
    • live badge - Show live status from 3rd party services
  • Builtin Icons & External Icon Support
  • Docker image amio/badgen


Contributors Maintainability Docker image

start dev server

npm run dev

start prod server

npm run build && npm start

run with docker image

docker run -p 3000:3000 amio/badgen

Add Live Badge

If a service you wish to have is still missing here, we welcome new contributions. Basically, you need to add a file in api/[name-of-service].ts and that's it. Take /crates as an example:

To ensure that your addition is working correctly, start the development server with npm run dev.


  • You can create live badge without touching's code. Checkout docs for /runkit or /https.

  • The /runkit support would be super handy for prototyping a new live badge.

Add Icon

You can contribute icons to badgen-icons. Please make sure new icon is optimized using svgomg.

Tracking Policy

Badgen use Sentry to collect errors for improving service, use Google Analytics on doc pages (home, /github, /packagephobia, etc.) to understand overall usage.

Badgen do not collect any identifying information.


Supported environment variables for managing a Badgen instance.

  • GITHUB_TOKENS - Comma delimited list of Github Tokens. Required for Github Badges
  • GITHUB_API - Custom Github API endpoint. e.g.,
  • GITHUB_API_GRAPHQL - Custom Github GraphQL API endpoint. e.g.,
  • NPM_REGISTRY - Custom NPM registry endpoint
  • SENTRY_DSN - Sentry Error Monitoring Data Source Name
  • GA_MEASUREMENT_ID - Google Analytics Measurement ID


Thanks to our contributors 🎉👏

Support Badgen

We are on OpenCollective

Support this project by donation, help Badgen continue and evolving!

[Become a backer]