What Is a Bluesky Labeler? I Counted All 769 of Them

A Bluesky labeler is an ordinary account that has published one extra record, app.bsky.labeler.service, plus a labeler entry in its DID document — the pair of which turns it into a moderation service you can subscribe to. That record lists every label the service can hand out and, for each label, whether it hides a post, blurs the images, or merely prints a word next to someone's name. Subscribe and its labels shape your feed; don't and they may as well not exist.

Kuba Suder, who maintains the largest directory of these things, noted in passing last year that "many existing labellers are meant for self-labelling instead, letting you assign e.g. a country flag or some fun things like a D&D character class to yourself." Nobody had put a number on it, so I read the policy of every labeler I could find — 769 in the directory, 707 of which still answer. Of the 19,780 label definitions they publish between them, 93.7% hide nothing whatsoever. Bluesky built a moderation marketplace and the network mostly opened badge shops in it.


How Do Bluesky Labelers Work?

labelValues says which labels a service issues; labelValueDefinitions describes each custom one. Every definition sets a severity (alert, inform or none) and a blurs (content, media or none), and the pair decides what you see. Bluesky's docs spell out all nine combinations: blurs=content plus severity=alert hides a post behind a red warning, while blurs=none plus severity=inform just "put[s] a 'neutral' information label on the content".

Eight label values are defined by the protocol itself rather than by any labeler, which is why they behave the same everywhere:

Global label What it does Can you self-apply it?
!hide Warning that can't be clicked through; filtered from listings. Not configurable by the user. No
!warn Warning that can be clicked through. Not configurable by the user. No
!no-unauthenticated Hides the content from logged-out visitors Yes
porn 18+ warning on images, adult content must be enabled Yes
sexual As porn, for less intense content Yes
graphic-media As porn, for violence and gore Yes
nudity Warning on images, not 18+, defaults to ignore Yes
bot "Marks the account as automated" Yes

Custom labels are where the volume is, and where the design intent quietly parted company with usage.


Which Bluesky Labelers Can't You Turn Off?

Start here, because it's the part the labeler write-ups leave out. The usual framing is that labelers are what make Bluesky different — you pick your moderators instead of having them picked for you. Bluesky's own developer docs are more careful, and the careful version is one clause longer: "Labels are published by moderation services, which are either hardcoded into the application or chosen by the user." Every explainer I found ranking for these queries quotes the second half.

Hardcoded means what it says. The app ships a file, additional-moderation-authorities.ts, mapping country codes to labeler DIDs that get handed to the API alongside anything you picked. There are eleven, named in source for Brazil, Germany, Russia, the UK, Australia, Turkey, Japan, Spain, Pakistan, India, and one applied across all 27 EU member states (Germany and Spain get two each — the EU one plus their own). The function that identifies them is called isNonConfigurableModerationAuthority, which saves me an adjective. They attach based on your detected location, they don't count against your twenty, and there is no off switch. If the app can't work out where you are, the comment in that file reads // default to all — it attaches every one of them.

They aren't hidden, to be fair: the Moderation screen lists them with a flag icon and the italic line "Required in your region". It just has no unsubscribe control, because there is nothing to unsubscribe from.

Three things make this less sinister than it sounds:

  1. Five of the eleven are livemoderation-br, -de, -ru, -tr and -in.bsky.app. The other six (UK, Australia, Japan, Spain, Pakistan, EU) are real accounts created on March 28, 2025 that still report associated.labeler: false. Provisioned, not operating.
  2. None of the five publishes a single custom label. Their labelValues are empty. These are instruments for withholding content in one country, not badge factories.
  3. Non-configurable moderation isn't a Bluesky invention!hide and !warn are documented as "Not configurable by the user" for everyone, on any client.

You can watch the hardcoding happen with no account at all. Ask the public API for any post while requesting some unrelated labeler, and read the response header:

curl -sD - -o /dev/null \
  -H "atproto-accept-labelers: did:plc:bpkpvmwpd3nr2ry4btt55ack" \
  "https://public.api.bsky.app/xrpc/app.bsky.feed.getPostThread?uri=<any-post-at-uri>"
  → atproto-content-labelers: did:plc:ar7c4by46qjdydhdevvrndac;redact

That DID is Bluesky's own moderation service, and ;redact is the AppView saying it will remove content on that service's authority. The labeler you asked for doesn't appear — that header reports redaction authorities, not your subscriptions — but Bluesky's is in it whether you asked or not. Composable moderation, with a floor.


How Many Bluesky Labelers Are There, and Where Is the List?

769 that anyone has managed to find, of which 707 still answer. That sentence needs its hedge because Bluesky ships no directory: app.bsky.labeler.getServices takes a required list of DIDs, the whole app.bsky.labeler namespace contains no search or list method, and so every directory is somebody's hand-built crawl of the firehose. Suder's is the largest at 769 — mostly because it keeps the dead ones — and bluesky-labelers.io carries about 708. The only prior count I can find in the literature is an academic survey that found 62 labelers in May 2024, of which 36 had ever issued a label. It also noticed the drift, more drily than I managed: "some community operators deviate from the original Labeler goal of filtering content and rather focus on content tagging."

Of the 62 that no longer answer, most are simply gone rather than broken. What the 707 survivors publish:

Of the 19,780 definitions Count Share
Hide nothing, show a neutral note (blurs=none + severity=inform) 18,532 93.7%
Hide the content or blur the media (blurs=content or media) 967 4.9%
Everything else (severity=none, junk values, unset fields) 281 1.4%

One caveat belongs right next to that headline: the percentage is weighted by definition, and a handful of catalogue labelers dominate the count. atls.city, which labels cities, publishes 4,995 definitions on its own — a quarter of the corpus — and the ten biggest hold 49.9% between them, two of which are literal test rigs. So I also counted it per labeler. Of the 628 labelers that define anything at all, 373 (59.4%) publish nothing but badges, and only 165 (26.3%) have even one label that hides or blurs. Drop atls.city entirely and the definition-weighted figure is still 91.6%. The finding survives every way I sliced it, which is the only reason I'm leading with it.

The rest of the shape: a median of 3 definitions among labelers that define any, 17,936 distinct identifiers across those 19,780 definitions — 91.9% of them used by exactly one labeler, so there is almost no shared vocabulary — and 79 labelers (11.2%) publishing no custom labels at all.

The raw count of labelers is softer than it looks, too. Nineteen of the 769 are single-letter accounts, a.rnbw.ca through s.rnbw.ca, one operator's rig, each defining one label whose entire human-readable description is "✅". That alone makes rcheck the second most-reused label identifier on the network. Seventeen more labelers define a label called test. (I did subscribe to a.rnbw.ca to find out what "✅" was for. I still don't know.)

The launch curve is the cleanest signal in the dataset. 127 labelers declared themselves in November 2024 — nearly twice December's 70, and every complete month since has run between 12 and 36. November 2024 sits in the middle of Bluesky's post-election migration wave, the weeks when its user base went vertical; the labeler ecosystem had its gold rush in the same month and has trickled ever since, with 7 declarations so far in August 2026. That cohort also died faster than any other: 20 of those 127 no longer answer, a 15.7% failure rate against 8.1% across the network. Gold rushes leave ghost towns.

Two hedges on that curve, since it's a first-seen date from a directory with no published methodology: the month is when Suder's crawler first saw the labeler, and the earliest bucket (March 2024) sits four days before Bluesky's labeling launch post, so it's likely a backfill artefact rather than a real cohort.


What Are the Best Bluesky Labelers?

Nobody can answer that honestly with subscriber numbers, because there aren't any to read. Bluesky's architecture post is explicit: "A user subscribing to a labeler is not public, though the PDS and AppView can privately infer which users are subscribed to which services." What's public is the like count on each service record, which several directories — and a scraper that has been publishing this data since 2024 — already rank by. So the leaderboard isn't mine and I won't pad the post with it. The distribution is worth a paragraph, though, because it's brutal.

The most-liked labeler on Bluesky assigns you a Dungeons & Dragons class. bskyttrpg.bsky.social sits at 30,934 likes; the AI Imagery Labeler, the first entry that is doing recognisable content moderation, is second at 14,348; Bluesky's own moderation service is on 998, which tells you nothing about its reach since nobody needs to like a service that's hardcoded. Below the top few it collapses: median 3 likes, 95 labelers (13.4%) sitting on zero, only 24 (3.4%) above a thousand, and the top ten holding 59.1% of all 144,346 likes on the network.

Read that column loosely in one specific way. Several labelers harvest the like as an input rather than earning it as applause — the TTRPG one's bio instructs you to "Like & Subscribe to find out your class," and Khronos asks for a like per time zone you want — so they're competing in a different sport from labelers that just sit there. Thirty labelers have also let their handle lapse to handle.invalid, and 216, nearly a third, never set a display name.


How Do You Subscribe to a Labeler, and How Many Can You Add?

Subscribing isn't discoverable, which is most of why directories exist: you open the labeler's profile — there is no browse screen — and use the subscribe control in its header. Your subscriptions then live under Settings → Moderation, which is also the only place to remove one.

The ceiling is twenty, which is under 3% of the labelers that exist. Bluesky's docs put it as "You may include up to 20 labelers. The Bluesky application hardcodes Bluesky's moderation for inclusion, leaving 19 additional subscriptions to the users."

The app counts differently, and it's worth knowing which wall you hit. MAX_LABELERS in src/lib/constants.ts is 20, but the check that enforces it counts only the labelers in your own preferences — Bluesky's hardcoded service and the regional authorities travel on a separate channel and don't consume a slot. The dialog you get at the wall reads, verbatim, "We're sorry! You can only subscribe to twenty labelers, and you've reached your limit of twenty." So: twenty of your own by the client's arithmetic, nineteen by the documentation's, and roughly 700 left on the shelf either way.


Why Does My Bluesky Account Have a Label, and How Do I Remove It?

You can't remove it, because it isn't yours. A label is a separate signed record held by the labeler that issued it, not a field on your account, so there's nothing in your settings to delete. What you can do is appeal to whoever applied it — and the first job is working out who that was, which the app tells you when you tap the label itself.

That distinction decides everything about what happens next. A label from Bluesky's own moderation service goes through Bluesky's appeal flow, and their published policy is that enforcement actions can be appealed. A label from one of the ~700 independent services has to be appealed to that service, whose entire support department may be one person, and Bluesky's docs are blunt that a labeler "is not required to accept reports". Twenty-five of the live labelers define a spam label and eight define bot, none of them will notify you, and there is no endpoint that lists the labels on your own account across every labeler — you see the ones your own subscriptions apply.

Also worth separating from all of the above: an independent labeler's flag isn't the same thing as Bluesky's own spam label on your account, and neither is being added to a moderation list. Different mechanisms, different appeals — and only Bluesky's own can suspend you.


Is There a Bluesky Bot Labeler?

Several, and if you automate anything they're the corner of this ecosystem that concerns you. Twenty-five of the 707 live labelers define a spam label and eight define bot — a reassuringly small number until you notice these are services you cannot see, cannot query about yourself, and never agreed to. One of them, trustline.moddy.app, defines a label whose description is "This account is automated but is not declared as a bot." It exists precisely to catch automation that didn't own up.

Which points at the single lever you hold. bot is a global label value you may apply to yourself, defined as marking "the account as automated," and the app ships a dedicated toggle for it under Settings → Moderation. (Bluesky's docs list the self-labelling values in one sentence that still calls the violence value gore rather than graphic-media; the app is the better source here.) Declaring it costs nothing and takes the "undeclared" out of undeclared bot.


What This Means If You Run Any Automation

Here's my own position, since the census above is exactly the kind of thing a vendor writes to sell you a monitoring feature. Agent Sky does read labels — the ones Bluesky's AppView already attaches to a profile — and drops candidates whose labels match your filter list. The shipped default for a new account is ten of Bluesky's own label values, spam and scam and porn among them, so out of the box it won't follow an account Bluesky has flagged.

What it does not do is subscribe to a single one of the ~700 services in this census. It sees what the AppView applies by default and nothing else, which means every independent labeler above — including all eight that define bot and all 25 that define spam — is invisible to it. I'm not going to pretend that's a hard engineering problem. It's a question about which of seven hundred strangers' judgments to import on your behalf, and I haven't wanted to answer it by picking for you.

The thing I'd hold onto regardless of what you use: the labelers worth worrying about are watching your pace, not your opinions. Nothing in this dataset will tell you when it has flagged you, no appeal exists for most of it, and the behaviour that trips it is exactly what Bluesky's own rules on automation exist to catch. That's why the follow loop here runs one account at a time, three to ten randomised minutes apart, inside your own waking hours — and why declaring bot is advice I'd give you even if you never sign up. Getting started is free.

If you were picturing seven hundred moderators watching you, picture a craft fair instead — with five customs desks at the gate that nobody mentioned.


Quick FAQ

What is a Bluesky labeler? A labeler is an ordinary Bluesky account that has published an app.bsky.labeler.service record and added a labeler entry to its DID document, which together turn it into a moderation service other people can subscribe to. That record declares every label the service can apply and, for each one, whether the label hides content, blurs images, or just displays a note. Bluesky's docs describe moderation as "multiple, stackable systems", and labelers are the layer you get to choose. In practice most of them aren't hiding anything: of the 19,780 label definitions published across the network on August 17, 2026, 93.7% were set to hide nothing at all.

How many Bluesky labelers are there, and where is there a list of them? Bluesky publishes no directory — app.bsky.labeler.getServices requires the DIDs you want, so there is no "list all" call and every list is community-built. The largest is Kuba Suder's at blue.mackuba.eu/labellers, which held 769 entries when I read it on August 17, 2026; bluesky-labelers.io lists about 708. Of Suder's 769, 707 still return a service record and 62 do not. Treat the raw count with care: 19 of the 769 are single-letter accounts (a.rnbw.ca through s.rnbw.ca) run by one operator, and 17 labelers define a label literally called "test".

How many labelers can you subscribe to on Bluesky? Twenty, though the two places Bluesky states it disagree. The developer docs say "You may include up to 20 labelers. The Bluesky application hardcodes Bluesky's moderation for inclusion, leaving 19 additional subscriptions to the users." The app's own limit, MAX_LABELERS in src/lib/constants.ts, is 20 and counts only labelers you chose, and its dialog reads "You can only subscribe to twenty labelers, and you've reached your limit of twenty." Either way you pick at most 20 of roughly 700, your choices are private, and the geographic authorities required in your region sit outside that budget.

Why does my Bluesky account have a label on it, and how do I remove it? A label is applied by a labeler, not by you, so there is nothing in your account to delete — you appeal it to whichever service issued it, and the app shows you which one on the label itself. Bluesky's own moderation service handles appeals through Bluesky; an independent labeler has to be appealed to that labeler, and Bluesky's docs note a labeler "is not required to accept reports". Twenty-five of the 707 live labelers define a spam label and eight define bot, so an automated-looking account can collect flags from services it has never heard of. The one label you control is your own: bot is a global value you may apply to yourself.

Grow your Bluesky audience on autopilot

Agent Sky finds accounts in your niche, follows them at a safe pace, and unfollows the ones who never follow back. $9/month, free to start.