Skip to content
Twikoo
     

A simple, safe, free comment system.
简体中文 | English

This document is for American English. This document has many bugs.

Features ​

Simple ​

  • Free Build.(Support CloudBase, Vercel, Netlify, Hugging Face, Railway, Zeabur, Cloudflare Workers, AWS Lambda, EdgeOne Makers, or self-hosted as the commenting backend)
  • Simple Deployment.(Vercel one-click deployment, illustrated guides for every platform, plus Docker self-hosting)

Easy to use ​

  • Support reply, like, dislike.
  • No additional adaptations, support with light theme and dark theme use.
  • Support API , batch get article comment count, latest comments.
  • Visitors entering QQ number in the nickname field will automatically complete the QQ nickname and QQ email.
  • Visitors fill in the digital QQ e-mail, will use the QQ avatar as the comment avatar.
  • Support the comment to paste pictures.(Can be disabled)
  • Support inserting pictures.(Can be disabled)
  • Support CloudBase, 7bu, S.EE, Lsky Pro, PicList, EasyImage, Chevereto image beds, and S3-compatible storage (R2 / MinIO, etc.)
  • Support inserting emoji.(Can be disabled)
  • Support Ctrl + Enter reply.
  • Comments are saved in draft in real time and will not be lost when refreshed.
  • Support Katex formulas.
  • Support for code highlighting by language.

Security ​

  • Privacy and information security. (sensitive fields (email, IP, environment configuration, etc.) are not leaked through Tencent cloud function control)
  • Support for Akismet spam comment detection.(View Details akismet.com)
  • Support Tencent Cloud content security spam comment detection.(View Details Tencent Cloud Content Security)
  • Support manual review mode.
  • Anti XSS Attack.
  • Support for limiting the maximum number of comments per IP per 10 minutes.

notification ​

  • E-mail (visitors and blogger)
  • WeChat (blogger only, via Server 酱, registration required)
  • QQ (blogger only, via Qmsg 酱, service registration required)
  • QQ (blogger only, via go-cqhttp, self-hosting/configuring the bot and a QQ account required)
  • DingTalk, WeCom, Feishu, Telegram, Discord, Bark, PushDeer, WxPusher and more (blogger only, via pushoo, registration required)

Personalization ​

  • Background image.
  • the "blogger" logo text.
  • Notification Email Template.
  • Comment prompt message.(placeholder)
  • emoji(OwO 的数据格式)
  • 【Nickname】 【Email】 【Website】 Required / Optional
  • Code highlighting theme.

Management ​

  • Embedded panel with password login to easily view comments, hide comments, delete comments and modify configuration.
  • Support to hide the management portal and show it by entering a secret code.
  • Support for importing comments from Valine, Artalk, Disqus.

Preview ​

Comments ​

Comments

Management ​

Management

Notification ​

Notification

Quick Start ​

View Details

If you want to get updates, make suggestions and participate in the test, welcome to join the discussion group: 1080829142 (QQ)
1080829142

Special Thanks ​

Icon design:Maemo Lee

Browser support ​

TIP

Twikoo 2.0 drops IE / ES5 support (the build target is ES2022). Use a modern browser at or above the versions below.

IE / EdgeFirefoxChromeSafariiOS Safari
Edge 94+93+94+15.4+15.4+

IE and ES5 engines are no longer supported; the minimum versions follow from ES2022 syntax support.

Release notes & plans ​

Update logs & Development Plan

Development ​

This repository is a pnpm monorepo and requires Node 26 (.nvmrc = 26, build target ES2022).

sh
pnpm install # install dependencies
pnpm demo    # one-command local demo (client watch + tkserver + demo page, fully offline)
pnpm lint    # lint
pnpm typecheck
pnpm test    # unit tests
pnpm build   # build (packages/client/dist/twikoo.all.min.js)

Local development (pnpm demo) ​

pnpm demo starts three processes with a single command: the client Vite watcher (port 9820), the tkserver backend (port 8080) and the demo page (port 9820 — open http://localhost:9820/demo.html).

  • Every asset is local (bulma / katex come from npm dependencies, not a CDN), so it works without internet access;
  • On first start it generates demo data covering 11 scenarios (plain comments, nested replies, owo emoji, formulas, code blocks, links and images, likes, spam, multi-path pagination, visitor counter, full config). The data lives in data/ at the repository root — delete that directory to reset;
  • Demo data is only generated when TWIKOO_SEED=1 is set (pnpm demo sets it for you); production deployments can never reach it.

If your changes can help more people, feel free to submit a Pull Request!

I18N ​

Supports 9 locales (zh-CN, zh-HK, zh-TW, en, ja-JP, ko-KR, vi-VN, id-ID, uz-UZ). Translate Pull Request.

License ​

FOSSA Status

Released under the MIT License.