Step 1 of 5
Define the badge
The issuer publishes kind 30009 with a d tag and optional name, description, image and thumbnails.
NIP-58
DraftEvents
Anyone can design a badge and award it to people. Awards are permanent and cannot be transferred, but each recipient chooses which badges to show on their profile and in what order, and can group them into sets.
Edit the form or the JSON: both stay in sync, the badge says whether the result is valid, and tapping any field explains it.
How the parts connect: From design to display
Not signed yet · Demo keys only. These personas' secret keys are public on purpose.
Select any field in the form or the JSON to see what it does.
Step 1 of 5
The issuer publishes kind 30009 with a d tag and optional name, description, image and thumbnails.
No course chapter covers this NIP yet. The editor above is the quickest way in.
Profile badges and badge sets are NIP-51 lists.
Definitions and sets are addressable; awards are regular events.
Specification text is quoted in English from the nostr-protocol/nips repository. Our explanations and the interface are translated. Source on GitHub at commit 0046368
Four special events are used to define, award, display and categorize badges in user profiles:
A "Badge Definition" event is defined as an addressable event with kind 30009 having a d tag with a value that uniquely identifies the badge (e.g. bravery) published by the badge issuer. Badge definitions can be updated.
A "Badge Award" event is a kind 8 event with a single a tag referencing a "Badge Definition" event and one or more p tags, one for each pubkey the badge issuer wishes to award. Awarded badges are immutable and non-transferable.
A "Profile Badges" event is defined as a replaceable event with kind 10008 as a NIP-51 standard list.
Profile badges contain an ordered list of pairs of a and e tags referencing a Badge Definition and a Badge Award for each badge to be displayed. It may also contain a tags referencing "Badge Set" events.
A "Badge Set" event is defined as an addressable event with kind 30008 as a NIP-51 set.
Badge sets allow users to categorize accepted badges into labeled groups. They contain ordered pairs of a and e tags referencing a Badge Definition and a Badge Award for each badge in the set.
The following tags MUST be present:
d tag with the unique name of the badge.The following tags MAY be present:
name tag with a short name for the badge.image tag whose value is the URL of a high-resolution image representing the badge. The second value optionally specifies the dimensions of the image as widthxheight in pixels. Badge recommended dimensions is 1024x1024 pixels.description tag whose value MAY contain a textual representation of the
image, the meaning behind the badge, or the reason of its issuance.thumb tags whose first value is an URL pointing to a thumbnail version of the image referenced in the image tag. The second value optionally specifies the dimensions of the thumbnail as widthxheight in pixels.The following tags MUST be present:
a tag referencing a kind 30009 Badge Definition event.p tags referencing each pubkey awarded.The number of badges a pubkey can be awarded is unbounded. The Profile Badge event allows individual users to accept or reject awarded badges, as well as choose the display order of badges on their profiles.
The following tags MAY be present:
a and e tags referencing a kind 30009 Badge Definition and kind 8 Badge Award, respectively. Clients SHOULD
ignore a without corresponding e tag and viceversa. Badge Awards referenced
by the e tags should contain the same a tag.Users MAY be awarded badges (but not limited to) in recognition, in gratitude, for participation, or in appreciation of a certain goal, task or cause.
Users MAY choose to decorate their profiles with badges for fame, notoriety, recognition, support, etc., from badge issuers they deem reputable.
Clients MAY whitelist badge issuers (pubkeys) for the purpose of ensuring they retain a valuable/special factor for their users.
Badge image recommended aspect ratio is 1:1 with a high-res size of 1024x1024 pixels.
Badge thumbnail image recommended dimensions are: 512x512 (xl), 256x256 (l), 64x64 (m), 32x32 (s) and 16x16 (xs).
Clients MAY choose to render less badges than those specified by users in the Profile Badges event or replace the badge image and thumbnails with ones that fits the theme of the client.
Clients SHOULD attempt to render the most appropriate badge thumbnail according to the number of badges chosen by the user and space available. Clients SHOULD attempt render the high-res version on user action (click, tap, hover).
{
"pubkey": "alice",
"kind": 30009,
"tags": [
["d", "bravery"],
["name", "Medal of Bravery"],
["description", "Awarded to users demonstrating bravery"],
["image", "https://nostr.academy/awards/bravery.png", "1024x1024"],
["thumb", "https://nostr.academy/awards/bravery_256x256.png", "256x256"]
],
// other fields...
}
{
"id": "<badge award event id>",
"kind": 8,
"pubkey": "alice",
"tags": [
["a", "30009:alice:bravery"],
["p", "bob", "wss://relay"],
["p", "charlie", "wss://relay"]
],
// other fields...
}
Honorable Bob The Brave:
{
"kind": 10008,
"pubkey": "bob",
"tags": [
["a", "30009:alice:bravery"],
["e", "<bravery badge award event id>", "wss://nostr.academy"],
["a", "30009:alice:honor"],
["e", "<honor badge award event id>", "wss://nostr.academy"]
],
// other fields...
}
An earlier version of this NIP used a kind 30008 addressable event with a d tag value of profile_badges for the Profile Badges event. Clients should treat these events as equivalent to kind 10008 and migrate to the new format.