Embed guide
Everything you need to drop a live poll into any Markdown file.
Embedding in a GitHub README
GitHub renders Markdown images inline. Because MarkPoll serves your poll as an SVG, it appears live inside your README. Clicking the image takes users to the vote page.
[](https://markpoll.oxoghost.dev/p/YOUR_POLL_ID)
Replace YOUR_POLL_ID with the ID shown in your dashboard after creating a poll. You can also copy the full snippet from the dashboard directly.
Embedding in other Markdown files
The same syntax works in any Markdown file that renders images: personal blogs, GitLab READMEs, Notion pages that support HTML, and more.
GitHub image caching
GitHub proxies all external images through camo.githubusercontent.com and caches them aggressively. Expect up to ~5 minutes of staleness before a new vote count appears. This is a GitHub limitation; we already return Cache-Control: no-cache on every SVG response.
Vote integrity disclaimer
MarkPoll uses a best-effort deduplication strategy combining two layers:
- A hashed fingerprint of your IP address + User-Agent, stored uniquely per poll.
- A signed cookie set after you vote, checked on any future attempt for the same poll.
These measures can be bypassed by clearing cookies, switching networks, or using a VPN. MarkPoll polls are intended for lightweight community input, not binding decisions.
Free answer option Pro
Enable Allow free answerwhen creating or editing a poll to add a special “Other – write your own” option. Voters who select it can type any text they like.
Free answers count toward the poll's statistics like any regular option. From your dashboard, click Answers on the poll row to read all submitted free texts; only you (the creator) can see them.
The free answer option can be combined with multiple-choice polling and custom CSS.
Custom CSS Pro
Pro users can fully customise the appearance of their poll's vote page with plain CSS. Select Custom CSS in the Theme section when creating or editing a poll, then write any CSS you like in the editor.
The vote page exposes these CSS variables you can override:
:root {
--bg: #0a0a0a; /* page background */
--text: #e5e5e5; /* primary text */
--subtext: #a3a3a3; /* secondary text */
--border: #262626; /* borders */
--surface: #171717; /* card backgrounds */
--accent: #ffffff; /* buttons, highlights */
}You can also target specific elements using their classes:
.poll-option /* each answer button */ .vote-btn /* the submit button */
A live preview is shown in the editor as you type. Custom CSS applies only to the web vote page; the SVG embed always uses the default dark theme for maximum compatibility with GitHub READMEs.
API reference
A public API is planned for a future release. For now, all integrations happen via the embed snippet.