Docs Status badges

Status badges

A status badge is a small image that shows whether a check is healthy right now. Put one in a README, a wiki, or an internal dashboard and anyone can see at a glance whether last night's backup ran or whether a worker has gone quiet. The badge reads straight from PingArk, so it keeps itself up to date as your checks change.

A badge keeps the same shape in every state. Here it is up, running late, and down:

backups up backups late backups down

Generating a badge

Open Status badges in the dashboard. Pick what the badge should cover: every check in the project, one specific check, or a tag. Choose a format and how many states you want it to report, and the page builds the badge URL and the snippets to paste. A project badge shows the worst status across all of its checks, so if any single check is down, the badge is down.

Badge URL, HTML and Markdown

Every badge has a plain URL you can point an image at:

https://pingark.com/badge/p/AbC123def.svg     # the whole project
https://pingark.com/badge/c/XyZ789ghi.svg     # one check
https://pingark.com/badge/t/Def456jkl.svg     # a tag
Copy

The dashboard also gives you the two snippets you will actually paste. For a README on GitHub, use the Markdown:

![nightly-backup status](https://pingark.com/badge/c/XyZ789ghi.svg)

For a wiki or a plain HTML page, use the image tag:

<img src="https://pingark.com/badge/c/XyZ789ghi.svg" alt="nightly-backup status">

Choosing the label

The left side of the badge is the label. By default it is the name of whatever the badge covers, so a check badge shows the check name, a project badge shows the project name, and a tag badge shows the tag. If you want something else, set your own with a label parameter. Spaces need to be URL encoded as %20.

https://pingark.com/badge/c/XyZ789ghi.svg?label=Nightly%20backup
Copy

Formats

SVG is the default and is all most people need. Two more formats are there for when you want to build your own thing:

  • JSON. Swap the .svg ending for .json to get the raw status, colour and label. Useful for a custom status page.
  • Shields.io. We serve a Shields endpoint at /shields.json, so you can render the badge through Shields and restyle it however you like. The dashboard wraps it for you with img.shields.io/endpoint.
https://pingark.com/badge/c/XyZ789ghi.json            # raw JSON
https://pingark.com/badge/c/XyZ789ghi/shields.json    # Shields.io endpoint
Copy

The JSON looks like this:

{
  "status": "up",
  "label": "backups",
  "color": "#3fae49",
  "updated": "2026-07-01T09:00:00+00:00"
}

Two states or three

By default a badge reports three states. Up means every matching check is on time. Down means at least one has missed its deadline and its grace period. Late sits in between: a check is past its scheduled time but still inside the grace window, so it has not alerted yet. If you would rather keep things simple, switch to two states and a late check reads as up. Only a real down turns the badge red. Add ?states=2 to any badge URL for the two state version.

https://pingark.com/badge/c/XyZ789ghi.svg?states=2
Copy

Tag badges

Give a few checks the same tag and a tag badge sums them all up in one image, the same worst status wins way a project badge does. It works well for grouping by service or by environment, so you can show a single production badge that covers every production job.

Freshness

Badges are cached for about a minute so a busy README never hammers PingArk. A badge can therefore trail real time by up to sixty seconds, which is fine for an at a glance signal. It is not meant to stand in for an alert.

Rotating a badge URL

A badge URL is public but hard to guess. If one ends up somewhere you did not intend, or you simply want to reset it, rotate it from the Status badges page. Rotating issues a fresh URL and retires the old one right away, so remember to update anywhere the badge is embedded.

Badges never leak your ping URL

A badge is addressed by its own random token, which has nothing to do with the ping URL your job calls. Anyone with a badge URL can see a status and nothing else. They cannot ping the check or read its history, so a badge is safe to put on a public page.