Events
Clear Cache
{#if showSidePanel && (searchResults.length > 0 || secondOrderResults.length > 0 || tTagResults.length > 0)}
{searchResultsCollapsed ? "Show Results" : "Hide Results"}
{/if}
{#if showSidePanel}
Close Details
{/if}
Search and explore Nostr events across the network. Find events by:
Event identifiers: nevent, note, naddr, npub, nprofile, pubkey, or event ID
NIP-05 addresses: username@domain.com
Profile names: Search by display name or username (use "n:" prefix for exact matches)
D-tags: Find events with specific d-tags using "d:tag-name"
T-tags: Find events tagged with specific topics using "t:topic"
The page shows primary search results, second-order references (replies, quotes, mentions), and related tagged events. Click any event to view details, comments, and relay information.
{#if secondOrderSearchMessage}
{secondOrderSearchMessage}
{/if}
{#if searchResults.length > 0}
{#if searchType === "n"}
Search Results for name: "{searchTerm && searchTerm.length > 50 ? searchTerm.slice(0, 50) + '...' : searchTerm || ''}" ({searchResults.length} profiles)
{:else if searchType === "t"}
Search Results for t-tag: "{searchTerm && searchTerm.length > 50 ? searchTerm.slice(0, 50) + '...' : searchTerm || ''}" ({searchResults.length}
events)
{:else}
Search Results for d-tag: "{(() => {
const term = searchTerm || dTagValue?.toLowerCase() || '';
return term.length > 50 ? term.slice(0, 50) + '...' : term;
})()}" ({searchResults.length} events)
{/if}
{#each searchResults as result, index}
{@const profileData = (result as any).profileData || parseProfileContent(result)}
handleEventFound(result)}
>
{searchType === "n" ? "Profile" : "Event"}
{index + 1}
Kind: {result.kind}
{#if profileData?.isInUserLists}
{:else if result.pubkey && communityStatus[result.pubkey]}
{:else}
{/if}
{@render userBadge(
toNpub(result.pubkey) as string,
profileData?.display_name || profileData?.name,
)}
{result.created_at
? new Date(
result.created_at * 1000,
).toLocaleDateString()
: "Unknown date"}
{#if result.kind === 0 && profileData}
{#if profileData.picture}
{
(e.target as HTMLImageElement).style.display = 'none';
(e.target as HTMLImageElement).nextElementSibling?.classList.remove('hidden');
}}
/>
{:else}
{/if}
{#if profileData.display_name || profileData.name}
{profileData.display_name || profileData.name}
{/if}
{#if profileData.about}
{profileData.about}
{/if}
{:else}
{#if getSummary(result)}
{getSummary(result)}
{/if}
{#if getDeferralNaddr(result)}
Read
{
e.stopPropagation();
navigateToPublication(
getDeferralNaddr(result) || "",
);
}}
onkeydown={(e) => {
if (e.key === "Enter" || e.key === " ") {
e.preventDefault();
e.stopPropagation();
navigateToPublication(
getDeferralNaddr(result) || "",
);
}
}}
tabindex="0"
role="button"
>
{getDeferralNaddr(result)}
{/if}
{#if isAddressableEvent(result)}
{/if}
{#if result.content}
{/if}
{/if}
{/each}
{/if}
{#if secondOrderResults.length > 0}
Second-Order Events (References, Replies, Quotes) ({secondOrderResults.length}
events)
{#if (searchType === "n" || searchType === "d") && secondOrderResults.length === 100}
Showing the 100 newest events. More results may be available.
{/if}
Events that reference, reply to, highlight, or quote the original
events.
{#each secondOrderResults as result, index}
{@const profileData = (result as any).profileData || parseProfileContent(result)}
handleEventFound(result)}
>
Reference {index + 1}
Kind: {result.kind}
{#if result.pubkey && communityStatus[result.pubkey]}
{:else}
{/if}
{@render userBadge(
toNpub(result.pubkey) as string,
profileData?.display_name || profileData?.name,
)}
{result.created_at
? new Date(
result.created_at * 1000,
).toLocaleDateString()
: "Unknown date"}
{getReferenceType(
result,
originalEventIds,
originalAddresses,
)}
{#if result.kind === 0 && profileData}
{#if profileData.picture}
{
(e.target as HTMLImageElement).style.display = 'none';
}}
/>
{:else}
{(profileData.display_name || profileData.name || result.pubkey.slice(0, 1)).toUpperCase()}
{/if}
{#if profileData.display_name || profileData.name}
{profileData.display_name || profileData.name}
{/if}
{#if profileData.about}
{profileData.about}
{/if}
{:else}
{#if getSummary(result)}
{getSummary(result)}
{/if}
{#if getDeferralNaddr(result)}
Read
{
e.stopPropagation();
navigateToPublication(
getDeferralNaddr(result) || "",
);
}}
onkeydown={(e) => {
if (e.key === "Enter" || e.key === " ") {
e.preventDefault();
e.stopPropagation();
navigateToPublication(
getDeferralNaddr(result) || "",
);
}
}}
tabindex="0"
role="button"
>
{getDeferralNaddr(result)}
{/if}
{#if isAddressableEvent(result)}
{/if}
{#if result.content}
{/if}
{/if}
{/each}
{/if}
{#if tTagResults.length > 0}
Search Results for t-tag: "{searchTerm ||
dTagValue?.toLowerCase()}" ({tTagResults.length} events)
Events that are tagged with the t-tag.
{#each tTagResults as result, index}
{@const profileData = (result as any).profileData || parseProfileContent(result)}
handleEventFound(result)}
>
Tagged Event {index + 1}
Kind: {result.kind}
{#if result.pubkey && communityStatus[result.pubkey]}
{:else}
{/if}
{@render userBadge(
toNpub(result.pubkey) as string,
profileData?.display_name || profileData?.name,
)}
{result.created_at
? new Date(
result.created_at * 1000,
).toLocaleDateString()
: "Unknown date"}
{#if result.kind === 0 && profileData}
{#if profileData.picture}
{
(e.target as HTMLImageElement).style.display = 'none';
}}
/>
{:else}
{(profileData.display_name || profileData.name || result.pubkey.slice(0, 1)).toUpperCase()}
{/if}
{#if profileData.display_name || profileData.name}
{profileData.display_name || profileData.name}
{/if}
{#if profileData.about}
{profileData.about}
{/if}
{:else}
{#if getSummary(result)}
{getSummary(result)}
{/if}
{#if getDeferralNaddr(result)}
Read
{
e.stopPropagation();
navigateToPublication(
getDeferralNaddr(result) || "",
);
}}
onkeydown={(e) => {
if (e.key === "Enter" || e.key === " ") {
e.preventDefault();
e.stopPropagation();
navigateToPublication(
getDeferralNaddr(result) || "",
);
}
}}
tabindex="0"
role="button"
>
{getDeferralNaddr(result)}
{/if}
{#if isAddressableEvent(result)}
{/if}
{#if result.content}
{/if}
{/if}
{/each}
{/if}
{#if !event && searchResults.length === 0 && secondOrderResults.length === 0 && tTagResults.length === 0 && !searchValue && !dTagValue && !searchInProgress}
Publish Nostr Event
Create and publish new Nostr events to the network. This form supports various event kinds including:
Kind 30040: Publication indexes that organize AsciiDoc content into structured publications
Kind 30041: Individual section content for publications
Other kinds: Standard Nostr events with custom tags and content
{/if}