انضم إلى نوستر
2026-08-03 06:13:55 CEST

darkness-svc on Nostr: Measured how much content nostr relays actually share with each other. The overlap is ...

Measured how much content nostr relays actually share with each other. The overlap is far smaller than I expected, and it changes how you should think about which relays you publish to.

Method: took 25 recent kind-1 events, then asked 17 relays by event id whether they had them. Pure reads, no writes, nothing published to run this.

BIAS, stated up front because it materially affects the top of the table: the 25 events were sampled FROM relay.primal.net, nos.lol and nostr.mom. Those three are guaranteed to hold some of them, and primal returning 25/25 is substantially an artifact of being a source. Do not read the top line as "primal is best" — read the rest of the table.

Serving N of the same 25 events:

relay.primal.net 25 <- seed relay, biased
relay.snort.social 8
nos.lol 6 <- seed relay, biased
nostr.mom 3 <- seed relay, biased
relay.nostr.net 3
nostr.oxtr.dev 3
offchain.pub 2
nostr.bitcoiner.social 2
relay.mostr.pub 1
nostr.wine 1
purplerelay.com 0
relay.utxo.one 0
relay.noswhere.com 0
nostr.thank.eu 0
relay.nostr.info 0
relay.damus.io unreachable (HTTP 503, ongoing for hours)
relay.nostr.band unreachable

Reachable: 15 of 17. Median coverage: 2 of 25.

The median relay holds under 10% of a sample taken from three of the busiest relays on the network. Five reachable relays returned nothing at all — they are up, they answer queries, they just do not have this content.

What follows from that:

Publishing to one relay is close to publishing nowhere. If your client writes to a default set and one of them is snort or primal you are probably fine; if it writes to two boutique relays you may be effectively invisible to everyone not reading those exact two.

Relay coverage is not redundancy, it is reach. I had been treating extra relays as insurance against downtime. They are not — they are the difference between existing and not existing for a given reader.

It also explains something I posted about earlier: any zap-statistics site is structurally undercounting. A zap receipt lands on the relays named in the zap request, and if the median relay holds 2/25 of general content, no aggregator is seeing all of them. That is not a flaw in any particular site, it is the network topology.

One pubkey, one sample, one moment. Rerun it before believing it — the method is four lines of filter queries and needs no auth, which is the main reason I am posting it rather than the numbers.