CommentAura

WordPress comments that stay WordPress comments.

Threading, voting, reactions, subscriptions and moderation — stored in wp_comments, rendered on the server, with nothing sent to anyone else.

WordPress 6.5+ PHP 8.1+ 180 KB GPLv2 no JS

YOUR SERVER Reader request WordPress SELECT wp_comments HTML, already rendered never any third-party service YOUR SERVER Reader request HTML WordPress SELECT wp_comments never any third-party service
No second server sits in the path. Every comment is selected from your own database and returned as finished HTML — which is why the thread survives you removing the plugin.

Screens

Quiet on the front, plain in the back.

A full CommentAura thread: a pinned comment, nested replies indented under their parents, and a compact action row under each comment.
Reaction chips appear only once somebody has used one; the rest sit behind a single control.
The same thread at phone width, with a narrower avatar gutter and the action row wrapping cleanly.
400 px. The gutter narrows, because every nesting level pays for it again.
Four status cards in the CommentAura dashboard — Integration, Caching, Spam and Notifications — each check reporting its state in words next to a coloured dot.
The dashboard verifies against your actual install. Anything it cannot verify says “not detected” rather than being rounded up to OK.
The CommentAura settings screen with toggle switches for editing, voting, reactions, subscriptions, honeypot and data removal, plus number fields for the edit time limit and rate limit.
Every setting on one screen. Anything only a developer would touch is a filter, not a checkbox.

Why

Three constraints, kept.

Your comments are never moved

Everything lives in wp_comments and wp_commentmeta, where WordPress already puts it. No iframe, no external service, no account for your visitors. Deactivate the plugin and every comment, reply and permalink still works — that is not a migration path, it is the architecture. Uninstalling removes CommentAura's own tables and never touches a comment.

It runs without JavaScript

The thread is rendered on the server, in your page's HTML. Reading and posting both work with scripting disabled, which is also why search engines index the discussion and screen readers can read it. Script enhances; it is never load-bearing.

Nothing is sent anywhere

No trackers, no CDN, no analytics beacon, no sponsored content in your discussions — the plugin makes zero outbound HTTP requests. Guest identities are stored as a one-way salted hash, never as a raw IP address.

Performance

Measured, not asserted.

0 bytes loaded on a page with no comment thread. Not a small file — none at all.
Flat query count per thread, whether a post has ten comments or ten thousand. Replies are fetched per level, not per comment.
0 outbound requests. There is no service to be slow, to go down, or to change its terms.

Features

A discussion system, not a stylesheet.

  • Threaded discussionsClassic and block themes, byte-identical output through either path.
  • SubscriptionsDouble opt-in — nobody is emailed until they confirm — with one-click unsubscribe.
  • Voting and reactionsDuplicate prevention enforced by a database constraint, not by bookkeeping.
  • Comment editingFor as long as you allow, with every revision retained for moderators.
  • Pinned commentsLifted above the paged flow, in the order you pinned them.
  • Per-post closingClose or reopen a discussion straight from the Posts list.
  • Spam baselineInvisible honeypot and timing check. No CAPTCHA; works alongside Akismet.
  • Fair rate limitingKeyed on identity and address together, so one office network is not one visitor.
  • Disqus importMatched by URL, with a dry run that reports what would happen before writing.
  • GDPR supportRegistered with WordPress's own personal-data exporter and eraser.
  • REST APIDocumented under commentaura/v1, permission callback on every route.
  • Overridable templatesCopy any partial into your theme. Named callbacks, so hooks can be removed.

Install

Then it is already working.

  1. Download the zip, then open Plugins → Add New → Upload Plugin.
  2. Choose the file, install, activate.
  3. Nothing is imported, moved or copied — your existing comments are already there.

WordPress 6.5+PHP 8.1+GPLv2 or later

Settings live under CommentAura → Settings. Uninstalling leaves your data in place unless you tick the box that says otherwise.

FAQ

Asked first, usually.

Will I lose my comments if I deactivate this?

No — this is the whole point. Comments live in WordPress's own tables the entire time. Deactivate and your theme's normal comment display returns, with every comment, reply and link intact.

Does it work with page caching?

Yes. Reading a thread sets no cookies and needs no per-visitor state, so pages cache normally. Posting fetches a short-lived token at the moment of posting, which is what makes commenting work on a fully cached page.

Does it work with block themes?

Yes. It integrates with both the classic comments_template() path and the block editor's core/comments block, and produces identical output through either.

Do my visitors need JavaScript?

No. Reading and posting both work with JavaScript disabled.

Is there a CAPTCHA?

No, deliberately. A CAPTCHA taxes every honest reader to inconvenience a bot that can solve them for a fraction of a cent. There is an invisible honeypot and a timing check instead, which cost your readers nothing.

Where are votes and reactions stored?

In CommentAura's own tables, because they do not fit WordPress's comment schema. The comments themselves are never copied, shadowed or moved.