Skip to content

Overview

GitHub Stats Forge renders GitHub stats as SVG cards.

The stats card

Grouped by what a card is about, as the sidebar and the anvil group them.

CardHandlerWhat it shows
StatsstatsCommits, PRs, issues, reviews, stars and a rank
Top languagestopLangsThe languages you write most, by size or repository count
Contributed tocontributedToThe repositories you contribute to, ranked, and in which years
WakaTimewakatimeCoding time per language
CardHandlerWhat it shows
Repository pinpinOne repository, so a profile can pin more than six
Gist pingistOne gist
CardHandlerWhat it shows
OrganizationorgIts public repositories, and what they add up to
Organization activityorgActivityPRs, issues and commits over a rolling window

The GitHub Stats Forge action is the recommended way: it renders your cards on a schedule and commits the SVGs, so nothing has to be up when someone reads your profile.

The CLI writes an SVG next to you, and is how you settle on a card’s options:

Terminal window
npx @stats-forge/github-stats-forge-cli

The library is what the action and the CLI call:

import { CardConfig, stats } from '@stats-forge/github-stats-forge-core/api';
const config = new CardConfig({ pats: [{ name: 'PAT_1', value: process.env.PAT_1 }] });
const result = await stats({ username: 'octocat' }, config);

Your own server draws a card the moment someone looks at it, and serves this site and the card builder with your real numbers:

Terminal window
docker run -p 9000:9000 --env-file cards.env ghcr.io/stats-forge/github-stats-forge-server

Every card but WakaTime needs a GitHub token.

Every card takes the same colors, borders and title options, one of the built-in themes, and a locale where it has text to translate. Each card page lists what only that card accepts.