Shows current T-level
The badge reads the public status endpoint on view, so T1/T2 upgrades appear where the original article, portfolio item or report lives.
Publish a live proof status next to the content it protects, without turning your site into an ExistBefore integration project.
One line of HTML. Add a live ExistBefore badge to any website, blog, portfolio or article. The badge reflects the current public proof level (T0 -> T1 -> T2) and falls back to a normal proof link if JavaScript or the network is unavailable. Nothing about your visitors is sent to ExistBefore: the script fetches only the public attestation ID you put in the markup.
Replace att_REPLACE_WITH_YOUR_ID with your own attestation ID. The anchor stays a clean proof link if the badge script fails to load.
<a href="https://existbefore.com/proof/att_REPLACE_WITH_YOUR_ID"
class="existbefore-badge"
data-att="att_REPLACE_WITH_YOUR_ID">ExistBefore certified</a>
<script async src="https://existbefore.com/embed.js"></script>
Below is a real, live example badge for att_28525. It is preview content only; use your own ID in published markup.
data-att attribute on its own anchor.https://existbefore.com/embed.js over TLS.data-att value against a strict regex (^[a-zA-Z0-9][a-zA-Z0-9_-]{1,255}$) before any network call.GET https://existbefore.com/api/attestation/<id>/status. This endpoint is public, anonymous, rate-limited per IP, and never accepts user content — only the (already public) attestation ID.innerHTML with any value sourced from the API; status text is set via textContent only.window.ExistBefore, just side effects).connect-src, the badge will fall back gracefully.Recommended host CSP additions:
script-src 'self' https://existbefore.com;
connect-src 'self' https://existbefore.com;
style-src 'self' 'unsafe-inline';
The badge injects one static style block. If your host page forbids inline styles, use the static badge templates instead.
The badge inherits font-family from the host page and respects prefers-color-scheme. To override the visual style, override the CSS rules scoped to .existbefore-badge in your own stylesheet — they have low specificity and will lose to host rules. Themes, sizes, and a Markdown/README-friendly SVG endpoint are planned for a future release.
By default the badge advertises its provenance to assistive technologies via aria-label / title (the visible label is unchanged). The text appended is “ · Powered by CertiSigma”. To opt out, set data-attribution="hidden" on the anchor:
<a href="https://existbefore.com/proof/att_REPLACE_WITH_YOUR_ID"
class="existbefore-badge"
data-att="att_REPLACE_WITH_YOUR_ID"
data-attribution="hidden">ExistBefore certified</a>
The opt-out is purely cosmetic for screen readers — it never disables the live status check, never changes the visible badge, and never adds extra DOM nodes.
Why no nested link to CertiSigma in the badge: <a> inside <a> is invalid HTML and breaks keyboard / screen-reader navigation. The CertiSigma CTA lives below on this page instead.
The live JavaScript badge above does not — Markdown parsers strip <script> tags. For those destinations use the static badge templates instead: copy-paste HTML, Markdown, reStructuredText, BBCode, or plain link, all pointing at the static badge SVG and your proof page.
No. ExistBefore is a free public service operated by CertiSigma.
Yes. Each .existbefore-badge[data-att] element triggers one independent fetch. The script is idempotent: loading it twice does not re-render.
The badge renders an "Invalid badge ID" fallback that links to /verify. No network call is made.