A web-based Nostr client built into the JUX framework. Feature overview, NIP support, and comparison with other clients.
Web Client · Open Architecture · Self-hostedNoxtr is a web-based Nostr client integrated into the JUX PHP framework. It runs as a module within a self-hosted website, combining Nostr protocol access with server-side features like user accounts, Lightning address hosting, and NIP-05 identity verification.
It is designed as a single-page application with no external JavaScript frameworks — vanilla JS with a lightweight DOM helper (wquery).
Runs on your own server (Apache/nginx, PHP, MySQL/SQLite). You control your data, your relay list, and your Lightning endpoints.
No React, no Vue, no npm, no build step. Pure vanilla JavaScript in a single file. Crypto via noble-secp256k1 and noble-ciphers.
NIP-05 verification and LNURL-pay Lightning addresses are auto-configured from your server's user accounts.
Supports NIP-07 browser extensions, nsec private key entry, NIP-46 Nostr Connect (remote signing with QR), and npub read-only mode.
Nostr Implementation Possibilities (NIPs) supported by Noxtr:
| Kind | Description | Usage |
|---|---|---|
| 0 | Profile Metadata | Name, avatar, banner, about, nip05, lud16 |
| 1 | Text Note | Main feed content, hashtags, mentions |
| 3 | Contact List | Follow/unfollow, petnames, relay hints |
| 4 | Encrypted DM | AES-CBC with IV, NIP-07 or privkey decryption |
| 5 | Deletion | Delete own notes and own channel messages (kind 42) |
| 6 | Repost | Repost notes |
| 7 | Reaction | Like/unlike notes |
| 40 | Channel Create | NIP-28 public chat channel |
| 41 | Channel Metadata | Channel name, about, picture |
| 42 | Channel Message | Messages in public channels (own messages deletable via kind 5) |
| 1984 | Report | NIP-56 spam reports |
| 30023 | Article (NIP-23) | Long-form content: mixed into feed with “Read” badge, full Markdown view, article composer |
| 9734 | Zap Request | Lightning payment metadata |
| 9735 | Zap Receipt | Payment confirmation from server |
| 24133 | Nostr Connect | NIP-46 remote signing |
Global, Following, Followers, Topics (hashtag subscriptions), and Hot (engagement-ranked trending).
NIP-04 encrypted DMs with conversation threads, local DB caching, and extension-based decryption.
Create, join, and chat in public channels. Channel metadata, pinning, invite links, and creator-only settings. Delete own messages (NIP-09).
Long-form content (kind 30023) mixed into the feed with a “Read” badge and deduplication. Full Markdown view. Composer with title, summary, image, and tag fields.
Full thread view with root/reply markers, reply counts, chronological ordering, and permalinks.
NIP-57 zaps with internal balance transfers between registered users and external BTCPay invoices via LNURL-pay.
Self-hosted Lightning infrastructure via BTCPay Server. LNURL-pay endpoint serves invoices, creates BOLT11 payment requests, and processes zap receipts (kind 9735) with server-side Schnorr signatures. Received sats accumulate in user balance for internal transfers or withdrawal.
NIP-50 text search with multi-relay fallback. Profile search via @username. Entity detection for npub/note/nevent.
Subscribe to hashtags (#bitcoin, #nostr, etc.) and filter your feed. Suggested topics, bulk toggle, hot filter.
Bookmark notes locally. Mute users with optional NIP-56 spam reporting. Unmute management in settings.
Embedded images (lazy-loaded), video players, YouTube/Vimeo embeds. Dead domain detection with 24h TTL auto-retry.
Edit name, bio, avatar, banner. NIP-05 and Lightning address auto-configured from server account.
Add/remove/toggle relays. Live connection status. Exponential backoff reconnection. Subscription rebalancing.
Parse and render AR mesh network profile broadcasts (ar_profile, ar_collaboration) as visual cards with avatar, location, and social actions.
An impartial comparison of Noxtr against established Nostr clients. Each client has different strengths — this table aims to be factual, not promotional.
| Noxtr | Damus | Amethyst | Primal | Snort | Iris | Coracle | Nostur | |
|---|---|---|---|---|---|---|---|---|
| Platform | Web | iOS | Android | Web/iOS/Android | Web | Web/Multi | Web (PWA) | iOS/macOS |
| Open source | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Self-hosted | ✓ | — | — | — | ✓ | ✓ | ✓ | — |
| No build step required | ✓ | n/a | n/a | — | — | — | — | n/a |
| Documented NIPs | 17 | ~15 | 60+ | ~20 | 42 | ~15 | ~15 | ~15 |
| NIP | Noxtr | Damus | Amethyst | Primal | Snort | Iris | Coracle | Nostur | |
|---|---|---|---|---|---|---|---|---|---|
| 01 | Basic protocol | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 02 | Contact list | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 04 | Encrypted DMs (legacy) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | read | ✓ |
| 05 | DNS identity | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 07 | Browser signer | ✓ | n/a | n/a | ✓ | ✓ | ✓ | ✓ | n/a |
| 09 | Event deletion | ✓ | ~ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 10 | Reply threading | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 19 | Bech32 entities | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 23 | Long-form content (articles) | ✓ | — | ✓ | ✓ | ✓ | — | — | — |
| 25 | Reactions | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 28 | Public channels | ✓ | — | ✓ | — | ✓ | — | — | — |
| 44 | Versioned encryption | ✓ | ~ | ✓ | — | ✓ | ✓ | ✓ | ✓ |
| 46 | Nostr Connect | ✓ | — | ~ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 50 | Search | ✓ | ~ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 57 | Lightning Zaps | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 65 | Relay list metadata | ✓ | ✓ | ~ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Feature | Noxtr | Damus | Amethyst | Primal | Snort | Iris | Coracle | Nostur |
|---|---|---|---|---|---|---|---|---|
| Modern DMs (NIP-17/44) | — | ~ | ✓ | — | ✓ | ✓ | ✓ | ✓ |
| Built-in wallet | balance | Coinos | — | ✓ | — | Cashu | — | — |
| Profile search (@user) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Public channels (NIP-28) | ✓ | — | ✓ | — | ✓ | — | — | — |
| Trending / Hot feed | ✓ | — | ✓ | ✓ | ✓ | — | — | — |
| Topic/hashtag subscriptions | ✓ | — | ✓ | ~ | ~ | — | — | ~ |
| NIP-05 hosting | ✓ | — | — | premium | paid | — | — | — |
| Lightning address hosting | ✓ | — | — | ✓ | paid | — | — | — |
| Multiple accounts | logout/login | — | ✓ | — | ✓ | — | ✓ | ✓ |
| Long-form content (NIP-23) | ✓ | — | ✓ | ✓ | ✓ | — | — | — |
| Communities (NIP-72) | — | — | ✓ | — | — | — | ✓ | — |
| File upload (NIP-96) | — | — | ✓ | — | ✓ | — | ✓ | — |
| BTCPay Server integration | ✓ | — | — | — | — | — | — | — |
| AR profile rendering | unique | — | — | — | — | — | — | — |
Areas where Noxtr is behind other clients:
| Component | Technology |
|---|---|
| Frontend | Vanilla JavaScript (single IIFE), wquery DOM helper |
| Backend | PHP (JUX framework module) |
| Database | MySQL or SQLite (dual-compatible SQL) |
| Web server | Apache (mod_rewrite) or nginx |
| Cryptography | noble-secp256k1 (BIP-340 Schnorr), noble-ciphers (XChaCha20-Poly1305), Web Crypto API (AES-CBC, HKDF) |
| Lightning | BTCPay Server (LNURL-pay, BOLT11 invoices) |
| Storage | Server DB (contacts, topics, bookmarks, DMs, relays, muted, channels) + localStorage/IndexedDB (keys, UI state) |