Learning Search

Mastodon’s Search Limitations Are Good and Can Be Used For Good

I don’t know if it’s because it’s Monday or because it’s way too humid to exercise outside and I just exercised outside anyway, but I find myself especially irritated at all the complaining about Mastodon search I keep seeing. You can’t search Mastodon across multiple instances! It’s terrible to not have full-text search! Etc etc etc.

First of all, you can search Mastodon across multiple instances. I know this because I made tools to do it. More about them later. Second, it’s not terrible that search is limited to hashtags only. In fact, it’s good.

In this article I’m going to look at the ways Mastodon’s search is limited and why those limitations are good. Then, I’m going to look at Mastodon’s extremely-open API and show you some ways that I have used it to make useful search tools that abide with, and indeed make the most of, Mastodon’s search limitations.

Mastodon’s Hashtag-Only Search

If you’ve spent any time posting on Twitter, you’ve probably had this experience: You post something or reply to someone and a stranger enters your conversation. Sometimes this is a good thing – maybe they’re an expert or they have a similar interest. Sometimes, however, it’s  a bad thing. The third-party has an axe to grind about a topic you’re discussing or worse, it’s a bot designed to attack/solicit/annoy any post with certain keywords in it. What started out as a conversation, or an attempt to make community online, ends in a lot of noise and probably lots of people/bots being blocked.

This happens on Twitter because until relatively recently there has only been one public post volume: loud. You could lock your account and interact only with your followers, or you could post to the world, have your tweets searchable, and leave yourself open to unpleasant interaction. It’s only been recently that Twitter has tried to create curated audience spaces via Twitter Circles; unfortunately the feature has had some privacy issues.

By limiting its search to hashtags, Mastodon makes public conversation opt-in. If you don’t use hashtags, your content is not findable in an aggregate. (I’m saying that to distinguish from the fact that your content is still available as an RSS feed, possibly via local instance search, etc.) You can choose to have quieter, instance-level or follower-level conversations in a way that makes them unknowable to the greater public of Mastodon.

And that’s good because it’s a much better allegory for public interaction. If you go to a bar or a party, it’s rare that everyone there is in one group talking. Usually there’s a bunch of groups, or one big loud group and several smaller groups, and so on. Searching for hashtags and hashtags only makes it possible to both cultivate groups of like minded people via an aggregate search and leave them privacy to create and maintain online community.

You might be surprised I feel this way about full-text versus hashtag search. After all, I’m a search engine and online information collection nerd. Wouldn’t I find hashtag-only search inefficient? Wouldn’t I want to full-text search all the things?

Well, no. Because Mastodon is not Google or any other full-text engine, nor should it be. It is a platform for community and conversation. Just as conversations do not echo in an enclosed space forever, conversation search should be somewhat ephemeral.

Mastodon Search Lets Conversations Live a Natural Life Cycle

Twitter has for a long time tried to position itself as the place where life happened. Where official accounts made their official statements – no need to visit their Web site, Twitter’s all you need. Where the famous people clapped back or sometimes got the worst of it from us unwashed masses. Where news happens in real time and gets repudiated or joked about or responded to by everybody.

With a mandate like that, Twitter might have felt like it had to keep everything. After all, history was being made! Twitter was being used to organize political protests in Iran. NASA sent a vehicle to another planet and it communicated with the public via a Twitter account.  Surely, Twitter may have reasoned, all this historical happening must be preserved via a full-text search.

Mastodon, as a distributed network, can’t take Twitter’s place as some kind of constantly-written history book (which, again, is a good thing.) Conversations start, they exist, they die, they vanish. Participants in conversations have the means to do personal archiving if they wish (via RSS feeds of participants and public instance feeds) but Mastodon makes more general, impersonal information aggregation difficult, as it should be on a conversational platform.

Remember, social media as a cultural phenomenon is less than 20 years old. Normalizing full-text search and retention on conversational platforms means confronting issues like the postdoc who doesn’t qualify for a grant because when they were fifteen they said on Facebook that so-and-so has a tonker like a pool noodle. Aside from that, people are different over time. They age, they grow, they change their minds. Do you really want to have to repeatedly check all your online conversations for opinions you no longer have out of fear that someone may ask you to support your argument that James Patterson is the greatest writer in the history of the world?

People say stupid things when they’re being mean, when they’re being ignorant, and when they honestly intend well and their brain misfires.  Even on a conversational platform with ephemeral search, the mean statements can be held accountable. Mean people, when they are mean over and over and over, contribute nothing to the community and make themselves known as people who contribute nothing to the community and therefore can be avoided/blocked/muted.

On the other hand, people who make human communication errors and are allowed to have them expire can continue to exist within the community (or contribute to the community) without building a reputation of errors or of having one-off errors held against them.

(I understand that one person’s communication error can cause deep offense in another person. I don’t mean to trivialize that at all. By saying that I think the community as a whole should be more tolerant of communication errors via ephemeral search doesn’t mean I think the recipient of the error should be tolerant.

If someone says something awful to you on Mastodon – if someone says ANYTHING to you on Mastodon –  neither you nor the people around you are obligated to assess their intentions before you mute them, block them, yeet them into the sun, or otherwise banish them from your social space. Doing so is neither aggressive nor an act of censorship; it is taking appropriate responsibility for one’s online experience and should be lauded.  Offense can be caused by one action, is subjective, and should have an option for immediate individual (muting/blocking/yeeting) response. Offensiveness, on the other hand, is a pattern of behavior (or a single particularly-outrageous act)  that is more easily assessed and dealt with at a community (moderator) level. )

Mastodon’s hashtag-only search is good for the platform and I believe it will be good for developing online community as well. Further, Mastodon’s extremely open API makes all kinds of search tools possible. I have been having a ball for the last few weeks exploring that, and I’m nowhere near finished.

Making Mastodon’s Hashtag-Only Search Work Better

Mastodon’s search is limited by hashtags, but it’s also expanded by Mastodon’s open, information-packed API. Instead of complaining about what we can’t do with Mastodon’s search, a better tactic is to explore the API and start experimenting with the huge amount of material it gives you.

I have been using a combination of the Mastodon API and the Instances.Social API to create tools that make the most of Mastodon’s API and the hashtag search limitation. There are a dozen of them available, free and ad-free, at MastoGizmos.com . I want to talk about a few here and how, even when your search is limited to just hashtags, you can use Mastodon’s API data to get powerful results for your queries.

Filtering By Social Signals: Mastodon Social Signal Search

As I noted earlier, social media as a cultural phenomenon is less than 20 years old. But in that time period we as a culture have gained a lot of knowledge about how it works. We know about replies and reposts and favorites and shares.

Yet it’s rare that we’re able to apply that knowledge to a social media search. If we search Twitter we can get stories that are recent and stories that are “Top,” for some reason, but if we want to search specifically by retweets, likes, and favorites, we have to dig down into the advanced search. (Twitter’s advanced search used to be right up front, but it seems like Twitter’s making it a little more obscure these days.)

Mastodon’s API includes information about reposts, likes, and favorites, making it easy to narrow down your search even while using hashtags as queries. That’s what I did with Mastodon Social Signal Search.

A screenshot of Mastodon Social Signal Search. The top of the screenshot is a text input, with pulldown menus allowing the user to specify up to 4 minimum replies, reblogs, or favorites for filtering the results. In this case OpenSource is being searched for at least four minimum replies and two minimum reposts. Two of the results are shown below.


MSSS lets you specify a hashtag and then filter the results by specifying that they have a minimum of up to 4 replies, reposts, or favorites. (I chose 4 because Mastodon is not a large network compared to other platforms and I did not want to offer a larger maximum and have people searching via filters that constantly return no results.)  Further, the results show the number of replies, reposts, and favorites both via text and a green bar. (Results with the highest social activity levels are shown first.)

I had a little trouble with this tool because I wasn’t sure how to define the pool of instances to be searched. On one hand, I wanted to search enough instances that I could get results for a search for OpenSource with at least four reposts and replies. On the other hand, I didn’t want to produce an overwhelming number of results when someone’s looking for posts with 2 replies.

How I handled it was by using the user preferences to determine the number of instances to be searched. (Basically, (number of preferences * 10) + 10.) That’s another advantage of creating search on a distributed network; you can generate data pools on the fly in all kinds of different ways. In this case I’m changing the number of instances I’m searching, but for other tools on MastoGizmos the instances to be searched are filtered by language, or by whether they’re open to new users or not.

Some users may find searching a limited number of instances to be unsatisfying because it isn’t “all Mastodon.” The thing is I’m not sure we can get “all” anywhere anymore. Is Google displaying every last result for your keyword search from every page they’ve ever indexed? I suspect the Web is way too big for that now. Like Google I want my search to focus ideally on quality results. By starting my search via the larger instances (and sometimes limiting it there depending on what I’m doing) I can use their activities and moderation to filter for posts with useful social signals.

But does every Mastodon search require that you restrict the number of instances you search for best results? No, you can narrow your results in other ways, like via verified users.

Mastodon’s verification system is different from Twitter’s. Instead of a centralized system that dispenses verification, users can verify themselves via placing a specially-formatted link on their Web site. (You can learn more about that here.) Though it’s not as thorough an identity check as, say, looking at a driver’s license, it’s still a method to filter our results away from fraudsters and toward expertise. Of course, this search only works as well as the number of people across Mastodon choose to verify themselves, but I find that even now I can get pretty good results with Madeline’s Mastodon Search, which searches across 200 instances.

Narrowing Our Search to Verified Identities: Madeline’s Mastodon Search

Madeline’s Mastodon Search (named after Madeline Albright; 100 points if you get the joke) restricts its results to posts from users who have verified at least one link in their bio. Results are grouped by the domain of the verified link; users choose a domain from a dropdown menu to see search results.

A screenshot of Madeline's Mastodon Search results. At the top the hashtag search has been set to news, and the filtered domain is currently sitting on ProPublica.org. Two results from ProPublica-related accounts are beneath.


Because everybody can get verified on Mastodon, verification becomes less about status and gatekeeping and more about a useful enhancement for your search results. As in the case above, where I’m filtering the hashtag by a known news organization (ProPublica), you can see how applying a verified-identity filter to a hashtag that might otherwise be fraught with disinformation can protect you and make your search results less misleading.

For my last example of how Mastodon’s hashtag search can be applied differently I want to focus on presentation, not filtering. Mastodon’s hashtag search, with its focus on meaningful, informative words, is an excellent candidate for a visual instead of a text presentation of search results. Like for example in a tag cloud.

Displaying Search Results Differently: KebberCloud Mastodon

KebberCloud is not so much a search tool as a Mastodon exploration tool. Specify a hashtag you want to search and choose from one of ten randomish instances provided by the Instances.Social API. KebberCloud will do a search for your hashtag on that instance and generate a cloud of all hashtags that appear in your search results. Clicking on a hashtag in the cloud opens a new tab with a search for that hashtag on that instance.

A screenshot of KebberCloud Mastodon search . The screenshot is showing a search for "OpenSource" in the infosec.exchange instance, and beneath that is a big ol' word cloud of hashtags, including json, maker, foss, maker, and updates.


KebberCloud helps me when I’m not sure what hashtags would be most useful for my search. Even if hashtags in the results cloud aren’t related to my query in a way that’s immediately obvious, they’re still giving me ideas about how other people are thinking and talking about my search topic. Furthermore, the drop-down menu and visual presentation of the hashtags makes it easy to explore with quick glances and without slogging through a long list of words.


It is the case that Mastodon and its distributed structure looks different from the centralized social media we’re used to, as does its search. That doesn’t mean that Mastodon’s search should be considered inferior or even faulty. By limiting search to hashtags, Mastodon has created a way to clearly delineate a way to opt-in to public conversations while defaulting to more private ones. By offering an open, extensive API, Mastodon has created a vast number of ways to filter search results in meaningful, productive ways. We have barely begun to scratch that surface. Less complaining, more exploring!

Leave a Reply