Status badge docs

Put live project coverage in your README.

Every repository can expose its latest project coverage as a compact SVG badge. Public repositories work without credentials; private repositories use a separate read-only badge token.

Default branch

Follow the repository default

When the branch parameter is omitted, the badge follows the repository's current default branch.

https://coverage.9to5.software/github/OWNER/REPO/badge.svg

Specific branch

Pin coverage to a branch

Add a URL-encoded branch query parameter to report the latest upload for that branch.

https://coverage.9to5.software/github/OWNER/REPO/badge.svg?branch=release%2Fnext

Markdown and HTML

Repository settings generate both formats with your owner, repository, selected branch, and private token when required.

Markdown

[![coverage](https://coverage.9to5.software/github/OWNER/REPO/badge.svg)](https://coverage.9to5.software/github/OWNER/REPO)

HTML

<a href="https://coverage.9to5.software/github/OWNER/REPO">
  <img src="https://coverage.9to5.software/github/OWNER/REPO/badge.svg" alt="coverage">
</a>

Private repositories

Generate a dedicated badge token in repository settings. The raw token and complete URL are shown once, while only its SHA-256 hash is stored. Keep the generated URL with the private repository and rotate the token if it is exposed; rotation immediately invalidates the previous badge URL. Badge tokens cannot upload coverage or access repository details.

https://coverage.9to5.software/github/OWNER/PRIVATE_REPO/badge.svg?token=BADGE_TOKEN

Unknown coverage

A known, accessible repository returns a gray coverage | unknown badge when the selected branch has no uploads. Unknown repositories and inaccessible private repositories return 404 instead.