How many Dutch accounts are there?
AT Protocol has no country field. Accounts carry no location, and neither the identity records nor the profile records say where someone lives. So we do two things instead: we count the Dutch accounts we can point to, and we model how many there probably are in total.
Time to get nerdy with numbers!
Short answer: at least 11.313, probably around 230.000.
Updated 31/08/2026
Two main numbers
The confirmed number can fall as well as grow: we drop accounts whose Dutch evidence is gone, like an expired domain.
Nobody counted the modelled total; we derive it below.
What these accounts show
Every did:plc identity has a public log, and every repo lists the collections it holds. That tells us when these accounts were created, where they run, and which apps they use. This covers the 11.313 confirmed accounts, not every Dutch account.
When these accounts were created
Which apps they use, beyond Bluesky
Only 676 accounts (6%) of the 11.313 use anything other than Bluesky. When they do, this is what they use:
Accounts holding records from that app in their repo, counted once per app however many record types they hold. Bluesky's own collections are left out, since nearly everyone has them. This counts accounts, not records. This only sees apps that write their own records. A client that just reads Bluesky data, like Skywalker or Graysky, leaves nothing in a repo and so cannot appear here, however heavily it is used.
By record type
site.standard.publication208 accountssite.standard.document189 accountsnet.anisota.beta.game.log159 accountsnet.anisota.beta.game.session159 accountscommunity.lexicon.payments.webMonetization153 accountsblue.flashes.actor.profile150 accountsblue.flashes.feed.post105 accountsnet.anisota.harvest.minigame65 accountssocial.pinksky.app.preference57 accountssocial.mu.newsFeedPrefs49 accountsid.sifa.profile.self43 accountssh.tangled.actor.profile42 accountsid.sifa.profile.position41 accountssite.standard.graph.subscription39 accountsid.sifa.profile.education37 accountsid.sifa.profile.skill37 accountsid.sifa.profile.language37 accountsid.sifa.profile.externalAccount31 accountsid.sifa.graph.follow27 accountssocial.popfeed.actor.profile26 accountstech.tokimeki.poll.vote25 accountsbuzz.bookhive.book23 accountsnet.anisota.beta.game.progress22 accountsblue.flashes.actor.portfolio20 accountssocial.popfeed.feed.listItem20 accountssh.tangled.feed.star20 accountssh.tangled.graph.follow20 accountsid.sifa.profile.certification19 accountsplace.stream.chat.profile19 accountssh.tangled.publicKey19 accounts
Where they run
765 accounts (7.5%) live on a PDS outside Bluesky's own hosting.
eurosky.social475 accountsatproto.brid.gy155 accountspds.wsocial.network23 accountsbluesky.emiellr.nl7 accountsemphisia.nl5 accountsmijnbluesky.nl5 accountsbsky.kairu.nl5 accountsbluesky.zark.nl5 accountsblacksky.app4 accountsblauwski.nl4 accounts
Where each number comes from
Each source finds largely different accounts. Summed they come to 11.834; deduplicated by DID, 11.313 remain.
- Posted Dutch 8.081
They have posted something in Dutch where we could see it.
How we measure this
From the public Bluesky firehose: we sample posts over several days, keep the ones language-tagged Dutch, and collect the accounts posting them. Accumulated over time, so it only grows.
- Dutch domain 2.308
Their username ends in a Dutch domain, like .nl or .amsterdam.
How we measure this
From the PLC directory, the network-wide registry of every atproto identity: we scan each account's current handle and keep the clearly-Dutch domains (.nl, plus city and region domains like .amsterdam and .frl). A full scan runs for hours, so this number climbs until it finishes. We re-check this list daily: if the domain lapses or the account disappears, it stops counting.
- Starter pack 1.279
Someone put them in a Dutch starter pack, a hand-picked list of accounts to follow.
How we measure this
From a curated list of clearly-Dutch Bluesky starter packs: we read each pack's members via the AppView and union them.
- Companies 142
A Dutch organisation whose own website domain is the account.
How we measure this
From Sifa's entity database: NL-based organisations (by recorded HQ country or a .nl website) whose website domain is itself an atproto account.
- Self declared location 24
They wrote a Dutch location in their Sifa ID profile themselves.
How we measure this
From Sifa ID profiles: accounts whose profile lists a location in the Netherlands.
What we model
The floor only counts those who make themselves visible. Anyone posting in English, without a Dutch domain, in no starter pack, stays invisible to all five detectors. To reach a real number we have to stop counting and start modelling.
- 46.184.219Bluesky accounts
- ~350.000Dutch-speaking accounts
- ~230.000in the Netherlands
Every step above is an assumption.
How big the ecosystem is
Bluesky has around 46 million accounts (bsky.jazco.dev/stats). We use this as the base to scale from. The wider AT Protocol identity count is higher, but includes bots, spam, and deleted accounts, which is what a full PLC-directory crawl like sifa.id/stats counts.
How much Dutch gets posted
We sample the public firehose and count posts tagged Dutch. About 0.761% of posts are Dutch, measured over a window of roughly 18 hours. Every account we see posting Dutch goes into the floor above. The true total is higher: many Dutch speakers post rarely, or in English.
What could be wrong
- Language is not country. Dutch is also spoken in Belgium and abroad, so we scale down to the share of Dutch speakers who live in the Netherlands (roughly two thirds).
- Many people here post in English, especially the developer crowd this community is built around, so they never show up as Dutch and go uncounted.
- We measure posts, not people, and then use that to estimate accounts. Someone posting fifty times a day counts fifty times as heavily as someone posting once a month, so the mix of posts is not the mix of accounts.
- Our firehose sample drops messages under load, so the measured counts are lower bounds.
Most of this pushes the count down rather than up. If the estimate is off, it's more likely too low than too high.
Check it yourself
The measurement scripts live in this site’s repo. They read the public Jetstream firehose, need no login, and print the raw numbers.
uv run scripts/estimate-nl-users.py 86400 nl-24h.jsontangled.org/atproto.nl/website, the scripts live in scripts/.
Make this number better
The floor rises as detection improves, and you can help: set a Dutch domain as your handle, put a Dutch location in your Sifa ID profile, or curate a Dutch starter pack. More visible means more countable.
Updated 31/08/2026