NIP-58 - Badges
Table of Contents
Badges
draft optional
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
30009having adtag 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
8event with a singleatag referencing a "Badge Definition" event and one or moreptags, 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
10008as a NIP-51 standard list. Profile badges contain an ordered list of pairs ofaandetags referencing aBadge Definitionand aBadge Awardfor each badge to be displayed. It may also containatags referencing "Badge Set" events. -
A "Badge Set" event is defined as an addressable event with kind
30008as a NIP-51 set. Badge sets allow users to categorize accepted badges into labeled groups. They contain ordered pairs ofaandetags referencing aBadge Definitionand aBadge Awardfor each badge in the set.
Badge Definition event
The following tags MUST be present:
dtag with the unique name of the badge.
The following tags MAY be present:
- A
nametag with a short name for the badge. imagetag whose value is the URL of a high-resolution image representing the badge. The second value optionally specifies the dimensions of the image aswidthxheightin pixels. Badge recommended dimensions is 1024x1024 pixels.- A
descriptiontag whose value MAY contain a textual representation of the image, the meaning behind the badge, or the reason of its issuance. - One or more
thumbtags whose first value is an URL pointing to a thumbnail version of the image referenced in theimagetag. The second value optionally specifies the dimensions of the thumbnail aswidthxheightin pixels.
Badge Award event
The following tags MUST be present:
- An
atag referencing a kind30009Badge Definition event. - One or more
ptags referencing each pubkey awarded.
Profile Badges Event
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:
- Zero or more ordered consecutive pairs of
aandetags referencing a kind30009Badge Definition and kind8Badge Award, respectively. Clients SHOULD ignoreawithout correspondingetag and viceversa. Badge Awards referenced by theetags should contain the sameatag.
Motivation
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.
Recommendations
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).
Example of a Badge Definition event
{
"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...
}
Example of Badge Award event
{
"id": "<badge award event id>",
"kind": 8,
"pubkey": "alice",
"tags": [
["a", "30009:alice:bravery"],
["p", "bob", "wss://relay"],
["p", "charlie", "wss://relay"]
],
// other fields...
}
Example of a Profile Badges event
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...
}
Deprecated Profile Badges event
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.