Skip to content

Garrul

Disqus alternative for static sites and blogs: threaded comments on one Worker with D1, KV and Turnstile

Garrul comment widget with page reactions, a markdown composer and a threaded discussion with votes

Garrul adds a comment section to any page through a small embedded widget. Readers write in markdown, react and vote, and either post anonymously behind Turnstile or sign in with GitHub, Google, Facebook, X or Discord. Importers bring in existing threads from Disqus, Remark42, Comentario, isso and Cusdis.

Two lines of HTML put Garrul on a page: a div carrying the post slug and a script tag that loads embed.js from your Worker. The widget renders inside a Shadow DOM so the host page's CSS cannot collide with it, is capped at 30 KB gzipped in CI, and is translated into eleven languages. Readers also get nested replies, reports, a newest, oldest or top sort, and a window to edit or delete their own comments. They can subscribe to reply notifications by email, confirmed by double opt-in, with a one-click unsubscribe. Spam handling starts with Turnstile, a sliding-window rate limit, a strict markdown sanitizer and a honeypot field. Four optional heuristics (minimum fill time, link count, holding an author's first comment, a muted-words list) and an optional Akismet or Workers AI classifier send anything suspicious to the moderation queue instead of dropping it. The admin UI covers that queue, users, webhooks to Slack, Discord or Telegram, a Telegram operator bot, settings that apply without a redeploy, and full-site exports as JSON or CSV. Per-user export and erase tools handle data-subject requests. After cloning the latest release and running npm install, npm run setup asks for the site that will embed the widget and for your Turnstile keys. It creates the D1 database and four KV namespaces, generates secrets, sets the workers.dev or custom hostname, applies migrations, deploys, and prints a single-use owner sign-in link. Later releases go in with npm run upgrade, which can print its plan first with --dry-run. IP addresses are stored only as HMAC hashes.

Built for: Bloggers, documentation owners and small publishers running static sites who want reader comments stored in their own Cloudflare account.

What you can use it for

  • Replace Disqus on a Hugo, Jekyll, Astro or WordPress site and import the existing threads
  • Add moderated comments to a documentation site or changelog
  • Collect page reactions and votes without showing a full comment thread
  • Moderate new comments from a phone through the Telegram operator bot
  • Send readers reply notifications by email through Resend

Deploy

  • CLI

    Branch main

    Create a Turnstile widget for your blog's hostname when setup asks for the keys. Add OAuth providers and Resend later with npm run setup -- --secrets; webhooks are set up in the admin UI.

    npx wrangler login
    git clone https://github.com/KingPin/Garrul.git
    cd Garrul
    git checkout "$(git describe --tags --abbrev=0)"
    npm install
    npm run setup

INSTALL.md puts a live workers.dev instance at a few minutes and a full production setup, with a custom domain and OAuth, at 20 to 30 minutes.

What it needs to run

  • D1 databasesgarrul-db
  • KV namespacesOAUTH_STATE, RATE_LIMITS, SESSIONS, TREE_CACHE

Also uses

  • GitHub OAuth (optional): Lets readers sign in with GitHub
  • Google OAuth (optional): Lets readers sign in with Google
  • Resend (optional): Sends reply notifications and moderator digests by emailSource

Good to know

Installation runs from a local terminal with Node.js 24 or later; there is no deploy button. Each OAuth sign-in provider needs its own OAuth app, and email notifications need a Resend API key. The docs advise mapping a custom subdomain instead of workers.dev for production use. Young project: the repository was created in May 2026.

Cost on Cloudflare

Likely fits the free plan

The homepage says small blogs typically fit inside Cloudflare's free tiers and puts the Workers Free ceiling at roughly 50,000 page views a day, since mounting a thread takes two requests. KV on Workers Free accepts 1,000 writes a day.

Source

The estimate is based on Cloudflare’s documented limits and the app’s configuration. What you pay depends on your usage and plan.

Where this comes from

An alternative to Disqus, FastComments, Hyvor Talk.

Listing history

  • Oct 3, 2026 · Garrul listed
  • EmDash admin Edit Post screen with the rich text editor, featured image and a Publish panel for scheduling

    Open-source Astro CMS from Cloudflare for blogs and marketing sites, with a WordPress-style admin and sandboxed plugins

    Deploy
    One-click
    License
    MIT
    GitHub stars
    13.4k stars
    Last commit
  • microfeed dashboard home with web, RSS and JSON feed URLs and a completed setup checklist

    Self-hosted CMS that publishes podcasts, posts, photos and links as a website, RSS feed and JSON Feed on Cloudflare

    Deploy
    CLI
    License
    AGPL-3.0
    GitHub stars
    4.1k stars
    Last commit
  • Rin blog home page with article cards, cover images, tags and reading times (Chinese-language demo blog)

    Self-hosted blog with a browser editor, comments and RSS, deployed to your Cloudflare account by GitHub Actions

    Deploy
    Manual
    License
    MIT
    GitHub stars
    3.1k stars
    Last commit