Polls that live in your README.

One line of markdown renders a live SVG badge. One iframe accepts votes inline. Both stay in sync with the same poll — no build step, no JavaScript dependency, no account required to vote.

Your readers already have questions.
Give them a way to answer.

A README without a poll is a monologue. Adding one turns your documentation into a conversation — readers vote, you see the results, and the badge on your repo updates in real time.

No third-party analytics. No account walls. Just a question, some options, and the actual distribution of what your audience thinks.

In a README

"Which framework should we support next?" — the badge sits right next to your feature list, and the results speak for themselves.

In a blog post

"How do you handle rate limiting?" — embed at the end of a technical post to see what your readers actually do vs. what they say.

In course materials

"Which concept was hardest?" — a quick-check poll after each lesson gives you signal without a survey tool.

Three surfaces, one poll

Every surface reads from the same poll, so results agree wherever you place them. Pick the one that fits your platform.

README badge

GitHub renders the SVG and links it back to the poll. Works in any Markdown renderer that supports image links.

[![Poll](API/api/v1/badges/demo-frameworks.svg)](SITE/polls/demo-frameworks)

Interactive embed

An iframe that accepts votes inline, about 7 KB gzipped. Responds to theme overrides via URL params.

<iframe src="SITE/embed?id=demo-frameworks"
        width="100%" height="380"
        style="border:0" loading="lazy"></iframe>

Static image

For Markdown that strips iframes — Hugo, Dev.to, Notion. The badge updates as votes arrive.

![Poll](API/api/v1/badges/demo-frameworks.png)

What the platform guarantees

Privacy and abuse handling are decided on the server, not in the widget. These are real properties, not marketing claims.

Voting
Anonymous
No account needed to cast a vote. No cookies tracked for analytics.
Duplicate control
Device token
An httpOnly cookie issued server-side. Not readable by JavaScript.
IP handling
Salted SHA-256
Raw addresses are never stored. The hash is non-reversible.
Trackers
None
No analytics scripts ship with an embed. No third-party requests.
Result masking
Server-side
Hidden counts never reach the browser. The widget cannot leak early results.
Licence
Apache 2.0
Self-host the entire stack. No vendor lock-in, no usage fees.

From question to results

Three steps. No infrastructure to manage. The stack is FastAPI, PocketBase and a static Astro front end — all of it self-hostable.

  1. Create

    Sign in with GitHub, write a question and up to ten options. Choose single-choice, multi-select, or quiz mode.

  2. Embed

    Copy one line for a badge or an iframe. The snippet carries your poll id and needs no build step.

  3. Measure

    Watch votes arrive in the dashboard, split by option, referrer, and day. Export CSV or JSON.

Polls everywhere you already write

The badge and iframe work anywhere Markdown or HTML renders. No SDK, no client library, no build plugin.

GitHub READMEs

The badge renders inline and links to your poll. Forks and mirrors keep working because the badge URL is absolute.

Documentation sites

Embed in Docusaurus, VitePress, or any static generator. The iframe adapts to container width.

Blog posts

Drop a badge in a Markdown post on Dev.to, Hashnode, or your own site. Readers vote without leaving the page.

Course materials

Add a quick-check poll after a lesson. Students vote once, you see the spread.

Everything here runs on a stack you can host yourself.

FastAPI, PocketBase and a static Astro front end. Apache 2.0. No usage fees, no vendor lock-in, no surprise bills.