Voidly / SVG badges
Small badge.
Source attached.
A place for context in your README,
blog or dashboard.
01 / Configure
Make it yours.
Pick the subject. Choose a style.
Read what the endpoint returns.
Endpoint preview
SVG / 20pxLoading badge…
Image from the public badge endpoint. “Unknown”, “no data” and “not found” are source states, not proof of accessibility.
Color overrides change appearance only. Country badges normally show relative rank and score band, not a live connection test.
https://api.voidly.ai/badge/v1/country/IR.svg[](https://voidly.ai/ir)URL patterns & appearance parameters
All six badge endpoints live at https://api.voidly.ai/badge/v1/ and return an SVG. These are real source URLs; the sample incident may return “not found.”
?style=flat-square (default), flat, plastic or for-the-badge.?label=overrides the left text (URL-encoded, renderer capped at 60 characters).?color=accepts supported names such as red, severe or accessible, or a three/six-digit hex color. Unknown color values fall back to the endpoint’s color.?logo=nonehides the inline V mark.
Example gallery & ready-made Markdown
Published examples show possible uses, not proof that your project is censored. Images load from the actual endpoints when this gallery is opened; source states and timestamps may be unavailable.
Show your project is censored somewhere
Drop-in badge for tools, news sites, or apps that face blocking. Reads the country-index badge endpoint.
[](https://voidly.ai/ir)[](https://voidly.ai/cn)[](https://voidly.ai/ru)Show that an AI service is blocked
Aliases for OpenAI, Claude, Gemini, Perplexity and more — resolves to the right domain automatically.
[](https://voidly.ai/ai-blocked)[](https://voidly.ai/ai-blocked)[](https://voidly.ai/ai-blocked)Pin a domain status to your README
For news sites, indie SaaS, or any domain — pass a fully qualified host plus a country code.
[](https://voidly.ai/domain/twitter.com)[](https://voidly.ai/domain/wikipedia.org)[](https://voidly.ai/domain/signal.org)Tracked-by-Voidly badge
For projects that consume Voidly data — say so loudly. The endpoint returns an incident counter; its fallback and source-time limits are documented below.
[](https://voidly.ai)[](https://voidly.ai)[](https://voidly.ai)Topic-level signal
Counts countries with non-zero censorship score in a Citizen Lab category. Drives advocacy dashboards.
[](https://voidly.ai/topics/news)[](https://voidly.ai/topics/lgbt)[](https://voidly.ai/topics/women-health)Sources, cache and unknown states
Country rank/band comes from the censorship-index handler. Service aliases resolve to a domain, then use the accessibility handler. Incident severity comes from the incident record. Topics count rows with a positive score or blocked count.
The SVG response uses Cache-Control: public, max-age=300, s-maxage=300, an ETag and Access-Control-Allow-Origin: *. A matching ETag can return HTTP 304. Five-minute caching is not five-minute measurement freshness, and an already displayed image does not poll itself.
Badge source responses do not include an observation time in the SVG. The country handler can reuse an older index cache when its source fails; the generic incident counter can use a cached or built-in fallback without indicating it. The preview reports when it fetched the image, not when the underlying event happened.
“Unknown”, “no data”, “not found” and “error” remain visible. An outage or failed test alone does not establish intentional censorship. A successful image load does not prove current accessibility.
SVGs require no JavaScript or downloaded fonts when embedded as images. They can be used where remote SVG images are supported, including many repository/docs renderers; platform sanitizers and image proxies differ. No blanket compatibility or unlimited-use guarantee is made.
Country-index source ↗Incident-count source ↗API documentation →Attribution & the published builder
Voidly-original badge material is offered under CC BY 4.0. Link back to voidly.ai; the snippets include a source destination. Upstream data retains its own license.
A downloaded SVG is the fetched image, frozen at that moment. Use the endpoint URL for an image that can revalidate through normal browser or proxy caching.
Dataset and source terms →Published badge builder →Need more context?