Nostr WoT
BeginnerNostrProtocol

What Is a Nostr Event? Posts, Profiles and Signatures

Understand the seven event fields, what signatures verify, and why profiles, reactions and linked media behave differently.

·3 min read
What Is a Nostr Event? Posts, Profiles and Signatures

A post on Nostr is more than the words in your feed. Your app packages those words with an author key, a timestamp and other details, then asks your signer to sign them. That signed package is an event. This guide accompanies the Nostr WoT video below, following one message: “See you at sunset.”

Inside the seven fields

NIP-01 defines the common format. You do not need to write JSON to use Nostr, but recognizing these fields helps when reviewing a signing request.

FieldWhat it contains
pubkeyThe author's public key, encoded as hexadecimal.
created_atA Unix timestamp in seconds, supplied by the author’s software.
kindA number telling apps how to interpret the event.
tagsLists of references or additional details.
contentA string containing text or data appropriate to the kind.
idA SHA-256 fingerprint of the specified serialized data.
sigA Schnorr signature over that ID, verifiable with pubkey.

The ID is calculated from [0, pubkey, created_at, kind, tags, content] using NIP-01’s exact JSON serialization rules. Neither id nor sig is included in that input. The leading 0 belongs to the serialization format; it is not the event’s kind.

The five data fields feed the NIP-01 serialization and SHA-256 hash to produce id; sig is a signature over id.The five data fields feed the NIP-01 serialization and SHA-256 hash to produce id; sig is a signature over id.

One format, different actions

A short plaintext post uses kind 1, defined in NIP-10. Its content can hold “See you at sunset.” Tags can connect a reply to another event.

A profile update uses kind 0. Its content is a JSON object encoded as a string, with details such as name, about and picture. Profiles are replaceable: relays may discard older versions after receiving a newer one for the same key.

A reaction to a Nostr event uses kind 7, defined in NIP-25. An e tag identifies the target event. A + in content represents a like. The reaction has its own author, ID and signature; it does not modify the original post.

What verification actually proves

Full verification recomputes the ID from the data and checks the signature against the public key. If someone changes “sunset” to “sunrise” while retaining the old ID and signature, verification fails. Signing the changed data creates a different event; it does not rewrite the original.

A valid signature establishes that the matching key signed those data. It does not identify the person operating that key, verify a profile’s real name or make a signed statement true. The timestamp is also signed, but it remains an author-supplied claim rather than independent proof of time. Signing alone does not encrypt the content.

Why a photo can disappear

An event can contain a media URL that the app downloads separately. NIP-92 describes imeta tags for related metadata, including optional file hashes. Signing a URL does not freeze the bytes served there or keep the server online. A file hash can help check downloaded bytes, but cannot guarantee availability.

Different apps can verify the same event and display it differently. Whether they find it depends on the relays they query, retention and app support. When inspecting an event, separate three questions: does it verify, do you trust its author, and can you retrieve what it references?

Related video walkthroughs

These videos are in English.

What Is a Nostr Event? Posts, Profiles & Signatures ExplainedWatch on YouTube

Stay Updated

Get news about published Nostr WoT releases, new features, and integrations.

You will receive the newsletter in English.

We store your email address and preferred language to send you the newsletter.

Newsletters