Hashtags are the algorithm you can see

~/articles/hashtags-are-algorithm-you-can-see
Animated share card for Hashtags are the algorithm you can see

Last night I posted a question on technomusicology.club, a social network I run for people interested in the science of musical sound. The server has 20 users. My account has 176 followers. The post carried 12 hashtags.

Within two hours it had a reply from someone on a server with 68,000 users. That's a small result, and I'll get to why it's not the result I'm actually counting on. But it's a good excuse to explain how reach works on these networks, because it works backwards from everything Facebook and Twitter taught us.

The thirty-second version of the fediverse

Mastodon is one app. The network under it is called the fediverse, and the shared language is a public standard called ActivityPub. Anyone can run a server. Anyone on any server can follow anyone on any other server. I wrote a longer version of this in What I learned running my own little social network, so here's the one comparison that matters: it works like email. Gmail isn't email. Gmail is one company's app for it, and you've never needed a Gmail account to write to someone who has one.

Our server runs a Mastodon fork called glitch-soc. Longer posts, a few extra features, same network. Nothing in this post depends on the fork.

This site is on the network too. You can follow joehahn.dev from Mastodon as if it were a person.

Where the algorithm went

On Facebook, Instagram, Threads, and X, a ranking system decides who sees your post. Your follower count is one input. Whether people lingered on your last post is another. How many of them replied, what time it is, whether you posted a link, whether the company would rather show an ad. You don't see the formula and it changes without notice. Hashtags barely register anymore. Threads replaced them with a single topic label per post. Instagram caps how many it will index. On X they're mostly a stylistic habit.

Mastodon has no ranking system. None. Your home feed is every post from every account you follow, newest first. If you stop scrolling, the posts don't rearrange themselves while you're gone.

So the question "how does anyone see my post" has a completely different answer. On the algorithmic networks the platform decides. Here, a post only travels three ways:

  1. Someone follows you.
  2. Someone boosts you (a boost is a repost, with no quote and no commentary).
  3. Someone is watching a hashtag you used.

That third one is the lever, and it's the one people arriving from Twitter use wrong.

What a hashtag actually does here

Since late 2022 you can follow a hashtag the same way you follow a person. Follow #Headphones and every post with that tag lands in your home feed, from people you've never heard of, on servers you've never visited. There's also a timeline page for every tag that anyone can browse without following it.

That changes what a hashtag is for. On Instagram a hashtag was a ticket into a search index that a ranking system then sorted. Here it's a subscription channel. People don't search for #Audiophile and scroll a ranked grid. They subscribe to it and your post arrives in their feed next to posts from their friends, in the order it was written.

Which is why my post had 12 of them. On Twitter that would look like spam, and it would have been treated like spam. Here each one is a separate room I'm asking to be let into. #MusicMastodon and #MastodonMusic are the same room with two doors, because people picked different conventions and I don't know which one any given reader follows. #Audiophile and #Audiophiles likewise. The rest describe the post: #Headphones, #HeadFi, #Stereo, #VintageAudio, and so on.

The convention is to put the tags at the end of the post, on their own line, so people reading the words don't have to read around them. And to write them in CamelCase, #VintageAudio rather than #vintageaudio, because screen readers can then say the words instead of spelling them out. Matching is case-insensitive, so it costs nothing.

The catch

A hashtag is not a broadcast. Here is the part the tutorials usually skip.

Your server only knows about posts it has already received. When I post, my server sends the post to every server that has at least one person following me. Those servers then show it to anyone there who follows the tag. A server where nobody follows me never gets the post, so nobody there sees it under the tag, no matter how many of them follow #Headphones.

In practice this is less bleak than it sounds. Those 176 followers are spread across a lot of servers, including the big ones, and a big server has a lot of people following a lot of tags. One follower on mastodon.social puts my post in front of everyone on mastodon.social who follows any of my 12 tags. And if one of them boosts it, their followers' servers receive it too, and the whole thing starts again from there.

There are also relays, which server admins can subscribe to. A relay forwards public posts between every server that subscribes to it, so a tiny server can see, and be seen by, a wider slice of the network. That's an admin setting, not something a user does per post.

Here is what those tags look like from two different servers over the same seven days. Ours, and mastodon.social, which is the biggest one.

  • #Headphones: 1 post from 1 account on ours. 42 posts from 35 accounts on mastodon.social.
  • #Audiophile: 1 post from 1 account on ours. 39 posts from 20 accounts there.
  • #VintageAudio: 2 posts from 2 accounts on ours. 6 posts from 5 accounts there.
  • #MusicMastodon: 1 post from 1 account on ours. 2 posts from 2 accounts there.

The 1 on our side is my post. The 42 on the other side is the room I was trying to get into. I can't see how many people on mastodon.social follow #Headphones, and neither can they. The number isn't exposed. That's the next point.

No numbers

Mastodon shows you replies, boosts, and favorites. That's it. No impressions, no reach, no "your post performed 34% better than usual." You can't know how many people a hashtag put your post in front of. You find out somebody saw it when they do something about it.

For anyone used to watching a view counter tick up, this feels like posting into a void. After a few months I think it's the healthier arrangement, but I'm aware that's the kind of thing people say about cold showers.

Pros and cons

The honest version, from running a 20-person server for a few months.

What you gain

  • Reach you can reason about. Follow, boost, hashtag. Three mechanisms, all visible, none of them changing next quarter.
  • Hashtags work for a nobody. A new account with 30 followers and the right tags gets read by people who care about the topic. On the algorithmic networks a new account with 30 followers gets read by roughly 30 people, on a good day.
  • Nothing is demoted. Links, external domains, the word "Mastodon," none of it gets you buried. There is no buried.
  • The feed stays put. You can leave for a day and read exactly what you missed.

What you give up

  • Virality is slow and manual. A post travels only as far as humans boost it. There's no engagement spike that carries a post to a million strangers overnight. Some people will count that as a gain.
  • Small servers see less. The federated timeline on a 20-user server is thin, and the trending page is often empty, because trends are calculated per server from what that server has seen.
  • You have to do the tagging. Nobody is inferring your topic from the picture. If you forget the tags, the post goes to your followers and stops.
  • No analytics means no feedback loop. You won't learn which tag did the work, because nothing tells you.

What I'd do differently, and what I don't know

This is one post, 12 hours old, with 1 boost, 1 favorite, and 2 replies. That's not evidence of anything. It's an illustration.

Worse for my argument: I checked, and the person who replied already follows me. That reply came through the follow path, not through a hashtag. The hashtag effect is exactly the part I can't see from the author's side, which is the whole point of the "no numbers" section, and also a convenient thing for me to say.

I don't know whether our server subscribes to a relay. I should, since I run it. I also don't know how many of my 176 followers are on servers big enough to matter for the hashtag path. Probably most, since most accounts are on a handful of large servers, but I haven't counted.

The better experiment is two matched posts, one with tags and one without, a week apart, from the same account. If I run it I'll report it.


Links: technomusicology.club · the post · fedi.tips on following hashtags