Komments
Features

Built for speed. Designed for developers.

Every feature was built with one constraint: it must not make your page slower.

Performance

Edge-rendered. Under 10KB.

Comments are server-rendered as plain HTML at Cloudflare's edge -- the response arrives already populated. No waiting for JavaScript to hydrate. No layout shift.

The widget JavaScript is under 10KB gzipped. It loads async, so it never blocks your page's critical rendering path. Your Lighthouse score is not our victim.

9.4KB
Bundle size (gzip)
<5ms
Edge read latency
0
Client dependencies
100
Lighthouse stays intact
Authentication

Sign-in that gets out of the way.

Multiple auth methods. No passwords required. Commenters sign in once and comment everywhere Komments is embedded.

Email OTP

Magic link / one-time code. No password stored, no password forgotten.

OAuth

GitHub and Google sign-in built in. More providers on the roadmap.

Anonymous

Allow guests to comment without signing in. You control whether this is enabled per site.

SSO

Bring your own auth with stateless JWT-based SSO. Business plan. Zero config on the commenter side.

Moderation

AI-powered. Hands-free.

Every comment passes through OpenAI's moderation API before publishing. Clean comments appear instantly. Flagged comments sit in a review queue. Rejected content never sees the light of day.

Business plan users can add custom moderation rules -- blocklists, topic restrictions, confidence thresholds. The AI adapts to your community.

AI moderation (OpenAI)
Detects hate speech, spam, adult content, self-harm, and threats.
Keyword blocklist
Pre-filter with word lists before the AI even runs. Instant, zero-cost rejection.
Admin review queue
Borderline comments land in your queue. Approve, reject, or edit in the dashboard.
Moderator team
Invite up to 5 moderators (Pro) or unlimited (Business) to help manage your community.
Real-time

Live updates without the complexity.

New comments appear instantly via Server-Sent Events (SSE). No WebSocket setup, no polling timers. The browser connects once and receives a stream of updates.

SSE stream (simplified)
GET /api/sites/my-site/stream
Accept: text/event-stream

data: {"type":"comment.created","id":"cmt_abc","author":"Alice","body":"Great post!"}

data: {"type":"comment.reaction","id":"cmt_abc","emoji":"👍","count":3}
Customization

Your brand. Your rules.

The widget adapts to your site. No alien styling. No forced brand colours.

Custom CSS

Override any widget style. The widget runs inside a Shadow DOM to prevent your global styles from leaking in -- and vice versa.

Theme tokens

Set primary colour, font, border radius, and spacing. The widget re-themes automatically. Light and dark mode follow the host page.

Custom domain

Serve the widget from your own domain (Business plan). Keeps all network requests first-party. Improves privacy and ad-blocker resilience.

No branding

Pro and Business plans remove the "Powered by Komments" footer. Your comments section feels native.

AI CSS assist

Business plan includes AI-assisted CSS generation. Describe the look you want -- we generate the CSS rules.

Multiple instances

Embed multiple comment sections on a single page. Each instance is isolated and independently configured.

API

39 endpoints. Fully typed.

Everything the widget can do, the API can do. Build your own comment UI, integrate with your CMS, trigger workflows on new comments.

The typed JavaScript client ships in under 3KB. Pass it your API key and you get full autocomplete for every endpoint and response shape.

Comments: list, get, create, update, delete
Moderation: approve, reject, flag, bulk actions
Users: list, ban, export
Sites: create, configure, stats
Webhooks: register, test, view logs (Business)
Typed client example
import { Komments } from '@komments/client'

const client = new Komments({ apiKey: 'sk_live_...' })

const { data } = await client.comments.list({
  siteId: 'my-site',
  page: 'https://myblog.com/post/1',
  status: 'approved',
})

// data is fully typed
console.log(data.comments[0].author.displayName)
Widget

Two lines of HTML.

Drop the snippet. That's it. No build step, no bundler config, no framework-specific adapter.

Embed snippet
<div data-komments data-site-key="pk_live_..."></div>
<script src="https://cdn.komments.io/widget.js" async></script>
Shadow DOM
Style isolation out of the box
Multiple instances
Many sections, one page
Sandbox mode
Test without polluting live data
Sandbox

Test before you ship.

Every site has a separate test environment. Use your sandbox API key in development -- comments never appear in production. Switch to live keys when you're ready.

pk_test_...
Sandbox key
pk_live_...
Live key

Ready to try it?

Free plan. No credit card. Live in two minutes.