A comment thread on any page, stored on Nostr relays rather than on the site being discussed.
See the codeComment freely on any website — without censorship.
NostrComments adds a comment thread to every webpage, powered by the Nostr protocol. Comments live on public Nostr relays — no company owns them, no platform can delete them, and no moderator can decide the conversation is over.
That matters most where it is least welcome: on a news site that closed its comments, on a government page, on a corporate announcement, on an article in a country where disagreeing in public is expensive. The comment thread is attached to the page's URL, not hosted by the page's owner, so it stays reachable whether or not they want it to exist.
Published on the Chrome Web Store, on Firefox Add-ons. In active development since December 2025, with new releases most weeks.
Watch it work — sixty-six seconds: a thread on an article that has no comment section, the same thread appearing in a second browser under a different key, and then a paywalled paper, a company announcement, a government page and a post on X.
Read a thread without installing anything — a static page that queries the same relays from your own browser. Give it any address to see what has been said about it.
NostrComments has no server. There is no account, no email, no telemetry, and no analytics of any kind — the developer never receives your data, because there is nowhere for it to go.
Because the extension can run on every page you visit, that claim deserves proof rather than trust. The short version:
The full policy is in PRIVACY.md.
nsec / npub (NIP-19) for any other Nostr appnostr: link to any commentInstall from the Chrome Web Store.
Or load it manually, without the store:
NostrComments-Chrome-vX.Y.zip from the latest release and unzip itchrome://extensions → enable Developer modeInstall from Firefox Add-ons.
Or manually: download NostrComments-Firefox-vX.Y.xpi from the
latest release and drag it into
Firefox, or open about:addons → gear icon → Install Add-on From File.
The userscript is frozen at 23.2.0. It still works, but it gets no new features and no fixes. A userscript has no background context, so it cannot open relay connections outside the page, and on sites with a strict Content-Security-Policy (x.com among them) Firefox refuses them. Install the extension instead. Details in NostrComments-Userscript/README.md.
When you open the comment panel for the first time you will see a disclosure screen explaining what gets sent where. After you accept it, the onboarding screen offers two options:
nsec to
use the same identity in any other Nostr app — and consider setting a password to encrypt it
at rest.wss://nos.lolwss://relay.damus.iowss://relay.nostr.bandwss://relay.primal.netwss://relay.snort.socialwss://offchain.pubYou can add or remove relays from the ⚙ Settings panel inside the extension.
No build system, no dependencies, no package manager. The extension is a single content script per distribution, and the two distributions are kept in lockstep.
node tests/run.mjs # run the test suite (Node 18+, no packages to install)
node tests/browser-qa.mjs # drive the real extension in a browser (needs chromium + chromedriver)
sh build.sh # produce the Chrome .zip and Firefox .xpi into dist/
The tests extract and exercise the real code from the shipped source files, so they fail if shipped behaviour changes. They cover the hand-rolled secp256k1 / BIP-340 Schnorr implementation (including the official BIP-340 reference vector, so events interoperate with other Nostr clients), event signature verification, at-rest key encryption, URL normalisation, NIP-19 identity encoding, the Lightning payment path, and byte-identical parity of the security-critical code across the Chrome and Firefox builds.
browser-qa.mjs is separate because it needs a browser: it loads the unpacked extension in
chromium, drives the panel, and measures WCAG AA contrast against what is actually painted on
screen. See tests/README.md for what each suite covers.
Pull requests welcome. Please run node tests/run.mjs before opening one, and keep the three
distributions in sync — tests/parity.test.mjs will tell you if you missed one.
NostrComments is free and open source, and every feature stays that way — there is no paid tier and nothing is held back. If it is useful to you, there is a one-line Support the developer row at the bottom of the comment panel — a zap or two, and an arrow that opens the rest — sending sats straight from your wallet to mine over Lightning. No account, no server in between.
If you have no wallet open and would rather scan something, there is a payment page at https://coinos.io/slurpnc — same wallet as the Lightning address below, showing a QR code and taking any amount.
Or send to one of these directly:
slurpnc@coinos.ionpub1ewxm82gprxwkh9qznauyey6vwx62xetpsux3prnmddkyevasatgswmds9e198yNVWJz2H8PwmNsX72URVVV9pRbxMb1887aDTPD9HQx2QenKsS7MvHDdqsziFPD7UB37X6G5XVXc2ZPhAs8DdEKUPYJijVcRjj1gU5KvxLCTfWUKWqrd1D5o8uw5EpMMIT
A comment thread on any page, stored on Nostr relays rather than on the site being discussed.
See the codeComment freely on any website — without censorship.
NostrComments adds a comment thread to every webpage, powered by the Nostr protocol. Comments live on public Nostr relays — no company owns them, no platform can delete them, and no moderator can decide the conversation is over.
That matters most where it is least welcome: on a news site that closed its comments, on a government page, on a corporate announcement, on an article in a country where disagreeing in public is expensive. The comment thread is attached to the page's URL, not hosted by the page's owner, so it stays reachable whether or not they want it to exist.
Published on the Chrome Web Store, on Firefox Add-ons. In active development since December 2025, with new releases most weeks.
Watch it work — sixty-six seconds: a thread on an article that has no comment section, the same thread appearing in a second browser under a different key, and then a paywalled paper, a company announcement, a government page and a post on X.
Read a thread without installing anything — a static page that queries the same relays from your own browser. Give it any address to see what has been said about it.
NostrComments has no server. There is no account, no email, no telemetry, and no analytics of any kind — the developer never receives your data, because there is nowhere for it to go.
Because the extension can run on every page you visit, that claim deserves proof rather than trust. The short version:
The full policy is in PRIVACY.md.
nsec / npub (NIP-19) for any other Nostr appnostr: link to any commentInstall from the Chrome Web Store.
Or load it manually, without the store:
NostrComments-Chrome-vX.Y.zip from the latest release and unzip itchrome://extensions → enable Developer modeInstall from Firefox Add-ons.
Or manually: download NostrComments-Firefox-vX.Y.xpi from the
latest release and drag it into
Firefox, or open about:addons → gear icon → Install Add-on From File.
The userscript is frozen at 23.2.0. It still works, but it gets no new features and no fixes. A userscript has no background context, so it cannot open relay connections outside the page, and on sites with a strict Content-Security-Policy (x.com among them) Firefox refuses them. Install the extension instead. Details in NostrComments-Userscript/README.md.
When you open the comment panel for the first time you will see a disclosure screen explaining what gets sent where. After you accept it, the onboarding screen offers two options:
nsec to
use the same identity in any other Nostr app — and consider setting a password to encrypt it
at rest.wss://nos.lolwss://relay.damus.iowss://relay.nostr.bandwss://relay.primal.netwss://relay.snort.socialwss://offchain.pubYou can add or remove relays from the ⚙ Settings panel inside the extension.
No build system, no dependencies, no package manager. The extension is a single content script per distribution, and the two distributions are kept in lockstep.
node tests/run.mjs # run the test suite (Node 18+, no packages to install)
node tests/browser-qa.mjs # drive the real extension in a browser (needs chromium + chromedriver)
sh build.sh # produce the Chrome .zip and Firefox .xpi into dist/
The tests extract and exercise the real code from the shipped source files, so they fail if shipped behaviour changes. They cover the hand-rolled secp256k1 / BIP-340 Schnorr implementation (including the official BIP-340 reference vector, so events interoperate with other Nostr clients), event signature verification, at-rest key encryption, URL normalisation, NIP-19 identity encoding, the Lightning payment path, and byte-identical parity of the security-critical code across the Chrome and Firefox builds.
browser-qa.mjs is separate because it needs a browser: it loads the unpacked extension in
chromium, drives the panel, and measures WCAG AA contrast against what is actually painted on
screen. See tests/README.md for what each suite covers.
Pull requests welcome. Please run node tests/run.mjs before opening one, and keep the three
distributions in sync — tests/parity.test.mjs will tell you if you missed one.
NostrComments is free and open source, and every feature stays that way — there is no paid tier and nothing is held back. If it is useful to you, there is a one-line Support the developer row at the bottom of the comment panel — a zap or two, and an arrow that opens the rest — sending sats straight from your wallet to mine over Lightning. No account, no server in between.
If you have no wallet open and would rather scan something, there is a payment page at https://coinos.io/slurpnc — same wallet as the Lightning address below, showing a QR code and taking any amount.
Or send to one of these directly:
slurpnc@coinos.ionpub1ewxm82gprxwkh9qznauyey6vwx62xetpsux3prnmddkyevasatgswmds9e198yNVWJz2H8PwmNsX72URVVV9pRbxMb1887aDTPD9HQx2QenKsS7MvHDdqsziFPD7UB37X6G5XVXc2ZPhAs8DdEKUPYJijVcRjj1gU5KvxLCTfWUKWqrd1D5o8uw5EpMMIT