Open-source · Self-hosted · Privacy-first

Comments that
belong to you.

Verbi is a lightweight, self-hosted comment system. Drop it into any site — blog, docs, portfolio — and keep full control of your data.

comments.example.com
Comments 3
JD
Jane Doe2h ago

This is exactly what I've been looking for. Setup was under five minutes — just a div and a script tag. Love the Markdown support.

12↩ Reply
MK
Max K.5h ago

Does it support nested replies? I need proper threading for my blog.

5↩ Reply
AD
AdminAdmin4h ago

Yes — infinite nesting with pagination. You can configure max depth in settings.

8↩ Reply
SL
Sarah L.1d ago

Migrated from Disqus yesterday. So much faster and I finally own my data.

15↩ Reply
~40 KBgzipped client
SQLitezero config DB
reply depth
MITlicensed

Everything you need,
nothing you don't.

A comment system that stays out of your way.

Threaded Replies

Nested comments with infinite depth, pagination, and clean visual hierarchy.

Markdown

Full GFM support — code blocks, tables, links, bold, italic, and more.

Voting

Up/downvote system with live score. Sort by top or by date.

Self-Hosted

Your data stays on your server. SQLite out of the box, zero telemetry.

Moderation

Admin panel to approve, pin, or delete comments. Soft-delete keeps threads intact.

Dark Mode

Built-in dark theme. Follows system preference or toggled manually.

Embeddable

One script tag for any HTML site. Or import as a React component.

Email Alerts

Notify commenters on replies. Notify admins on new submissions.

Lightweight

~40 KB gzipped client bundle. No heavy runtime dependencies.

Embed anywhere.
In minutes.

One div. One script. That's it.

HTML / Script tag
<div id="verbi"
  data-page-key="/post/hello"
  data-page-title="Hello World"
  data-site="default"
  data-server="https://comments.example.com">
</div>
<script src="https://comments.example.com/embed.js"></script>
React / Next.js
import VerbiEmbed from "@/components/VerbiEmbed";

<VerbiEmbed
  server="https://comments.example.com"
  pageKey="/post/hello"
  pageTitle="Hello World"
  site="default"
/>
Configuration
AttributeDefaultDescription
data-page-keylocation.pathnameUnique page identifier
data-page-titledocument.titleTitle shown in admin panel
data-site"default"Multi-site isolation key
data-server""URL of your Verbi instance

Live demo.

Try it — post a comment below. It's real.

Comments (0)

0 chars
Loading comments...