AT Protocol across Europe

The AT Protocol community across 33 European countries, each account counted once.

Three main numbers

Placed in a country 35.958 accounts with a country signal we trust
European, country unknown 72.859 accounts on European PDSes, that no country claims
Modelled total 2.933.335 people, European-language communities

The first two are separate evidence for the same thing, and they do not overlap: together 108.817 accounts are confirmed European. Of the 74.196 accounts on European PDSes, 1.337 already appear under a country above and are counted there, not twice.

The whole bar is the modelled total; the filled part is what we can confirm today: 108.817 of ~2.933.335, about 4%. The darker segment is the 72.859 we can place in Europe but not in a country. That share climbs the longer we measure, though it never reaches 100%.

Running on a European PDS is a deliberate choice for European data sovereignty. It tells us an account is European, but not which country, so these accounts appear under no country in the table below. Most accounts are still on Bluesky's US hosting.

Also get a Eurosky account!

How we count

AT Protocol has no country field, so we only count people who left a trace we can read: a country domain in their handle, a location in their profile, a community verifier, a curated list. Each account is counted once. Where signals disagree we place it nowhere rather than guess, so these numbers add up instead of overlapping. Language is never evidence: most European languages cross borders, so posting in German says nothing about living in Germany.

Active 90d is how many of a country's confirmed accounts authored something — a post, reply or repost — in the last 90 days (16.750 across Europe). Reading is invisible on the AT Protocol, so this is a floor on engagement: the real, active community is larger. A low share (Spain, Austria) is also a sign the country's domain is mostly word-play rather than people.

By country

European Union

Country Confirmed Active 90d Estimate Survey* Community
Germany 7.081 2.494 35% ~950.500 ~2.800.000 atproto.berlin, frankfurt.atmosphere.community
France 5.514 3.052 55% ~670.930 · atproto.fr
Netherlands 3.488 1.642 47% ~230.000 · atproto.nl
Belgium 2.236 1.064 48% ~137.838 · atproto.be
Denmark 917 311 34% ~42.667 · none yet
Finland 774 286 37% ~78.555 · none yet
Poland 525 152 29% ~75.646 · atproto.pl
Czechia 501 207 41% ~47.884 · atproto.cz
Ireland 464 214 46% · · none yet
Romania 325 45 14% ~5.901 · none yet
Slovenia 251 62 25% ~5.900 · none yet
Portugal 235 75 32% ~235 · atproto.pt
Estonia 233 67 29% ~4.099 · none yet
Spain 200  ⚠ 1.321 98% ~85.459 · atproto.es
Hungary 176 59 34% ~20.514 · atproto.hu
Latvia 176 60 34% ~3.913 · none yet
Greece 134 39 29% ~26.227 · none yet
Slovakia 102 37 36% ~9.482 · none yet
Luxembourg 100 33 33% ~7.663 · none yet
Lithuania 81 15 19% ~1.118 · none yet
Austria 38  ⚠ 477 99% ~100.641 · atproto.wien
Sweden 36  ⚠ 341 94% ~100.065 · none yet
Croatia 18 4 22% ~5.155 · none yet
Malta 18 9 50% ~62 · none yet
Italy 15  ⚠ 236 98% ~157.336 · atproto.it
Bulgaria 15 7 47% ~4.534 · none yet
Cyprus 12 4 33% ~2.281 · none yet

Also in Europe

Country Confirmed Active 90d Estimate Survey* Community
United Kingdom 8.738 3.256 37% · · none yet
Switzerland 1.448 498 34% ~92.921 · atproto.ch
Norway 764 251 33% ~61.237 ~310.000 atproto.no
Liechtenstein 252 65 26% ~252 · none yet
Ukraine 123 34 28% ~123 · none yet
Iceland 1  ⚠ 145 99% ~3.230 · none yet

Plus 967 accounts in 11 other European countries with only weak or very small signals (and non-EU states like Russia and Belarus), not listed here. They are still counted in the totals above.

Confirmed is the floor: accounts we can place in the country from a deliberate signal, each counted once. Estimate is our modelled, language-weighted total (same method as the aggregate above; a country page shows how). Survey* is an external, self-reported population estimate where a citable national one exists (Norway: Kantar/NRK; Germany: ARD/ZDF-Medienstudie). A survey measures reach, not accounts we can place, so it runs far higher than either of ours; each links to its source and method.

⚠ marks countries whose domain is widely registered for English word-play rather than as a statement about the country (.es, .it, .at, .se, .is). Those matches are counted but ranked low, so a country can show a small number here and a much larger raw match count. Spain is the clearest case: about 9.800 .es handles, almost none of them Spanish.

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 35.958 confirmed accounts, not every European account.

When these accounts were created

2022/112023/032023/072023/112024/032024/072024/112025/032025/072025/112026/032026/07
Creation date from the PLC directory, by month. When the account was made, not when we identified it.

Where they run

Bluesky hosted 84.6% elsewhere 15.4%

8.190 accounts (15.4%) live on a PDS outside Bluesky's own hosting. This is the 53.151 confirmed accounts only — the European-infrastructure figure above counts all accounts on European PDSes, most of which have no country signal and do not appear here.

Which apps they use, beyond Bluesky

3.044 accounts (8%) of the 35.958 use something other than Bluesky. When they do, this is what:

standard.site 690
Tangled 661
Flashes 624
Anisota 445
Sifa 354
community lexicons 341
bsky38.com 300
mu.social 297
Pinksky 286
stream.place 245
Leaflet 203
popfeed.social 186
Grain 168
blento.app 146

Accounts holding records from that app in their repo, counted once per app. Bluesky's own collections are left out. This only sees apps that write their own records: a read-only client leaves nothing in a repo and cannot appear here.

By record type
  • sh.tangled.actor.profile 616 accounts
  • site.standard.publication 609 accounts
  • blue.flashes.actor.profile 600 accounts
  • site.standard.document 427 accounts
  • net.anisota.beta.game.session 371 accounts
  • net.anisota.beta.game.log 370 accounts
  • id.sifa.profile.self 329 accounts
  • blue.flashes.feed.post 328 accounts
  • sh.tangled.publicKey 304 accounts
  • sh.tangled.graph.follow 301 accounts
  • com.bsky38.influential.vote 300 accounts
  • social.mu.newsFeedPrefs 297 accounts
  • sh.tangled.repo 289 accounts
  • id.sifa.profile.position 286 accounts
  • social.pinksky.app.preference 285 accounts
  • id.sifa.profile.skill 278 accounts
  • sh.tangled.feed.star 276 accounts
  • id.sifa.profile.language 260 accounts
  • id.sifa.profile.education 254 accounts
  • site.standard.graph.subscription 228 accounts
  • place.stream.chat.profile 227 accounts
  • id.sifa.profile.externalAccount 221 accounts
  • id.sifa.graph.follow 183 accounts
  • social.popfeed.actor.profile 179 accounts
  • social.grain.actor.profile 166 accounts
  • id.sifa.profile.location 151 accounts
  • app.blento.card 142 accounts
  • social.popfeed.feed.list 135 accounts
  • social.popfeed.feed.listItem 133 accounts
  • community.lexicon.calendar.rsvp 132 accounts

Communities

Where a community already exists we link to it, so you can find your people. Some cover a whole country, others a single city.

Countries

Cities

Updated 2026-09-26. Method: one DID, one country, by signal precedence.