Skip to the reading
nostr101
Foundations track page 3 of 6 NIP-19 @ 656cecc

Keys are the account

There is no username, no password and no reset. A Nostr identity is one secret number and the public number derived from it, and everything about using Nostr safely follows from understanding which is which.

500 words2 min0 explainersSpec: NIP-19
Anchor text · read alongside terms stated per work · free online
NIP-19 · anchor
Nostr Implementation Possibilities (NIPs)
the contributors to nostr-protocol/nips
"bech32-encoded entities" — the npub, nsec and note formats, and the rule that the protocol itself always uses hex. This page's §2 is a reading of it.
Read the chapter →

Most accounts you have ever made are a row in somebody’s database. You prove you own the row with a password, and if you lose the password the company that owns the database lets you back in.

A Nostr identity is not a row anywhere. It is a number you chose at random, and a second number computed from it. Nobody issued it, nobody stores it, and nobody can restore it — because there is no “it” outside the number in your possession.

Look at a pair

Here is a real keypair, generated when this page was built. Both keys work; neither is worth anything, and the reason is the lesson.

Inspector · a throwaway keypair pair 1 of 6
nsec · the private key · NEVER SHARE
nsec1fe24mq5yxqdr5hgykjvfjpsvwzt2389jjazds6nrc7w07wcs3x3q7gph0e
4e555d8284301a3a5d04b49899060c7096a89cb29744d86a63c79cff3b1089a2
npub · the public key · share freely
npub1empdslzhdmywyx96frt400vhd64ff7aszz8fmtv5txlff7dzt3rsr9sfh6
cec2d87c576ec8e218ba48d757bd976eaa94fbb0108e9dad9459be94f9a25c47

One derives from the other, in one direction only. Multiply the private key by the curve's generator point and you get the public key; there is no operation that goes back. That is the whole of what a Nostr identity is — and it is why there is no reset, no recovery and no support address.

The two long hex strings underneath are the same two keys in the form the protocol actually uses. npub and nsec are that hex wrapped in bech32 with a checksum, so a typo is caught rather than silently producing a different key — which is the one thing the friendly format buys you.

Generated at build time by a job that checks itself against the BIP-340 and NIP-19 test vectors , most recently on 2026-09-16. Without JavaScript this shows one pair instead of six, which is the same lesson. There is no input on this page and no key-derivation code in it: nothing here can accept a key, by construction.

That nsec is printed on a public web page. Anyone reading this can take it, sign events with it, and be indistinguishable from anyone else who took it. It is worthless — not because it is a weak key, but because it is not secret. A key is only ever worth the secrecy around it.

Which is the whole answer to the question people ask next: why can’t I just paste mine into a site to check it? Because the moment it is somewhere other than your own storage, it has the same value as the one above.

What the two forms are for

The protocol always uses hex. npub and nsec exist for humans: the same 32 bytes, wrapped in bech32 with a prefix and a checksum.1

The prefix is the part that matters. Two 64-character hex strings look identical, and one of them is catastrophic to share. npub1… and nsec1… do not — a person can tell them apart across a room, and software can refuse an nsec where an npub belongs before anything is transmitted. The checksum catches a typo instead of quietly producing a valid-but-different key.

That is a design decision about human error, not about cryptography, and it is a good one.

Where the secret actually lives

You cannot use Nostr without the private key signing things. The question every serious client answers is where, and there are four answers in circulation:

In the client. The app holds the key. Simple, and the entire security of your identity is now the security of one application and the device it runs on.

In a browser extension. The web page asks the extension to sign; the page never sees the key. This is what NIP-07 standardises, and it is the reason a well-built web client never has an nsec field at all.

In a remote signer. The key sits on a separate device or service that signs on request over relay messages. NIP-46 calls it a bunker. It moves the key off every device you browse from.

In hardware. The key never leaves a device that has no general-purpose software on it.

The ordering is roughly least to most cautious, and all four are better than the fifth option, which is pasting it into a website. There is no arrangement in which that is safe, and no site that needs you to.

Notes

  1. NIP-06 describes deriving a Nostr key from a BIP-39 seed phrase, so one phrase can back up a wallet and an identity together. Upstream now marks it unrecommended and says to prefer a single stored nsec.NIP-06

Source & licence

This page adapts no licensed material. It is original work by Delta Gamma LLC and is published under CC BY-SA 4.0; the figures it reports are separately dedicated to the public domain, below.

nostr101 adds no normative claims. Where this page and a NIP disagree, the NIP is correct and this page is a bug. Every page states the revision it was written against: NIP-19 @ 656cecc.

Numbers, titles and kind assignments come from the NIPs repository and belong to its contributors, who state that all NIPs are public domain. This page asserts no licence over that text. Its own prose is CC BY-SA 4.0; attribute to nostr101.com and to the NIPs contributors.