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
128.6M 
Reachable
46.0M 
Active PDS providers
3.4K13.4K all-time
Last updated
2026-11-09 

Cumulative identity (did:plc) growth

Daily new identities (last 90 days)

Cumulative PDS provider growth

Every independent PDS host that has registered at least one identity. The latest value is the all-time number in the card above. Many of these hosts are no longer online: the card also shows how many respond today. Leaves out Bluesky's own servers and invalid entries such as private network addresses.

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.

→→→
72.1M
→→→
54.2M
44.2K
41.4K
39.6K
8.7K
7.4K
6.5K
2.0K
1.8K
828

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

ProviderEst. current accountsShare
Bluesky72,136,71657.0%
Other / Junk54,244,09042.9%
Blacksky44,1920.0%
Eurosky41,3750.0%
Tangled39,5530.0%
Sprk8,7340.0%
Gems7,4130.0%
surf.social6,4690.0%
selfhosted.social2,0170.0%
Northsky1,8440.0%
npmx.social8280.0%

Top 200 PDS providers by sign-ups

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. Invalid entries such as private network addresses are left out.

Reachability data as of 2026-11-05, checked periodically, not updated daily.

PDSIdentitiesShareReachable
Bluesky (bsky.social + *.bsky.network)72,160,96556.1%63%
https://pds.trump.com52,943,84441.155%0%
https://wallets.tz2at.store217,7970.169%0%
https://bbi.to120,8890.094%0%
https://atproto.brid.gy117,3110.091%60%
https://pds.polymarket.social104,3200.081%0%
https://social.kabcash.com79,4240.062%0%
https://pds.wsocial.network53,0850.041%70%
https://blacksky.app40,5090.032%0%
https://fmpds.cacheblasters.com36,6730.029%0%
https://contracts.tz2at.store31,1160.024%0%
https://pds.federdeck.com24,7590.019%0%
https://eurosky.social23,9850.019%90%
https://social.selting.website21,1710.017%0%
https://bsky.global20,7720.016%0%
https://nacg.club20,2480.016%0%
https://klatch.app19,6550.015%0%
https://goodmkt.id19,1820.015%0%
https://certified.one15,1600.012%100%
https://knot1.tangled.sh14,4280.011%0%

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+16,496-230+16,266
Blacksky+3,939-263+3,676
Self-hosted+3,009-520+2,489
Northsky+1,678-41+1,637
selfhosted.social+231-83+148
npmx.social+117-18+99
Sprk+6-15-9
Gems+0-22-22
Tangled+13-44-31
Bluesky+378-24,632-24,254

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?

Each month we take a random sample of accounts currently hosted on every provider with 10 or more identities. The sample grows with provider size, from 3 accounts for small providers up to 50 for the largest. For each sampled account we check whether the username resolves back to the DID through an AT Protocol identity lookup. If it does, the account is functional. Note that this measures accounts hosted on a provider right now, while the table counts identities by the provider where they were created. Most unreachable identities come from spam hosts that mass-register DIDs with no real content, such as pds.trump.com at 0% reachable. Other causes include deleted or suspended accounts, providers that went offline, and DIDs that were never fully 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. Once a month, we sample accounts currently hosted on each provider and resolve their usernames through the public AT Protocol identity API.

Why are there gaps in the chart?

The numbers track the PLC directory exactly, so an upstream outage shows up as a dip. From about 10 to 20 July 2026 the directory logged roughly ten times fewer new identities than usual across the whole network, and the single highest-volume PDS recorded none at all, before creation returned to its normal rate. We leave these dips in place: they reflect the public ledger as it stands, not a gap in our own collection.

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. We count only the third-party servers on that list, not Bluesky's own. The all-time count is much larger because it includes every independent host that has ever registered an identity in the PLC directory, and many of those have since gone offline. Both counts leave out Bluesky's own servers and invalid entries, such as private network addresses and local test setups that ended up in the directory.

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.