Comments

Review a page by commenting on the exact words.

Select text on any page and say what you think of it. The comment stays attached to those words, and everyone who opens the page sees it.

Try it on this page. Select any sentence here, then click the Comment button that appears.

On this page, comments are saved in your browser only. On your own site they're shared.

Why it exists

Reviewing a prototype by email gets you vague notes: "the second paragraph feels off". It's slow to work out which paragraph, and what was meant.

With this, the reviewer selects the words they mean and writes what's wrong. You get the words and the comment together, in one list, without anyone needing an account.

It started as a way to get quick reactions to early prototypes, from people who had no time for a tool.

How it works

  1. Select. A reviewer highlights text and writes a comment.
  2. Discuss. A side panel lists every thread. People reply, and resolve what's done.
  3. Fix. Open comments are plain JSON. You, a script or an AI assistant can read them, change the page, and mark them resolved.

Pin a comment to an image

Some things you can't select. Open the panel, choose Pin on image, then click the spot you mean. The pin stays at that point, even when the image is resized.

Wireframe of a parking permit application form

Try it on the wireframe above. Pins are saved in your browser only.

Add it to a page

One line before </body>:

<script src="/comments.js" defer></script>

Comments are stored by a small serverless function in the same repo. Deploy it to Netlify, set an admin token, and you're done. There's no database and nothing to build.

Setup, options and the API are in the README.

What you get

Anchored to text

Comments find their words again when the page loads, and survive small edits.

Threads

Replies, resolve and reopen, and a toggle for resolved ones.

No accounts

People type a name. You decide who can load the page.

One file, no dependencies

The widget injects its own styles. It works with any site, any framework.

What it doesn't do