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.
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.
Independent providers scaled to 44.3K. Bluesky and Other / Junk not to scale (→→→).
| Provider | Est. current accounts | Share |
|---|---|---|
| Bluesky | 72,215,115 | 56.6% |
| Other / Junk | 55,168,090 | 43.3% |
| Blacksky | 44,315 | 0.0% |
| Eurosky | 41,779 | 0.0% |
| Tangled | 40,158 | 0.0% |
| Sprk | 8,778 | 0.0% |
| Gems | 7,413 | 0.0% |
| surf.social | 6,489 | 0.0% |
| selfhosted.social | 2,048 | 0.0% |
| Northsky | 1,855 | 0.0% |
| npmx.social | 838 | 0.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-10, checked periodically, not updated daily.
| PDS | Identities | Share | Reachable |
|---|---|---|---|
| Bluesky (bsky.social + *.bsky.network) | 72,239,499 | 55.7% | 64% |
| https://pds.trump.com | 53,857,962 | 41.541% | 0% |
| https://wallets.tz2at.store | 217,797 | 0.168% | 0% |
| https://bbi.to | 120,889 | 0.093% | 0% |
| https://atproto.brid.gy | 117,505 | 0.091% | 50% |
| https://pds.polymarket.social | 104,320 | 0.081% | 0% |
| https://social.kabcash.com | 79,424 | 0.061% | 0% |
| https://pds.wsocial.network | 54,509 | 0.042% | 90% |
| https://blacksky.app | 40,617 | 0.031% | 32% |
| https://fmpds.cacheblasters.com | 36,673 | 0.028% | 0% |
| https://contracts.tz2at.store | 31,116 | 0.024% | 0% |
| https://pds.federdeck.com | 24,759 | 0.019% | 0% |
| https://eurosky.social | 24,319 | 0.019% | 94% |
| https://social.selting.website | 21,171 | 0.016% | 0% |
| https://bsky.global | 20,772 | 0.016% | 0% |
| https://nacg.club | 20,248 | 0.016% | 0% |
| https://klatch.app | 19,655 | 0.015% | 0% |
| https://goodmkt.id | 19,194 | 0.015% | 26% |
| https://tdpl.io | 16,200 | 0.013% | 100% |
| https://certified.one | 15,191 | 0.012% | 100% |
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.
Migration flows
Accounts that switched providers, not net new signups. Each row is one provider-to-provider migration route.
| Provider | Gains | Losses | Net |
|---|---|---|---|
| Eurosky | +16,570 | -234 | +16,336 |
| Blacksky | +3,956 | -265 | +3,691 |
| Self-hosted | +3,060 | -527 | +2,533 |
| Northsky | +1,687 | -43 | +1,644 |
| selfhosted.social | +231 | -83 | +148 |
| npmx.social | +117 | -18 | +99 |
| Sprk | +6 | -15 | -9 |
| Gems | +0 | -22 | -22 |
| Tangled | +13 | -45 | -32 |
| Bluesky | +383 | -24,772 | -24,389 |
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 200 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?
This page shows two kinds of numbers. The total identity count, around 129 million in November 2026, covers every did:plc ever registered, including bots, spam, and deleted or suspended accounts. About 72 million of those were created on Bluesky's own servers, and pds.trump.com alone accounts for roughly 53 million mass-generated bot identities. The Reachable card, around 46 million, is our estimate of accounts that work today, meaning the handle resolves. We base it on monthly samples of current accounts per provider. That estimate lands close to the roughly 47 million users on Jaz's Bluesky statistics. Bluesky's own reported active user numbers, which Backlinko cites at around 33 to 36 million in early 2026, sit lower again because they measure active use, not working accounts. These are different questions and all of them are valid. Totals show the network including its spam problem. Reachable shows accounts that work.
Source code
The collection scripts are open source at tangled.org/gui.do/atproto-plc-counter. Full transparency on how the data is gathered.