Add visual feedback to your HTML site.

No framework and no build step. Paste one tag into your HTML, and reviewers can pin comments to any element on the page.

01 · Create a project

Sign up free with Google and create a project in the dashboard. Its Install tab shows the tag with your project key filled in. The Free plan costs $0 a month.

02 · Add the script tag

index.html

<script src="https://pinthread.dev/embed.js"
  data-project="YOUR_PROJECT_KEY" defer></script>

Paste it before </body>. If a static site generator such as Hugo, Jekyll, or Eleventy builds your pages, paste it into the base template once.

Replace YOUR_PROJECT_KEY with the key from the Install tab. The key is public: it only tells the widget which project to load.

03 · Check that it works

Open the page from a local server, such as npx serve ., or from your host. The pinthread button shows at the edge of the page, and the project’s Install tab changes from waiting to installed. Click the button, sign in, and pin a comment to any element.

Pages on localhost and 127.0.0.1 load pinthread for every project. For a deployed site, add its address under the project’s Settings.

Troubleshooting

The button does not appear when you open the file directly

A page opened as file:// has no web address, so pinthread cannot load its project. Serve the folder on localhost instead.

The console shows “pinthread: data-project is missing”

The tag has no data-project attribute. Copy the tag again from the project’s Install tab.

The button shows locally but not on your host

Add the deployed address under the project’s Settings. Local addresses work without this step.

Connect your coding agent

pinthread is also an MCP server. Claude Code, Cursor, or Codex can read every comment with its page and element, make the change, and reply in the thread.

Questions

Can I add pinthread to a static website?

Yes. pinthread is one script tag, so it works on any static site, on any host.

Does pinthread change my page styles?

No. The widget draws its interface inside an isolated ShadowRoot, so your CSS and its CSS do not affect each other.

Other frameworks