CoinBucha

Embed the Sovereign Bitcoin badge

A server-rendered SVG showing how many states hold Bitcoin and how much, for your README, blog or newsletter. One <img> tag — no script, no iframe, no tracking pixel. Free to use with attribution. Information, not financial advice.

The badge

Sovereign Bitcoin monitor — CoinBucha

Served from /api/badge/sovereign.svg · 360×80 · cached ~30 min · refreshed when the data changes.

Copy this

Paste it anywhere HTML is allowed. The wrapping link points back at the sovereign monitor — keeping that attribution link is all we ask.

<a href="https://coinbucha.com/sovereign-bitcoin?ref=embed"><img src="https://coinbucha.com/api/badge/sovereign.svg" alt="Sovereign Bitcoin monitor — CoinBucha" width="360" height="80"></a>

Markdown works too: [![Sovereign Bitcoin monitor — CoinBucha](https://coinbucha.com/api/badge/sovereign.svg)](https://coinbucha.com/sovereign-bitcoin?ref=embed)

What the badge shows

Four lines of drawn text, all of it observable counts. No price, no change figure, no forecast, no recommendation.

7 states holding BTC
Countries in the monitor whose holdings_btc is above zero — strategic reserves and seized-and-held coins. Announced or proposed positions that hold nothing yet are not counted.
633,660 BTC
The sum of those holdings, in BTC. Not converted to any currency: a fiat figure would move with the price every minute and imply a valuation the badge does not make.
as of 2026-05-15
The date of the data — see below. When no valid date exists in the data, this line is omitted entirely rather than filled in.
Information, not financial advice
Drawn inside the SVG, not written on this page and not left to alt text, so it travels to wherever the badge is pasted. It is set at the highest contrast of any small text on the badge (WCAG AAA): a disclaimer must not be less legible than the figure it qualifies. It is also carried in the SVG’s <title> and aria-label for screen readers and crawlers.

The date on the badge is the data’s date

The as of date is the date of the underlying data — not the date the image was generated, and not today. It is the newest per-country as_of in the dataset: the most recent date on which any tracked government’s holding was actually observed. The badge never reads a clock, a build time, or the data pipeline’s own meta.generated_at timestamp.

That distinction is not cosmetic, and this badge earned it the hard way. The badge has been dated from the data since 2026-08-02. Before that the date came from the pipeline timestamp, which the daily refresh rewrites on every run whether or not anything changed: across the twenty consecutive daily refreshes from 2026-07-14 to 2026-08-01 the badge’s two figures never moved once, while that date advanced nineteen times.

The honest consequence, stated plainly: the badge is often dated well behind today, because sovereign holdings are confirmed from primary sources and those confirmations are infrequent. As of 2026-08-03 the newest observation in the dataset was 2026-05-15 — roughly 80 days behind wall-clock, and that is the date the badge printed. That is the intended behaviour. A badge stamped with today’s date over three-month-old figures would look fresher and be false.

The figures themselves do update whenever a holding is re-confirmed; the badge is re-rendered from the current data on every request (cached about half an hour), so an embedded copy picks changes up on its own. Nothing to re-paste. The full method, sources and confirmation rules are on the methodology page.

Using it

Badge source: src/lib/badge.ts · guarded by npm run check:badge