Wiki: Live Bitcoin DNS seeders and crawler datasets

Two weeks ago I posted the list of live seeders and crawler datasets above. Since then I have been archiving all of them daily in bitcoin-seeder-data: DNS answers from the eight Core seeds plus fish.foo every 6 hours, and every published dump once a day. Here is what the first two weeks show.

All population and overlap numbers below are clearnet only (IPv4 + IPv6). Onion, I2P and CJDNS are left out of those comparisons.

Clearnet population sizes

Raw totals are not comparable across sites, each operator uses a different reachability rule:

source clearnet reachability rule
KIT dossier 9,669 all entries in the public dossier
bitnod.es 9,319 last seen within 1 day of the newest export
btcnodes 8,793 completed handshake in one crawl round
sipa seeds.txt (frozen since 2025-11) 8,947 seeder good flag
fish.foo seeds.txt 5,899 seeder good flag
achow101 seeds.txt 4,250 seeder good flag

With the address family fixed, KIT / bitnod.es / btcnodes sit near 9k. The seeder good sets are smaller: they require uptime scores over windows from 2h to 30d, not only a recent sighting.

KIT’s dossier accumulates over months. Cutting on “lastConnect” changes the count: 3,271 within 1d, 5,129 within 7d, 9,669 for all entries.

bitnod.es moves day to day inside the 9k band (export timing and uneven daily buckets I think). A 7-day rolling mean removes most of that movement, but the level sits a few hundred hosts above btcnodes, consistent with the wider 1-day last-seen window.

Pairwise overlap

bitnod.es vs btcnodes (both forks from ayeowch/bitnodes). On 2026-07-21 the two agree on 8,166 clearnet hosts: 88% of the bitnod.es set (9,319) and 93% of the btcnodes set (8,793). Of the 1,153 bitnod.es-only hosts that day, 783 (68%) appear in at least one archived btcnodes snapshot from the previous week; 370 (32%) do not. Part of the gap is the 1-day last-seen window versus a single crawl round I guess.

achow101 vs fish.foo (both run dnsseedrs; willcl-ark’s fish.foo is a fork of achow’s). fish.foo’s good clearnet set (5,899) contains 96% of achow’s (4,250); the shared hosts make up 69% of fish.foo’s set, so fish.foo has about 1,800 hosts that achow does not. I think the remaining gap is vantage, uptime history and probe timing. Also fish.foo is some commits ahead, mostly packaging, performance and crawl scheduling.

DNS responses vs a full crawl

I also checked whether pooling DNS answers over time can stand in for a full dump in a clearnet census. Over 14 days (6h cadence, all nine seeds), against the btcnodes clearnet set of 2026-07-21, with recall[1] and precision[2]:

window unique clearnet IPs recall precision
1d 2,996 23% 67%
3d 6,565 47% 62%
7d 9,693 61% 56%
14d 12,394 68% 48%

The pooled set grows into the thousands, but precision falls as older answers stay in the union. Size-dependent metrics (groups-to-50%, bucketing ratios) also change with sample size, so a DNS pool and a full crawl are different inputs. But maybe for the seeder-side full view, the published seeds.txt files (like from fish.foo, achow101) could be used.

DNS seed coverage

Also here is the share of IPv4 addresses each seed served on 2026-07-20 that appear in the crawlers’ clearnet sets from 2026-07-21, plus a reachability check from octavio.xyz.

seed unique A bitnod.es btcnodes octavio
sipa.be 440 95% 92% 100%
fish.foo 177 95% 94% -
emzy.de 456 93% 89% 88%
achownodes.xyz 831 89% 86% -
petertodd.net 430 79% 77% 96%
bluematt.me 127 75% 89% 86%
sprovoost.nl 433 65% 64% 57%
wiz.biz 207 59% 66% 76%
jonasschnelli.ch 423 50% 49% 50%

What I take from this

The point of the archive was to put one clearnet basis under the sources in the list above. With that in hand, two things stand out for me.

First, raw “node counts” across sites are different objects. KIT / bitnod.es / btcnodes land near 9k clearnet hosts under their own rules. Seeder good sets are smaller because they score uptime over 2h…30d. For a population series I would pick one rule and keep it: a btcnodes snapshot, or bitnod.es last-seen with a fixed window and a 7-day mean.

Second, sharing a software line still leaves a measurable gap. bitnod.es and btcnodes agree on 88% and 93% of their respective sets, and of the bitnod.es-only hosts that day, about a third never show up in a week of btcnodes snapshots. For achow101 and fish.foo, 96% of achow’s good hosts are in fish.foo’s set, but fish.foo carries about 1,800 hosts achow does not.

Everything regenerates from the raw archives with two scripts in analysis/ of the bitcoin-seeder-data repo. If a number looks wrong from your side, I would like to know.


  1. share of the btcnodes set that the pooled DNS answers cover ↩︎

  2. share of the pooled DNS answers that appear in the btcnodes set ↩︎