Skip to main content

atproto stats for nerds

Fresh statistics from the AT Protocol's PLC directory, the public ledger where every did:plc identity is registered.

A did:plc identity isn't the same as a human user. DIDs get created for infrastructure nodes (like Tangled's relay knots), bots, and spam accounts too, and the PLC directory doesn't distinguish between any of them. Unless a chart says otherwise, all numbers below count raw identity registrations, not individual people.

Total identities
86.6M 
Active PDS providers
2.9K16.4K all-time
Last updated
2026-04-22 

Cumulative identity (did:plc) growth

Daily new identities (last 90 days)

Cumulative PDS provider growth

Unique independent PDS hosts with at least one registered identity, excluding Bluesky infrastructure.

Current accounts per provider

Estimated current hosting: originations on each provider plus accounts that migrated in, minus accounts that migrated out. "Other / Junk" covers mass-registration spam hosts like pds.trump.com.

→→→
61.4M
→→→
23.1M
37.6K
17.7K
12.1K
7.4K
6.9K
4.5K
580
463
384

Independent providers scaled to 37.6K. Bluesky and Other / Junk not to scale (→→→).

ProviderEst. current accountsShare
Bluesky61,411,69272.6%
Other / Junk23,139,57527.3%
Blacksky37,6340.0%
Tangled17,7090.0%
Eurosky12,1440.0%
Gems7,3980.0%
Sprk6,8640.0%
surf.social4,5370.0%
selfhosted.social5800.0%
Northsky4630.0%
npmx.social3840.0%

Top 200 PDS providers

Counts where each identity was originally created (genesis operations), not current hosting. Accounts that later migrated to a different provider are still counted here under their original PDS.

PDSIdentitiesShare
Bluesky (bsky.social + *.bsky.network)61,425,76170.9%
https://pds.trump.com22,687,84026.186%
https://plc.surge.sh/gallery1,771,1262.044%
https://atproto.brid.gy104,2190.12%
https://example.test81,9410.095%
https://social.kabcash.com79,4240.092%
http://127.0.0.1:2500040,3890.047%
https://pds.polymarket.social39,2140.045%
https://blacksky.app34,7140.04%
https://pds.test28,7080.033%
https://randomly-generated.ngrok-free.app28,2460.033%
https://klatch.app19,6550.023%
https://weleadsmm.com14,3590.017%
https://pds.si46.world11,1040.013%
https://blueski.social10,0790.012%
https://atp.referendumapp.com9,5180.011%
https://gems.xyz7,3190.008%
https://pds.sprk.so6,8640.008%
https://follow-sqky.one-plz.cool6,4920.008%
http://localhost:250006,0200.007%

200 results · page 1 of 10

PDS provider migrations

Net change in accounts per provider per month, counting provider switches only, new signups are excluded. Positive = more accounts moved in than out. Bluesky internal shard reassignments are not counted.

BlueskyEuroskyBlackskySelf-hostedNorthskyPositive = net gain, negative = net loss

Migration flows

Accounts that switched providers, not net new signups. Each row is one provider-to-provider migration route.

ProviderGainsLossesNet
Eurosky+9,077-40+9,037
Blacksky+3,023-105+2,918
Self-hosted+1,917-281+1,636
Northsky+385-12+373
selfhosted.social+136-32+104
Bluesky+165-14,234-14,069

Methodology

What is the PLC directory?

The Public Ledger of Credentials is the registry where AT Protocol identities are created. Every did:plc identity has a signed genesis operation recorded here. The directory is currently operated by Bluesky PBC, with plans to transfer to an independent organization.

What is a PDS?

A Personal Data Server stores your AT Protocol data: posts, profile, follows, and more. Bluesky runs the largest PDS cluster (the mushroom-named servers like morel, cortinarius, etc.), but anyone can run their own.

What does "reachable" mean?

We sample handles from each PDS and check if they resolve back to their DID via the AT Protocol's identity system. If the handle resolves, the account is functional. Most unreachable identities come from spam PDS hosts that mass-register DIDs without serving real content (e.g. pds.trump.com registered over 17 million DIDs with 0% reachability). Other reasons include deleted or suspended accounts, PDS hosts that went offline, or DIDs that were never properly set up.

How is this data collected?

We crawl the PLC directory's public export API (plc.directory/export) incrementally, tracking new identity registrations per PDS provider and detecting when accounts switch providers. Provider migrations are identified by comparing consecutive PLC operations for the same DID: only cross-provider moves are counted; Bluesky internal shard reassignments are invisible at this level. Reachability is checked by sampling handles and resolving them via the public API.

Where do the active PDS counts come from?

Live online/offline counts are pulled at build time from mary-ext/atproto-scraping, which probes every known PDS endpoint regularly and drops hosts that have been silent for more than 14 days. The all-time count we report is much larger because it includes every endpoint ever observed in the PLC directory, including spam, defunct, and one-off hosts.

Why do these numbers differ from other trackers?

You may notice different numbers on other AT Protocol trackers like Jaz's Bluesky statistics. The difference comes down to what gets counted and how. We count all identity records ever registered in the PLC directory: bots, spam accounts, and deleted or suspended identities included. Sites like Backlinko typically cite Bluesky's own reported active user numbers (~33–36M as of early 2026), which exclude spam and inactive accounts. Our "Bluesky" figure (~61M) counts every identity ever created on bsky.social and the bsky.network shards, while our "Self-hosted / Other" figure (~23M) is dominated by pds.trump.com (~22M mass-generated bot accounts). Neither approach is wrong; they measure different things. Our numbers give a complete picture of total PLC registrations, including the network's spam problem.

Source code

The collection scripts are open source at tangled.org/gui.do/atproto-plc-counter. Full transparency on how the data is gathered.