Skip to content

Kind 3: Follow List

Overview

Kind 3 events represent a user's follow list in the Nostr protocol. They provide a way for users to specify which profiles they are following, along with optional information about where those profiles can be found (relay URLs) and personal nicknames for those profiles (petnames).

Specification

PropertyValue
Kind Number3
Event RangeReplaceable
Defined inNIP-02

Content Format

The content field is not used for this kind and should be empty.

Tags

Tag NameDescriptionFormatRequired
pProfile reference["p", "<pubkey>", "<optional-relay-url>", "<optional-petname>"]Yes

Each p tag represents a profile that the user is following and contains:

  • The 32-byte hex public key of the followed profile
  • An optional relay URL where events from that profile can be found
  • An optional local nickname or "petname" for that profile

Client Behavior

Clients should:

  • Display a user's follows based on their most recent kind 3 event
  • Allow users to update their follow list by publishing a new kind 3 event
  • Append new follows to the end of the list to maintain chronological order
  • Use the follow list to:
    • Display who a user is following
    • Recover follows when switching to a new device
    • Discover new profiles via follows of follows
    • Implement petname schemes for human-readable identity

Relay Behavior

Relays should:

  • Store only the most recent kind 3 event for each pubkey
  • Replace older kind 3 events with newer ones
  • In case of equal timestamps, keep the event with the lexicographically lowest id

Use Cases

  • Follow list backup: Users can recover their follow list when switching devices
  • Profile discovery: Finding new profiles based on who others follow
  • Relay sharing: Discovering useful relays for specific profiles
  • Petname schemes: Building human-readable identity systems based on personal and social context

Example

json
{
  "id": "3bf8fe4734bb4467dd7b1e946f79f2b2ee426a0464290a158e5954503683ee3a",
  "pubkey": "854c79b78954da8aeea3c634c67de3b815952ed6b6dfd6987ce590cdca6f1296",
  "created_at": 1671217411,
  "kind": 3,
  "tags": [
    ["p", "91cf9484e5c49ab15a9d1422e2d228085c4b434fe8499d2ec5142bc65be4e5ca", "wss://alicerelay.com/", "alice"],
    ["p", "14aeb4d625c65b3142b3ef8d35f37e51a0d5bc4d18248c58564d47d64cb8dad4", "wss://bobrelay.com/nostr", "bob"],
    ["p", "612ae86a56ae6fdb211f97568c617f39e5f274769154a7c153aeb282e8cae610", "ws://carolrelay.com/ws", "carol"]
  ],
  "content": "",
  "sig": "a5d9290ef9659083c490b303eb7ee41356a8648bcf8420271d36be97ad3832a766826fb5c67ac6e19aaf1e16ddcf1fb7206f01c19e98ed00c04667c0d6e3d1e4"
}

References

  • Kind 0: User Metadata - Often used in conjunction with follow lists to display profile information

Notes

  • The follow list is intended to be a complete list of follows; when publishing a new list, include all current follows
  • The chronological order of follows in the list can be meaningful for clients that want to display when follows happened
  • The petname scheme described in NIP-02 allows for hierarchical naming (e.g., alice.bob.carol) based on social context