Add comments in one click.

Charcha is a single Cloudflare Worker you deploy to your own account. Readers comment with a name and nothing else. There is no Charcha account, no container to run, and no monthly bill.

MIT · sourcepnpm check:size · no cookies · no reader accounts


01 / Install

Two lines in your template.

The script is served as a static asset, so fetching it costs your deployment nothing against the Cloudflare request budget. Only reading the comments is a request.

what you write

index.html
<div id="charcha"></div>
<script src="https://your-worker.workers.dev/embed.js" defer></script>

and then one setting

A fresh deployment trusts one origin, its own, so the first thing it does on your site is refuse to load. Add your origin at /admin, under Settings. It is a row in the settings table rather than an environment variable, which is the thing everyone reaches for first, and nearly everyone hits it once. Getting started has the step.


02 / What it is

It is a Worker, not a platform.

Your account, your rows

One Worker and one D1 database, both created in your own Cloudflare account by the deploy button. Nobody else holds a copy of your readers' comments, because there is nowhere else for them to be.

No cookies, ever

Nothing is written to the reader's browser — no cookie, nolocalStorage, no sessionStorage. It is not a default you can switch: anything that appears to need reader-side storage gets a different design instead.

An embed you can read

sourcepnpm check:size, vanilla JavaScript, no framework and no Markdown parser. The budget is 10 kB and CI fails the build over it, so the number cannot drift quietly.


03 / Spam

Eight checks, then you. One leaves your account, and it is off.

Cheapest first, so a comment caught by the honeypot never costs a network call. Layer eight is the only one that hands a reader's address, email and words to a company that is not you. It stays off until you set two secrets, and its page says exactly what it sends before it says how to switch it on.

  1. 01HoneypotA field no human fills in, hidden without the stylesheet so a theming mode cannot switch it off.
  2. 02Time to submitA form posted faster than a person could read it is not a person.
  3. 03TurnstileOptional, off until you configure it. Free and unmetered.
  4. 04Rate limits5 per address and 30 per page in 10 minutes.
  5. 05Already refusedThe one check whose evidence is a decision you made yourself, replayed against where a comment came from.
  6. 06Content heuristicsLink floods, the same paragraph on three pages, and domains that mix scripts to look like other domains.
  7. 07Learns your siteTrained on your own approvals and your own spam calls, on your own account. Silent until it has seen 30 of each.
  8. 08AkismetOptional, and the only layer that sends a reader anywhere. Off until you set two secrets.
  9. 09YouEverything else is held for a person to read. That gate is never skipped.

Layer seven is the one that gets better with use. It learns what junk looks like on your site from the comments you approve and the ones you mark spam, on your own Cloudflare account, inside the free allowance of sourceCloudflare's Workers AI free plan, verified 2026-07-23 that ordinary comment traffic comes nowhere near. It reads no corpus and ships with no opinions, so it says nothing at all until it has watched you make sourcesrc/spam/model.ts of each kind. The strongest thing it can ever do is put a comment in front of you. It can hold one and it can never refuse one, which means it cannot quietly bin a real person's writing. What it costs, and what it cannot do.


04 / Cost

It runs inside the free tier.

Reading a page performs no database writes, which is the property that keeps traffic from using up the budget that commenting needs. The ceiling is Worker requests, at sourceCloudflare's free plan, verified 2026-07-23 — roughly that many comment-thread loads.

The numbers, in plain language — what each limit is, what breaks when you reach one, and the one figure Cloudflare's own documentation disagrees with itself about.