Mastodon: like Twitter, but open and federated

[2017-04-09] computers, decentralized, mastodon
(Ad, please don’t block)
Warning: This blog post is outdated. Instead, read the blog post “Getting started with Mastodon”.

Mastodon is like Twitter, but federated and based on open protocols. This blog post explains what that means and what it is like to use Mastodon. It also gives tips for using it.

Social media: why are federated services better than centralized ones?  

To technical users, federation is an easy sell. I find it surprisingly hard to explain the benefits to non-technical users, though. And that’s because centralized services are usually easier to use: It’s easier to get started as a new user and easier to find things (users, data, etc.) – simply because everything exists within a single system.

Let’s quickly review the differences between centralized and federated services:

  • Centralized (Twitter, Facebook): a single service manages the data of all users and their communications.
  • Federated (email): multiple services manage user data and collaborate to enable users to communicate with each other.

So what are the benefits of federated services?

  • Freedom: No single company controls server and client. You can choose both.
  • Competition: between multiple implementations of servers and clients is good for innovation. For example, many important parts of Twitter originated in third-party clients (which have since seen their freedom reduced by Twitter). [source 1, source 2]
    • Things that were invented by Twitter’s users [source]: @-replies, hashtags, retweets
  • Robustness: If Twitter disappears, nobody is able to tweet anymore. Compare this with email: an email server disappearing doesn’t mean email is dead. The network will survive.
  • No ads: One of the guiding principle of Mastodon is that there must be no ads.

Mastodon: welcome to the fediverse!  

Mastodon is based on the OStatus suite of protocols (explained later in this article). Servers based on OStatus include:

Mastodon is also based on OStatus. All OStatus servers can talk to each other. The network of those servers is called the fediverse.

How does Mastodon work?  

Getting started is relatively simple:

  1. Find a Mastodon server to join. A page on lists servers by community (Regional, Technology, etc.).
  2. Go to the server, sign up. You only need to enter: email address, local user name and password.
  3. You get an email with a link that you need to click to authenticate yourself.

Most servers now review applications, which means you may have to wait after finishing these steps.

Referring to Mastodon accounts  

Within a toot, you refer to accounts on the local server via @local_user. Accounts on other servers can be mentioned via When a toot is displayed, only local names (e.g. @local_user and @remote_user) are shown, which reduces visual clutter.

Two formats are common for writing down account IDs:


I’m not sure #1 is a good idea, because it is easily confused with email addresses. If you use that format, you should prefix an @, like Mastodon does in profiles.

A short glossary of Mastodon terms  

  • Instance: a Mastodon server.
  • Toot: a post, a tweet.
  • Tooting: posting, tweeting.
  • Boosting: sharing a post in your timeline, retweeting.
  • Fediverse: the network of all servers that Mastodon servers can communicate with.

Yes, these do sound corny. I wish they could find a better word for “toot”. Additionally, I think boosting shouldn’t be its own term, it should be either sharing or retooting.


The following are three important Mastodon timelines:

  • Home: works much like timelines on Twitter and Facebook. Here you see all toots from people you follow.
  • Local timeline: all toots from people hosted by the current server.
  • Federated timeline: the local timeline plus toots from other – federated – servers that are seen by users on the current server. That is, if you follow someone on another server, their public tweets appear in the federated timeline.

The local and federated timelines tend to get really busy. I’m ignoring them and using Mastodon like Twitter.

Servers form communities  

Many Mastodon servers form communities and thus bring back a sense of location to social networking. The administrators of servers also serve as moderators. Therefore, picking a server enables you to choose levels and ways of protection and filtering. It also lets you choose what people you want to be “surrounded with”.

But you also have the option of mostly ignoring the community aspect of servers and to use Mastodon like Twitter.


For each toot, you can specify how widely it should be distributed:

  • Direct: only mentioned users see it.
  • Private: only followers see it.
  • Unlisted: everyone sees it, but it doesn’t show up in local and federated timelines.
  • Public: it shows up everywhere.

This kind of per-toot privacy setting is nice, because you don’t need separate accounts, like on Twitter. However, it comes with several big caveats:

  • The administrators of servers can see everything – all your toots even the direct ones. This sounds scary, but is not much different from services such as Twitter and Facebook that don’t provide end-to-end encryption. Administrators even have complete access to your account and could impersonate you (etc.). So you should really trust them.
  • Any server who accesses your account can see all your toots.
  • You can’t delete toots that were federated to other servers.

It is best to assume that all your toots can be read by everyone, forever.


Admins can block users and have two ways of blocking instances (and therefore communities):

  • Silencing: People on a silenced server can still be followed by people on the local server, but they don’t show up in federated timelines and can’t @-mention people who don’t follow them.
  • Suspending: The server is completely banned. You can follow people on that server, but you’ll never see any of their toots.

Some servers publish what they block. For example, this is’s list of blocked instances.

The role of search engines  

Search engines could play an important role for federated social networks and help with two of their weaknesses:

  • Searching content
  • Finding users

They would simply crawl Mastodon servers the way they crawl the web. It may even be a kind of social network that Google is willing to support: They are not in control, but neither is Facebook. And the data is openly accessible.

Tips for using Mastodon  

First steps  

  • Pick a local user name that is as unique as possible. This makes it easier to keep the name when moving to a different server.
  • To follow someone, use the search function to find them. Searching for a user’s real name will only work if they are on the same server or cached on that server. Otherwise, you need a user’s URI or global ID.
  • Do write a biography. Surprisingly few people do so, but it helps to give you a rough image of who someone is. For example, you could just mention stuff you are interested in and where you are located.
  • Don’t animate your avatar image. Mastodon lets you do that, but it’s very distracting.
  • To introduce yourself, write a toot hashtagged with #introduction. At least users at the local instance can search for it, it may also get propagated elsewhere.

Finding people to follow  

Tips for finding people to follow:

  • Use the Mastodon bridge: On this site, you log in via Twitter and via Mastodon and then see which of the people you follow are also on Mastodon. Obviously, they only appear in that list if they have used the bridge.
  • Like on Twitter, you can start with a few people and then find more, over time, via boosted toots.
  • Take a look at the local and federated timelines.

Writing toots  

  • Use content warnings (“cw” icon): These warnings mean you must click to see the actual content of a toot. The social norm on Mastodon is to use content warnings for:
    • Animated graphics: which are distracting and can even cause seizures for some people.
    • Politics: Many people find discussing politics depressing at the moment. With a content warning, you give people the option to ignore.

I’ve also seen people use content warnings when they vent about stuff. I like that idea, because venting is rarely useful information.

Various other tips  

  • Clicking on the date of a post leads you to a separate page. Click on the text/body of the post to see its thread.
    • Paste a post’s URI into the search field to force-fetch its thread.
  • Moving to a different server is easy: just register there. However, you lose all your follows and your followers. The former can be exported. The latter can be notified via the following trick:
    • Change your display name to “(Old account)”.
    • Mention your new ID in your profile and in your last post.

Likes, dislikes, wishes  

Things I like about Mastodon  

  • Having a federated service is awesome. I’ve waited years for an open alternative to Twitter. And Mastodon could really be it.
  • It’s amazing how well federation works. I am following several people from other servers and I am not able to tell that they are hosted somewhere else. Let’s hope federation will scale to millions of followers.
  • Posts on Mastodon can be up to 500 characters long. It’s good to have more room to express your thoughts. The limit ensures that posts don’t become too verbose.
  • The web app is responsive and works well on desktops, tablets and phones. Once again, the web excels as an app platform.

Things that can be improved  

  • Mastodon’s nomenclature is unnecessarily weird: a post on it is called a “toot”; writing a post is called “tooting”; mentioning/retweeting a post is called “boosting”.
  • Data from profiles from other servers never seems completely up-to-date, especially the number of followers. The same holds for toot data (number of boosts and likes, etc.).
    • If you want to see the exact figures and all replies, you need to display profiles and toots in external web pages.
    • Given that this information is collected at the tooter’s server, in a single location, I’d expect that this issue will eventually be solved.
  • It’s relatively difficult to keep track of what toots and notifications you’ve already seen. Most Twitter clients do this better.


Feature wishes:

  • Automatic posting, either from Twitter to Mastodon or from Mastodon to Twitter. That would it make easer to fill Mastodon with content, while still taking care of one’s Twitter audience (which most people can’t afford to abandon).
  • Notifications don’t scale as well as they do on Twitter, where they are more aggregated. I’d like to have an extra view for mentions (which are the most important kind of notification).
  • For now, the Mastodon bridge works for finding users. In the long run, there should be a centralized service that helps here. This could be achieved via a registry and by crawling web sites for embedded microdata.
  • It’d be great if toots could be commented like you can on Twitter. An embedded toot URL should:
    • Send a notification to the author of the referenced toot.
    • Show the content of the embedded toot inside the embedding toot.

Advanced features:

  • I’m missing features provided by TweetDeck: scheduling tweets and teams (a single account being shared by several people).
  • There could be automated support for migrating to a different server.
  • End-to-end encryption would be nice to have. But I’m not sure how compatible it is with its approach to networking. Before that, we’ll probably get tools for encrypting single toots.

The OStatus suite of protocols (Mastodon’s foundation)  

In principle, every OStatus user publishes Atom (which is similar to RSS) feeds of microposts and every OStatus client is like an RSS reader.

Several standards and protocols complement Atom and enable more functionality:

  • Activity Streams: an XML vocabulary that lets you express activities on social objects (“Jane posted a photo to the ‘Interesting Food’ album”) within Atom.
  • Atom Threading Extensions: to represent threaded discussions within Atom.
  • Portable Contacts: for exchanging contact information.
  • PubSubHubbub: lets you subscribe to feeds. Whenever a feed is updated, you get notified. This means updates reach you much faster. Wordpress and others also support this protocol.
  • Salmon: sends items from Atom feeds to parties that are affected by them. For example: a user mentioned in a post is sent that post; a reply to a post is sent to the author of that post; a user is told if they have a new follower. The notifications “swim upstream”; hence the name “Salmon”. Salmon is based on Activity Streams.
  • Webfinger: lets you look up information about people via URIs. The information is encoded as JSON and can provide data such as homepage, telephone number or avatar image.

Mastodon being compatible with OStatus means that you can seamlessly follow users from other OStatus-based social networks.


Mastodon is the first federated social network that feels viable to me. On one hand, it’s UX is decent – all previous federated social network I’ve tried were awkward to use. On the other hand, the recent increase in popularity helps, too.

Three critical issues will be:

  1. Will Mastodon scale as its popularity grows?
  2. Will Mastodon remain financially viable?
  3. Will anti-harassment measures work?

In all three cases, things will evolve and lessons will be learned. But it’s great that we are making progress in the area of federated social networks.

Monetization is interesting, because there are no ads in Mastodon, nor will there ever be. If you want to support its development, you should donate to its author Gargron: via Patreon, PayPal or Bitcoin. Some people running Mastodon servers are also accepting donations. Some are promising to pass on money to Mastodon, once their costs are covered.

I’d also be OK with servers charging for hosting accounts. I think corporate support can coexist with the open source nature of Mastodon. It may even be beneficial to its long-term survival.


Acknowledgements: Thanks to all the people on Mastodon who answered my Mastodon-related questions as I continue to learn more about it! Among others: @Gargron, @nolan, @KitRedgrave and @HedgeMage.