---
title: "Coding stats in your GitHub profile README, without an API key"
description: "How a GitHub profile README shows stats, the three ways tools put them there, how to set up the inlinr card in light and dark, and how to move from waka-readme or github-readme-stats."
url: https://inlinr.com/guides/github-readme-coding-stats
lang: en
---

# Coding stats in your GitHub profile README, without an API key

How a GitHub profile README shows stats, the three ways tools put them there, how to set up the inlinr card in light and dark, and how to move from waka-readme or github-readme-stats.

Setup 5 min read Published 29 Oct 2026 By [Thibault Fayard](https://inlinr.com/authors/thibault-fayard)

Updated 30 Oct 2026: The block is text by default, a table per list with your daily average and best day, with the card or both as choices that Settings → README keeps. And its sources: GitHub's documentation on profile READMEs, themed images and its image proxy.

![A GitHub profile README with the inlinr card: 27h 40m over the last 7 days, 42% with an AI assistant, time per language, editor and AI tool, shown in GitHub's dark and light themes](https://inlinr.com/marketing/readme.jpg)

A line of coding stats on a GitHub profile says what you work in, more honestly than a list of logos. Getting one there is mostly a question of where the numbers come from and who keeps them fresh: a service that draws an image on request, or a scheduled job that rewrites your README.

## How a profile README shows stats

GitHub shows the `README.md` of the public repository named after your username at the top of your profile. It renders Markdown and a little HTML, and nothing else: no script runs there, and GitHub never fetches Markdown from another site. Images are the exception. An image address in the README is fetched through GitHub's image proxy, which caches it and serves it to every visitor.

So a stats card is an image that a service draws when GitHub asks for it. Text in the README itself, a table of languages for instance, can only change when something commits a new version of the file.

## Three ways to get them there

Every tool you will find does one of three things. They differ in what you have to store and in what keeps the numbers current.

|                    | What it is                                               | What you store                            | Refreshed by                                      |
| ------------------ | -------------------------------------------------------- | ----------------------------------------- | ------------------------------------------------- |
| Hosted image       | One image line pointing at a service that draws the card | Nothing                                   | The service, on each fetch through GitHub's cache |
| Rewritten Markdown | A job replaces the text between two comment markers      | Usually an API key as a repository secret | A GitHub Action, on a schedule                    |
| Generated image    | A job draws an SVG and commits it to your repository     | Usually an API key as a repository secret | A GitHub Action, on a schedule                    |

The inlinr card is a hosted image. Its Markdown style is the second kind, and needs no key because it reads your public profile.

A hosted image is the least to look after: nothing in your repository changes and there is no secret to rotate. Rewritten Markdown is plain text in your README, which some people prefer to an image, at the cost of a workflow and a commit a day.

## Set up the inlinr card

The card shows the time an inlinr extension records in your editor, so it needs a free account and an extension before it shows anything.

1. **Sign in with GitHub.** Your GitHub username becomes the card's address: `inlinr.com/u/your-handle`.
2. **Install an extension** for [VS Code](https://inlinr.com/integrations/vscode), Cursor, Windsurf or [Claude Code](https://inlinr.com/integrations/claude-code), or point any editor's WakaTime plugin at inlinr. Code for a minute and the first session shows up.
3. **Turn on your public profile** in Settings → Sharing. Tick the sections the card shows: languages, editors, AI tools, the share of your time with an assistant, active days. Off by default, and nothing shows until you turn it on.
4. **Add the block** from the [README card page](https://inlinr.com/tools/readme-card) to your profile README: text by default (a table per list, your daily average and best day, the weekdays if you want them, with a daily job that rewrites it), the card, or both. The page previews your real block first, in GitHub's light and dark themes. Signed in, Settings → README keeps your choices and ticks each step as GitHub shows it; the job is then the public action [inlinrhq/readme-stats](https://github.com/inlinrhq/readme-stats) ↗, one line with no secret.

A free profile shows the last 7 days. On Pro you can pick 30 or 90 days, or all time, for the profile and for each card.

Check it before you paste

The [README card page](https://inlinr.com/tools/readme-card) checks a handle before giving you its line, says what is missing when a profile is not public yet, and hands out the text block with its workflow, prefilled on GitHub.

## Light and dark

GitHub readers pick a light or a dark theme, and a card drawn for one looks out of place on the other. GitHub's documented way to serve both is a `picture` element: one source for readers in dark mode, the image for everyone else. That is the line the card page gives you by default:

README.md

```
<a href="https://inlinr.com/u/your-handle">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://inlinr.com/u/your-handle/stats?format=svg&theme=dark">
    <img alt="inlinr coding stats" src="https://inlinr.com/u/your-handle/stats?format=svg&theme=light">
  </picture>
</a>
```

To pin one theme instead, pick Light or Dark on the page and paste the single Markdown image it gives you.

## Layouts, status and what to leave out

The card comes in three layouts, picked on the card page or with `layout=` in its address:

- the classic card, one column in the accent colour, the default;
- `layout=columns`, wider, with languages on the left in GitHub's own colour for each, and editors and AI tools on the right;
- `layout=compact`, three lines: your total, the share with AI and one bar of your languages, for a README that already has a lot in it.

The address can also leave things out: `hide=editors,ai` (any of `languages`, `editors`, `ai`, `status`, `project`, `days`) and `rows=3`. `days` is the strip under the total, a bar per day of a 7, 14, 30 or 90 day period, shown while your calendar is public. It can only take away. What your settings hide stays hidden whatever the address says, so a link copied from your README cannot show more than you chose.

Three more change how it looks, never what it shows: `lang=fr` writes the card and the text in French (`dernière session · 28 oct.`), `accent=` picks its colour (`blue`, `violet`, `orange`, `pink` or `teal`; green is the default) and `border=0` takes its frame off, for a README with its own. Settings → README has the same three choices.

The status is off until you turn it on in Settings → Sharing. On, the card says `last session · 28 Oct`, the day of your last session in your time zone, never a time; at its second level it says `coding now` while you code. A badge of its own, `/u/your-handle/status.svg`, says the same next to your other badges. Caches make it 5 to 10 minutes late, a little more through GitHub.

## Coming from waka-readme or github-readme-stats

**waka-readme** is an Action that rewrites the text between its `waka` markers with your WakaTime stats, using your WakaTime API key stored as a secret. To move:

- for an image, delete the markers, the workflow and the `WAKATIME_API_KEY` secret, and paste the card line;
- to keep text, pick Text on the card page: replace the markers with inlinr's two below, and the workflow with the one the page gives you. It reads your public profile, so the secret can go.

README.md

```
<!--START_SECTION:inlinr-->
<!--END_SECTION:inlinr-->
```

Or keep waka-readme as it is: set its `API_BASE_URL` to `https://inlinr.com/api/compat/wakatime` and replace the secret with a WakaTime key created in Settings → Editors. The title, the total and the languages come through. Mind that a key reads all your stats, private projects included, whatever your public profile hides.

**github-readme-stats** draws a WakaTime card from your public WakaTime profile. Replace its image line with the inlinr card; nothing else in your README has to change. Your history can come along too: the [WakaTime switching guide](https://inlinr.com/guides/switch-from-wakatime) imports it, and your WakaTime plugins can keep sending to inlinr.

Or keep its WakaTime card and point it at inlinr: add `&api_domain=inlinr.com` to the image's address, after `username=your-handle`. It reads your public profile with no key, so it shows what your profile shows and nothing more; the same address serves metrics' WakaTime plugin, with `plugin_wakatime_url: https://inlinr.com`.

## What the card shows, and what it never does

The card shows totals and percentages, over the period you chose, for the sections you ticked. It never shows a file name, a client or an amount, and no project unless you tick one whose GitHub repository is public (in the project's settings): then it reads “Working on owner/repo” with your time there, and drops off by itself if the repository turns private. A project you hide in Settings is left out of the totals too, and a language you hide is left off the list. The [security page](https://inlinr.com/security#public-or-private) lists everything on inlinr that can be public, and who sees it.

## Sources

- [Managing your profile README](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/managing-your-profile-readme), GitHub Docs: the repository named after your username. Checked on 29 October 2026.
- [Specifying the theme an image is shown to](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#specifying-the-theme-an-image-is-shown-to), GitHub Docs: the picture element that serves a light and a dark image. Checked on 29 October 2026.
- [About anonymized URLs](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/about-anonymized-urls), GitHub Docs: why GitHub serves README images through its own proxy and caches them. Checked on 29 October 2026.

## What changed

- 30 Oct 2026: The block is text by default, a table per list with your daily average and best day, with the card or both as choices that Settings → README keeps. And its sources: GitHub's documentation on profile READMEs, themed images and its image proxy.
- 29 Oct 2026: first published.

## See it on your own sessions

Install an inlinr extension, turn on your public profile, and paste one line: your card fills in with your own week.

[GitHub README stats card](https://inlinr.com/tools/readme-card)

Free for solo use · no source code leaves your machine

## Read also

- [Time tracking How coding time is counted, and why two trackers disagree Time is the gaps between heartbeats. Which gaps count is one setting, and getting it subtly wrong adds over an hour a day. 5 min read](https://inlinr.com/guides/how-coding-time-is-counted)
- [AI usage What “percent written by AI” can and cannot tell you The number is easy to produce and easy to misuse. What it counts, what it misses, and the questions it answers. 5 min read](https://inlinr.com/guides/measuring-ai-written-code)
- [Comparison inlinr vs WakaTime Plugins for 50+ editors since 2013, against AI attribution and freelance billing. Where each one wins. Open](https://inlinr.com/vs/wakatime)
