On most social networks, who follows whom is the platform’s private property. On Bluesky it is not. The AT Protocol stores your follows as records in your own repository, and anyone can read them without an account, a key, or permission.
That single design decision explains most of what is different about the network, including why a tool like this one can show you your graph without asking you to log in.
What “public” actually means
Every follow you create is a record in your repo, of type
app.bsky.graph.follow, containing the DID of the person you followed and a
timestamp. Anyone can list them:
GET https://public.api.bsky.app/xrpc/app.bsky.graph.getFollows?actor=you.bsky.social
No token. No sign-in. The same is true of your followers, your likes, your posts and your blocks. Your mutes are private; almost nothing else is.
The practical consequences:
- Public lists support comparison. You can calculate mutuals and one-way follows from the observations available. Detecting departures requires earlier observations; one reading does not reveal a complete history.
- Other people can read the graph too. Public visibility is useful for analysis, but is not evidence of someone’s intentions.
- Public analysis does not need your password. Reading private information, such as muted accounts, still requires authorisation.
Why your follows are more load-bearing here
Bluesky’s main timeline is chronological-ish and built from who you follow, with no engagement-optimising algorithm deciding what you “really” want. Custom feeds exist, but the default experience is: your list, in order.
That makes a stale following list expensive in a way it is not elsewhere. On a network with an aggressive recommendation engine, following a dead account is harmless, the algorithm routes around it. Here it is a hole in your timeline.
Starter packs: fast to join, slow to regret
Starter packs let someone bundle a list of accounts so a newcomer can follow all of them in one tap. They are the best onboarding mechanism any network has shipped, and they are also the single biggest source of follows people later cannot explain.
If your following list has a cluster of accounts you have no memory of choosing, that is where they came from. Nothing wrong with them, just review them once, now that you know what you actually read.
The same public data can reveal unusual follow patterns worth reviewing. A pattern alone is not a reliable verdict that an account is a bot. See the guide to reviewing bot signals.
Feeds are not follows
A custom feed is a separate thing you subscribe to, and it does not put anything in your following list. If you want a subject without a person, subscribing to a feed is usually the better move: you get the content and your follow graph stays a record of people you care about.
Lists, blocks and mutes, briefly
- Lists are public collections of accounts, usable for curation or for moderation. Following a list does not follow its members.
- Blocks are public records. They are visible to anyone who looks, which is unusual and worth knowing before you use blocking as a statement.
- Mutes are private and stay on your device/account. Muting is the quiet option.
What this means for cleaning up
Because the graph is open, you can see the whole picture before touching anything, and so can a tool, without credentials. The free analyzer does exactly that: it reads the two public lists, compares them, and tells you who is one-way, who is mutual, and which of your follows have the biggest audiences.
Changing follows requires authorisation to write records to your account. Authorisation can also be necessary for private reads, including your muted accounts. Check the requested permissions before connecting a tool.
The upside
The graph remains on Bluesky independently of Blue Horizons. Disconnecting this tool does not delete your following relationships, followers or posts from the network. Another compatible client can read the public records that remain available.