Community

Apps

Formstr

Formstr is an open-source Nostr form builder that treats a form as something you can publish, share, encrypt, embed and carry with you instead of renting from a platform forever.

Formstr icon
Apps The product layer Clients, signers, publishing tools, wallets and protocol utilities.
Back to Nostr
Apps

Apps shelf

Apps pages collect clients, signers, tools, developer libraries and product research without turning the app into the whole network.

Apps All Apps pages App routeProduct profiles, categories, tools and source links Browse appsClose shelf

App orientation

App categories

App profiles

0xchatadvanced-nostr-searchAegisAlbyAlby GoAlby HubAlby HubAlby SDKAmberAmberAmethystAmethystApp and product researchApplication-specific dataBlossomBlossom spec NIP-B7BookstrBorisBouquetCalendar by FormstrChachiNostr Apps DirectoryCoracleCoracleCorny ChatCreatrDamusDamusDeveloper stack researchDittoDittodiVineDocstrDTANEmojitoFlotillaFlycatFormstrFountainFreeFromFundstrfutrGIF BuddyGittrgo-nostrGossipGossipGrimoireGroups NIP-29HablaHablaHello Nostr — ResourcesHighlighterHiveTalkhomebrew-nostrHORNET StorageHugo2NostrHyperNoteIrisIrisJumblekanbanstrKeys BandListrLNBits NostrmarketLumeLumilumiLUMINAMapstrMarmot Protocolmatrix-nostr-bridgeMeetstrMemestrMindsmonstrmostardMostronaknak — Nostr Army KnifeNalgorithmNarrnashboardNDKNegentropyngitNofluxNosNos Socialnos2xnosbinnosclNostorg Feature MatrixNostr App ManagerNostr Apps Directory GuideNostr clients feature listNostr Compass — ProjectsNostr Developer GuideNostr Development KitNostr Events MonitorNostr MCP ServerNostr NestsNostr PlaygroundNostr Service ProvidersNostr Writernostr-post-checkernostr-protocol/nostrnostr-rubynostr-sdknostr-sdk-ffinostr-sdk-flutternostr-to-rssnostr-toolsNostr.bandnostr.buildnostr.co.uk ClientsNostr.how — Clientsnostr.hsNostrabilityNostrAppsNostrApps category — AudioNostrApps category — CareerNostrApps category — CommunityNostrApps category — CurationNostrApps category — Direct MessageNostrApps category — DiscoveryNostrApps category — File SharingNostrApps category — Group ChatNostrApps category — MeatspaceNostrApps category — OnboardingNostrApps category — SignersNostrApps category — Toolsnostrchecknostrdbnostrdb-rsNostreeNostreonNostriaNostridNostrium / read.nostr.comNostrmoNostrubenoStrudelnoStrudelNostterNosturNosturNotedeckNpub.proNpub.worldnsec.appnsiteNsiteNstart.meObsidian Nostr WriterOlasOpenvibeOracoloOstrich WorkOwn Your PostsP2P BandPazPeridotPhoenixPlebeian MarketPostizPostr / write.nostr.comPrimalPrimalPrimal Article Editor / Reads authoringPrimal Studiopynostrpython-nostrRecommended Application HandlersRelay Toolsrsslayrust-nostrrust-nostr docsSatelliteSatellite EarthSatlantisSatShootShakespeareShopstrSlidestrSnortSnortStemstrswift-nostr-clientTreasuresWavlakeWavlakeWikifreediaWikistrYakiHonneYakiHonneYakiHonne mobile/web app directoryYondar

App pages

Deep dives

Field guides

Awesome Nostr branches

Research and library

Source inventory

Deep Research: Clients, apps and product surfacesDeep Research: Developer stack and toolingResearch Map: nostrapps.comResearch Source: 0xchatResearch Source: 0xchat — NostrApps pageResearch Source: advanced-nostr-searchResearch Source: Aegis — NostrApps pageResearch Source: AlbyResearch Source: Alby — NostrApps pageResearch Source: Alby GoResearch Source: Alby HubResearch Source: Alby Hub GitHubResearch Source: Alby SDKResearch Source: AmberResearch Source: Amber — NostrApps pageResearch Source: AmethystResearch Source: Amethyst GitHubResearch Source: Awesome Nostr ResourcesResearch Source: BookstrResearch Source: BorisResearch Source: Boris — NostrApps pageResearch Source: BouquetResearch Source: Bouquet — NostrApps pageResearch Source: Calendar by FormstrResearch Source: ChachiResearch Source: Chachi — NostrApps pageResearch Source: CoracleResearch Source: Coracle — NostrApps pageResearch Source: Corny ChatResearch Source: DamusResearch Source: Damus — NostrApps pageResearch Source: DittoResearch Source: Ditto — NostrApps pageResearch Source: DocstrResearch Source: DTANResearch Source: DTAN — NostrApps pageResearch Source: EmojitoResearch Source: Emojito — NostrApps pageResearch Source: Flotilla — NostrApps pageResearch Source: FlycatResearch Source: FormstrResearch Source: Formstr — NostrApps pageResearch Source: FountainResearch Source: FreeFromResearch Source: FreeFrom — NostrApps pageResearch Source: FundstrResearch Source: futrResearch Source: futr — NostrApps pageResearch Source: GIF BuddyResearch Source: GIF Buddy — NostrApps pageResearch Source: GittrResearch Source: go-nostr GitHubResearch Source: GossipResearch Source: Gossip — NostrApps pageResearch Source: GrimoireResearch Source: Grimoire — NostrApps pageResearch Source: HablaResearch Source: Habla — NostrApps pageResearch Source: Hello Nostr — ResourcesResearch Source: HighlighterResearch Source: HiveTalkResearch Source: HORNET Storage — NostrCompassResearch Source: IrisResearch Source: Iris — NostrApps pageResearch Source: JumbleResearch Source: Jumble — NostrApps pageResearch Source: Keys BandResearch Source: Keys Band — NostrApps pageResearch Source: ListrResearch Source: LNBits NostrmarketResearch Source: LumeResearch Source: LumilumiResearch Source: LUMINAResearch Source: MapstrResearch Source: Marmot ProtocolResearch Source: MeetstrResearch Source: MemestrResearch Source: MindsResearch Source: monstr GitHubResearch Source: mostardResearch Source: MostroResearch Source: my.nostr.comResearch Source: nak — Nostr Army KnifeResearch Source: nak GitHubResearch Source: NalgorithmResearch Source: Narr — NostrApps pageResearch Source: nashboardResearch Source: NDK GitHubResearch Source: NDK NPMResearch Source: NegentropyResearch Source: Noflux — NostrApps pageResearch Source: Nos SocialResearch Source: Nos Social — NostrApps pageResearch Source: nos2xResearch Source: nos2x — NostrApps pageResearch Source: nosbinResearch Source: noscl GitHubResearch Source: Nostorg Feature MatrixResearch Source: Nostr App ManagerResearch Source: Nostr Book — KindsResearch Source: Nostr DesignResearch Source: Nostr Developer GuideResearch Source: Nostr NestsResearch Source: Nostr Nests — NostrApps pageResearch Source: Nostr PlaygroundResearch Source: nostr-post-checkerResearch Source: nostr-protocol/nostr GitHubResearch Source: nostr-sdk crates.ioResearch Source: nostr-sdk-ffi GitHubResearch Source: nostr-tools GitHubResearch Source: nostr-tools NPMResearch Source: Nostr.BandResearch Source: nostr.buildResearch Source: nostr.co.uk ClientsResearch Source: Nostr.howResearch Source: Nostr.how — ClientsResearch Source: Nostr.how — ProtocolResearch Source: Nostr.how — What is Nostr?Research Source: Nostr.orgResearch Source: NostrabilityResearch Source: NostrAppsResearch Source: NostrApps category — AudioResearch Source: NostrApps category — CareerResearch Source: NostrApps category — CommunityResearch Source: NostrApps category — CurationResearch Source: NostrApps category — Direct MessageResearch Source: NostrApps category — DiscoveryResearch Source: NostrApps category — File SharingResearch Source: NostrApps category — Group ChatResearch Source: NostrApps category — MeatspaceResearch Source: NostrApps category — OnboardingResearch Source: NostrApps category — SignersResearch Source: NostrApps category — ToolsResearch Source: nostrcheckResearch Source: nostrdb GitHubResearch Source: NostreeResearch Source: Nostree — NostrApps pageResearch Source: NostriaResearch Source: Nostria — NostrApps pageResearch Source: NostridResearch Source: Nostrmo — NostrApps pageResearch Source: Nostrmo GitHubResearch Source: NostrubeResearch Source: noStrudelResearch Source: noStrudel — NostrApps pageResearch Source: NostterResearch Source: NosturResearch Source: Nostur — NostrApps pageResearch Source: NotedeckResearch Source: Npub.proResearch Source: Npub.worldResearch Source: nsec.appResearch Source: NsiteResearch Source: Nstart.meResearch Source: Nstart.me — NostrApps pageResearch Source: Obsidian Nostr Writer — NostrApps pageResearch Source: OlasResearch Source: Olas — NostrApps pageResearch Source: OpenvibeResearch Source: OracoloResearch Source: Oracolo — NostrApps pageResearch Source: Ostrich WorkResearch Source: P2P BandResearch Source: PazResearch Source: PeridotResearch Source: Peridot — NostrApps pageResearch Source: PhoenixResearch Source: Phoenix — NostrApps pageResearch Source: Plebeian MarketResearch Source: Plebeian Market — NostrApps pageResearch Source: PrimalResearch Source: Primal — NostrApps pageResearch Source: Primal Article Editor / Reads authoringResearch Source: Primal StudioResearch Source: pynostr GitHubResearch Source: python-nostr GitHubResearch Source: Registry of KindsResearch Source: Relay Tools — NostrApps pageResearch Source: rsslayResearch Source: rust-nostr docsResearch Source: rust-nostr GitHubResearch Source: SatelliteResearch Source: SatShootResearch Source: ShakespeareResearch Source: Shakespeare — NostrApps pageResearch Source: ShopstrResearch Source: Shopstr — NostrApps pageResearch Source: SlidestrResearch Source: SnortResearch Source: start.nostr.netResearch Source: StemstrResearch Source: TreasuresResearch Source: WavlakeResearch Source: WikifreediaResearch Source: Wikifreedia — NostrApps pageResearch Source: WikistrResearch Source: Wikistr — NostrApps pageResearch Source: YakiHonne mobile/web app directoryResearch Source: YondarResearch Source: Yondar — NostrApps page
Apps18 min readform builder, SDK and response layer

Formstr

Formstr is an open-source Nostr form builder that treats a form as something you can publish, share, encrypt, embed and carry with you instead of renting from a platform forever.

The quick readFormstr turns forms into Nostr-native objects: kind 30168 templates, kind 1069 responses, relay-published links, private view keys, SDK embedding and downloadable standalone HTML forms.

The form is where trust gets real

Forms look boring until you remember what people put into them. Names, email addresses, applications, complaints, survey answers, event registrations, payment hints, membership requests, sometimes even medical or political context. A form is not just a web page with boxes. It is a small trust ceremony. Someone asks for data. Someone else decides whether the asker deserves it.

That is why Formstr is more interesting than its plain label suggests. NostrApps describes it as a web app for creating and sharing forms. The official site says the larger point more sharply: a decentralized forms application that lets you custody your own data through Nostr. Strip away the protocol words and the question becomes simple: what if a form did not have to live inside Google's account system, Typeform's account system, Airtable's account system or any one company's database?

Formstr answers by moving the form object into Nostr. You create a form, publish it to relays, share it as an address, collect responses as Nostr events and keep the important keys close to the people who need them. That does not make every form magically private. It does make the architecture worth paying attention to, because the usual form-builder deal is lopsided. The service owns the database, the dashboard, the export path and the shutdown risk. Formstr tries to make the form portable before it becomes valuable.

That is the attitude to bring when you read this app. Do not ask whether it is "like Google Forms but decentralized" and stop there. Ask where the form lives, where the responses go, who can read them, what keys are needed, which relays are involved and whether the form can keep working when the website you first used is no longer the center of the story.

What Formstr actually publishes

The Formstr repository calls the project a forms implementation on the Nostr protocol. Its current GitHub home is formstr-hq/nostr-forms, an MIT-licensed TypeScript monorepo created on August 29, 2023 and still active when checked on June 6, 2026. The repo was last pushed on June 2, 2026, with 74 stars, 53 forks and 91 open issues. That is a useful signal: this is not just a landing page with a slogan. There is a product, an app package and a separate SDK package.

The technical heart is Formstr's NIP-101 work, titled "Forms on nostr" in the official NIPs repository. Be careful with the wording here. As of June 6, 2026, pull request 1190 is still open, not merged into the canonical NIP set. So the honest description is this: Formstr is building around a proposed forms-on-Nostr event model. In that model, a form template is a replaceable event of kind 30168, while responses are kind 1069 events that point back to the form through an address tag.

That sounds dry, but it is the part that makes the app different. A form is not merely a JSON blob on a private server. Its fields are represented as tags: a unique identifier, a name, settings, relay tags and field tags. Public forms can expose those tags directly. Private forms can put the sensitive material into encrypted content. Responses attach to the form by saying, in effect, "this answer belongs to this form address." The SDK code normalizes those tags back into a JavaScript object, renders an HTML form and publishes submitted answers to the relays listed by the form.

If you have ever lost access to a SaaS dashboard, this matters. The form address can be encoded as a Nostr naddr. The form can name its relays. The SDK can fetch it, decrypt it when you provide the right key material, render it and submit responses without asking one central backend for permission. That does not remove every dependency. You still need working relays, a useful client or page and key handling that you do not fumble. But the shape of the dependency changes.

Private forms, view keys and the quiet part

Privacy is the place where a form tool has to earn your trust. Formstr's code distinguishes public and encrypted forms. When a form is encrypted, the app generates a form signing key and a separate view key. The form template event keeps the kind 30168 shell, but the actual form tags can be encrypted into the content field with NIP-44. Fetching code then uses an nkeys value, extracts the viewKey and derives the conversation key needed to decrypt the form event.

The access-control trail goes further. The repository context describes view access and edit access as separate ideas. A view key lets someone read a private form. A signing key controls edits to the form template. Gift-wrapped events, connected to NIP-59 style wrapping, can distribute those keys to selected people. The createForm code also adds participant and editor handling, pushing p tags and allowed tags where relevant. The point is not simply "password protected form." The point is closer to a key-based access model that speaks Nostr's language.

Responses have their own careful edge. In the SDK, a submitted response becomes a kind 1069 event. Identified submissions can be signed by the user's signer and encrypted to the form's pubkey using NIP-44. Anonymous submissions use an ephemeral key, so a person can answer without turning the act into a permanent identity flex. Fetching responses is done by querying relays for kind 1069 events that reference the form's kind 30168 address.

That is elegant, but you should not confuse elegance with a guarantee. A public form is public. Relay operators may see metadata. Form authors can still learn plenty from responses, timing and content. If you collect sensitive answers, you need to explain what you are asking, why you need it, who can decrypt it and how long you plan to keep it. Nostr gives Formstr a better ownership model, but it does not absolve the form owner from behaving like an adult.

The SDK changes the shape of the product

The most important clue in the repo may be the package split. The web app is one thing. The SDK is another. The web app is the builder and dashboard: React 18, TypeScript, Ant Design, Tailwind, styled-components, React Router, nostr-tools, i18next, Recharts, xlsx and the usual build machinery around Webpack. The SDK is a smaller library, currently versioned 0.2.7, with nostr-tools, NIP-44 support, AES-JS, bech32 nkeys handling, validation and a browser bundle path.

Why should a reader care? Because an SDK turns Formstr from a destination into infrastructure. The SDK fetches a form by naddr, can fetch with a view key, normalizes raw Nostr tags, renders an HTML form, attaches a submit listener and publishes responses. That means a developer can embed a Nostr form somewhere else without asking every visitor to understand the Formstr dashboard. It also means Formstr can become a quiet layer underneath a site, a community page, a popup at an event or a small static tool.

The newer portable-form feature makes that even more concrete. In a June 27, 2025 long-form post, the Formstr account introduced downloadable forms: a form can be exported as a standalone HTML file, opened locally, hosted elsewhere or archived, while still submitting responses to Nostr relays when it has network access. That is a very Formstr idea. The form is not a database row you are allowed to visit. It is a file and an address and a set of keys and relay instructions.

You can feel the difference in practical terms. A community can publish a call for volunteers without forcing people through a big platform. A small event can carry its registration form as a single file. A researcher can keep a copy of the form that was actually sent. A builder can embed it in another site and still have responses move through Nostr. This is not glamorous, but it is deeply useful in the way infrastructure is useful: it reduces the number of places where your work can be trapped.

Where I would use it

I would reach for Formstr when the form itself needs to outlive the platform page. A meetup signup is an obvious use. So is a project application, a bug-report intake form, a community survey, a guest list for a small venue, a contact form for a creator, a feedback loop for an open-source release or a lightweight submission path for a Nostr directory. If the thing you collect is casual and reversible, Formstr is a good experiment. If the thing is highly sensitive, Formstr may still be interesting, but the privacy design needs to be part of the work, not a line in the footer.

The app also fits people who already live with Nostr signers. The README names NIP-07 browser extensions and NIP-46 remote signers as prerequisites for development. In user terms, that means Formstr belongs in the same mental drawer as Alby, nos2x, nsec.app, Amber, Nostr Connect and the rest of the signer conversation. If you understand why your private key should not be typed into every site, you understand why a form builder that leans on signers is trying to solve a real problem.

There is also a small but important continuity feature: "My Forms." The SDK and project context describe a kind 14083 list used to remember a user's forms and store the form secret material in encrypted content. That matters because a form creator needs more than a public link. They need to find their own forms again, edit them and read responses. Formstr is trying to do that with Nostr events and encrypted lists rather than a normal account database. It is a hard problem, and the rough edges are visible, but the direction is coherent.

The caution is the same one I would give for any live Nostr product with serious data flow. Test with a harmless form first. Submit once with a signer and once anonymously. Check which relays accepted the event. Export responses. Try the standalone HTML path. Confirm whether your intended recipients can open a private form with the key material you send them. If your workflow depends on deletion, legal erasure, enterprise audit logs or a support desk that can recover everything after you lose your keys, be honest: Formstr is probably not that product yet.

But if your goal is to understand what open social infrastructure can do beyond timelines, Formstr is one of the better examples. It takes a boring web primitive and asks the right question: can this become a signed, portable, relay-published object? Once you see forms that way, other things start to look different too. Invitations, applications, checklists, intake flows, receipts, lightweight CRM records - all of them can be thought of as structured events first and platform screens second.

Sources worth opening

This article keeps claims close to the public project trail: the official app, the current repository, the SDK code, the proposed NIP and Formstr's own long-form update.

Back to the Crays Nostr page
Apps route visual cue 1
Apps route visual cue 2
Apps route visual cue 3
Apps route visual cue 4
Apps route visual cue 5

How to use this page

Find the product surface first.

Search clients, signers, product categories or developer tools when you need a specific app, source file or comparison clue.

AppsKeep exploring AppsApp routeProduct profiles, categories, signer guides and source links.Browse apps
Apps route visual cue 1
Apps route visual cue 2
Apps route visual cue 3
Apps route visual cue 4
Apps route visual cue 5

Bring something back

Ask, suggest, submit or nominate.

Use these links when something is missing, a source is stale, or a public Nostr builder belongs in the map.