Learn how NymRank determines name occupation and how to maximize your chances of claiming your desired "slug" or nickname.
NymRank uses a reputation-based system to determine who "occupies" a name. To be considered an occupant, you need:
Before claiming a name: Always search for it first. If someone with significantly higher reputation already occupies it, consider choosing a more unique variation instead of competing for the same name.
Your affinity score determines how strongly you're associated with a name. Higher affinity = better occupation claim.
| Field | Points | Description |
|---|---|---|
name (exact match) |
+2 | The primary name field in your kind 0 profile |
name (starts with + space) |
+1 | If your name starts with the slug followed by a space (e.g., "jack" matches "jack smith", but NOT "jackson" or "ja") |
nip05 (exact match) |
+1 | Your verified NIP-05 identifier |
lud16 (exact match) |
+1 | Your Lightning address |
Minimum to occupy: You need at least 2 points total. For example:
name match = 2 points ✓ (occupies)name starts with + nip05 match = 1 + 1 = 2 points ✓ (occupies)nip05 + lud16 both match = 1 + 1 = 2 points ✓ (occupies)nip05 match = 1 point ✗ (doesn't occupy)According to NIP-24, display_name is a richer, more expressive name field separate from name. The name field should be used for slugs/usernames, while display_name is for display purposes (with spaces, emojis, etc.).
Amethyst's Nostr client profile editor for Android uses the name field but positions it like a display_name which can encourage users to incorrectly add spaces, emojis, and special characters. This is sub-optimal for name affinity:
name to "Vitor Pamplona 🚀" instead of just "vitor"nip05 or lud16 to reach the 2-point thresholdname field (not display_name). If you use spaces or emojis in your name field, you'll only get partial match points (+1) instead of full points (+2). For optimal slug occupation, use a simple, single-word name without spaces or emojis.
To mitigate this UX ambiguity, NymRank gives partial credit for names that start with your slug followed by a space:
name is "jack smith" and someone searches "jack", you get +1 point (partial match)name is "jackson" and someone searches "jack", you get 0 points (no match - requires space after "jack")name is "jack" and someone searches "ja", you get 0 points (no match - "jack" doesn't occupy "ja")nip05 or lud16 matches, you can still occupy the name{
"name": "jack", ← Use this for slug occupation (+2 points)
"display_name": "Jack 🚀 Smith", ← Use this for display (NIP-24 standard)
"nip05": "jack@example.com",
"lud16": "jack@example.com"
}
{
"name": "Jack Smith 🚀", ← Only gets +1 point (partial match)
"nip05": "jack@example.com", ← +1 point
"lud16": "jack@example.com" ← +1 point
// Total: 3 points (works, but not optimal)
}
Better approach: Set name to "jack" and use display_name for "Jack Smith 🚀"
NIP-05 is a verification system that links your Nostr pubkey to an email-like identifier. The format is: username@domain.com
For name occupation, NymRank checks if the username part (before the @) matches the slug:
nip05: "jack@example.com" → matches slug "jack" (+1 point)nip05: "jacksmith@example.com" → does NOT match slug "jack" (no points)LUD-16 is your Lightning payment address. Similar to NIP-05, NymRank checks the username prefix:
lud16: "jack@example.com" → matches slug "jack" (+1 point)nip05 and lud16 match the same slug, you get 2 points total (1 + 1)nip05 and lud16 to maximize your affinity score. Combined with a partial name match, you can easily reach the 2-point threshold.
Even if multiple users claim the same name, reputation determines who ranks highest:
NymRank uses influence scores calculated through the Web of Trust. Our base reputation inputs come from the GrapeRank project, which computes trust scores from follow/mute/report relationships and publishes them as NIP-85 Trusted Assertions. NymRank ingests these assertions and layers on name affinity and logarithmic weighting for search and occupation decisions.
Even if both users have the same name affinity:
The user with higher reputation effectively "occupies" the name because they appear first in search results.
Name occupation enables powerful features for Nostr applications:
Apps can resolve slugs to pubkeys for mentions and tags. Instead of typing long hex pubkeys, users can simply type @jack and a NymRank enabled Nostr client will resolve it to the correct npub.
NymRank enabled application and services can provide clean URLs that map to user profiles:
https://app.example.com/jack → Resolves to the npub of the user occupying "jack"https://video.example.com/channel/jack → Direct link to a user's video channelhttps://shop.example.com/store/jack → Link to a user's e-commerce pageUsers can search for people by memorable names instead of cryptographic keys, making Nostr more accessible and user-friendly.
thecto for API access.
Before claiming a name, check if it's already occupied by someone with higher reputation:
name field to a simple slug (no spaces, no emojis) for maximum pointsdisplay_name (NIP-24) for your rich display name with spaces/emojisNymRank reads your kind 0 Nostr profile event. To update your profile:
name field directly (not just display_name)Profile refresh frequency: Future enhancements may consider activity staleness in reputation calculations.
Ready to claim your name?
Search for Your Name