Self-Hosted
Your database, your data. No vendor lock-in, no monthly fees. Deploy anywhere you run Node.js.
✓ Datasource "db": SQLite
✓ Schema synced — 3 models pushed
✓ Your data stays on your server
Stop chasing feedback across Slack, email, and Notion. Let your clients annotate your site directly — self-hosted, DOM-anchored, zero SaaS fees.
npm i @siteping/widgetFree forever · MIT Licensed · Self-hosted · 3 min setup
The CTA button is too small on mobile
Sarah M.
Replaces Marker.io ($39/mo) · BugHerd ($42/mo) · Userback ($79/mo)
See the blue button in the corner? That's SitePing running on this page. Try it.
Everything you need, nothing you don't.
Your database, your data. No vendor lock-in, no monthly fees. Deploy anywhere you run Node.js.
✓ Datasource "db": SQLite
✓ Schema synced — 3 models pushed
✓ Your data stays on your server
Annotations survive layout changes. Multi-selector anchoring with CSS, XPath, and text fallback.
CSS + XPath + text fallback
Three lines of code. Works with Next.js, any framework, or vanilla JavaScript.
npm i @siteping/widgetFull transparency, full control. Contribute, fork, or customize.
Prisma schema and API route set up in seconds.
$ npx @siteping/cli initWidget CSS never leaks into your site. Your site CSS never breaks the widget.
Works with your stack
Install, scaffold, and ship. Your clients annotate directly on the live site.
$ npm install @siteping/widget @siteping/adapter-prismaAdd both packages to your project in one command.
$ npx @siteping/cli init
✓ Prisma schema updated
✓ API route generatedGenerates Prisma schema + API route automatically.
import { initSiteping } from '@siteping/widget'
initSiteping({
endpoint: '/api/siteping',
projectName: 'my-project',
})Your clients can now draw on the site.
The hero image is blurry on retina
Sarah M.
No login. No account. Just a floating button and pixel-perfect annotations.
No account required·No API key·No monthly bill
Why pay $39-79/mo for features you can self-host for free?
SitePingRecommended | Marker.io | BugHerd | Userback | |
|---|---|---|---|---|
| Self-hosted | ||||
| npm package | SDK only | |||
| Open source | MIT | |||
| Pricing | Free | $39/mo | $42/mo | $79/mo |
| DOM-anchored | Screenshot | Pin only | Screenshot | |
| Survives layout changes | Partial | |||
| Customizable | Full control | Limited | Limited | Limited |
Any database supported by Prisma — PostgreSQL, MySQL, SQLite, MongoDB, CockroachDB, and more. A Drizzle adapter is on the roadmap.
The widget is framework-agnostic — it works with React, Vue, Svelte, Astro, or vanilla JavaScript. The CLI currently scaffolds Next.js API routes, but the adapter works with any server that handles standard Request/Response.
Annotations use multi-selector anchoring — CSS selectors, XPath, text snippets, and structural fingerprints. If one selector breaks, the system falls back to the next. Positions are stored as percentages relative to the anchor element, so they adapt to responsive layouts.
A dashboard UI is on the roadmap. Currently, feedback is accessible via the widget panel and the API. You can query, filter, and manage feedback programmatically.
The widget is under 20 kB gzipped. It loads asynchronously and never blocks your page rendering.
Fully. Since SitePing is self-hosted, all data stays on your infrastructure. No data is ever sent to third-party servers. You control storage, retention, and deletion.
Yes — accent color, position (bottom-right or bottom-left), theme (light, dark, auto), and locale (English, French). Full event system for custom integrations.
No. SitePing is an npm package you install and configure. No account, no API key, no signup. It runs entirely on your infrastructure.