In a complete departure from my usual meanderings, I’m going to present an in-depth comparative review of eight iOS Mastodon/Fediverse apps. (Video: ‘What is the Fediverse?’) Given that I’m not alone in moving to Mastodon from Twitter at the moment (whether tentatively or bridge-burningly), I’ll also draw comparisons with the official iOS Twitter app, noting points of comfort and familiarity as well as things that might jar a little at first. But please bear in mind that Mastodon isn’t meant to be a clone of Twitter. I’ve chosen these eight apps in particular simply on the basis that they have a rating of 3 stars (out of 5) or higher in the iPhone App Store (in fact, all of them are rated 4–5 stars):
- Fedi for Pleroma and Mastodon v. 3.2.0 (Big Fig/Fedi)
- Mast: for Mastodon* v. 2.2.3 (PoeticBytes)
- Mastodon for iPhone and iPad v. 1.4.0 (121) (Mastodon)
- Mercury for Mastodon v. 2021.4(54) (Daniel Nitsikopoulos)
- Metatext* v. 1.5.1 (2) (Metabolist)
- tooot* v. 4.0.0 (Zhiyuan Zheng)
- Toot!* v. 16.0 (132) (Dag Ågren)
- Tootle for Mastodon* v. 1.11.6 (Moortz/Takashi Morioka)
*link to App Store
Skip to the end for a tl;dr summary. (This is a very long post.)
How much does it cost?
First things first, you might want to consider how much you’re willing to spend. Fortunately, only Mast (£2.49, €2.99) and Toot! (£3.49, €3.99) will cost you actual money (so you could, like me, try all eight apps for £5.98). If you decide you like an app, and you want to (and have the wherewithal to) support the developer, the two paid apps along with Mercury and Tootle have in-app purchase options for tipping them (with a small amount of bonus functionality unlocked in the case of Mercury).
Will it still be around next year?
Before getting too comfortable with an app, you might also want to consider how likely it is to continue being maintained. All these apps work on the latest iPhones, but the timeline below shows that some haven’t been updated for a while, including the venerable Tootle, which was the only one of these I had used until this month! (I first toyed with Mastodon in 2018, when none of the others were around – including the official Mastodon app, which is actually the baby of the bunch.) Having said that, if you do have to move from one app to another at some point in the future, it should be at most a minor irritation, as long as you don’t make heavy use of app-specific features that store data on your device (such as Mast’s saved hashtags, or draft toots in those apps that support them).
And what about other platforms, btw?
Although I’m talking about iOS (i.e. iPhone apps), all of these also work on iPad. (Mercury works in iPhone-emulation mode.) Beyond the Apple ecosystem, both the official Mastodon app and Fedi are available on Android – but other apps such as Tusky seem to be more popular there. On the desktop, there are a few apps available (including a macOS version of Mast, which felt unpolished and buggy when I tried it). The standard multi-column Mastodon web interface – perhaps tailored slightly by your chosen instance – is probably the nicest way to connect to the social network when you have the luxury of a large screen.
Never judge a book by its cover, or an app by its icon. That doesn’t mean I’ll put up with ugliness! Fedi gives us a zero-effort, bland, corporate ‘productivity app’ icon, so it’s not winning any prizes here (disclaimer: there are no actual prizes), and nor is tooot, with its oops-I-forgot-to-replace-the-placeholder look. The icon for the official Mastodon app looks ok, perhaps a little too like the official Twitter app’s icon, using a flat white logo on a blue background, which would be the same colour as Twitter’s if it weren’t for the addition of a slight gradient. (And it’s obviously an elephant rather than a bird.) Mercury’s icon captures, um, the blobbiness of liquid metal. Ok, that’s a charitable guess. It is one of four apps, though, that allow you to choose variations on the theme, and this redeems it (slightly). Two of the others are Mast and Metatext, both of which are reasonably smart elephant logotypes. That leaves Tootle, whose cute little elephant looks a little weary, but then it is relatively long in the tusk. The winner for me, another one with the option of picking your own variant, is Toot!’s cheery cartoon mastodon! Social media should be fun – but if you’ve come from Twitter, you can be excused for having forgotten that!
That’s enough of a preamble. Although I’m going to focus mainly on what I think are the things you’ll want to do most of the time you’re using an app, it’s worth looking briefly at how easy it is to get started, including setting up an account on an instance, and connecting to an existing account.
(If I’d thought of this in advance, I’d have noted what it was like at the time. Now I’ve had to log out of both my Mastodon accounts on all eight apps to remind myself! It took me a while to work out that I had to do a firm press on an account to bring up the option to remove it in Mast. And I actually had to delete and reinstall both Mast and Toot! because they insisted – not so unreasonably in normal use – on remaining logged in to at least one account!)
On opening the apps for the first time, you’ll be greeted with varying levels of friendliness and/or intimidation.
Metatext and Toot! both introduce the brand-new user to Mastodon. The first app, albeit after an unnecessarily laboured fade-in of the welcome screen, has a short embedded YouTube video (produced by Mastodon). The second app has a brief text introduction, as well as a link at the bottom of the screen that will pop you out of the app and take you to that very same video on YouTube.
Mercury’s ‘Find and join a mastodon instance’ link actually links to Mastodon’s home page – which slightly unfortunately also prompts you to open the official app if you have it installed! I suppose you will eventually find lists of instances once you’ve read or skimmed over the introductory blurb.
The official Mastodon app’s ‘Get Started’ button (the first of only two on that screen) will take you to a screen in which you can choose from lists of instances, sorted thematically, and there’s a little explanation there too.
Fedi appears to suggest the instance fedi.app, but if you accept that default, and tap any of the three buttons, you’ll get a horrible red error box at the top of the screen – with raw HTML code for the first two buttons! So don’t do that! (It does go away, but it doesn’t inspire confidence.) If you ask for help choosing an instance, the lack of polish continues to shine through (um, no, that’s not quite right). You’re landed on a GitHub documentation page! (GitHub is a website used by software developers.) When you select the text box, you do get a list of suggestions. The documentation reveals that the developers of Fedi favour Pleroma (an alternative to Mastodon), and the instances they recommend skew in that direction, including some very nasty ones you may have heard of, such as Gab and Spinster (which most instances in the Fediverse block, as indeed do some apps themselves).
A note on terminology
There are a number of different names for things in the Mastodon world, and the apps vary in their choice of terms. (Some even have settings that let you choose the ones you prefer.) The instances that you can sign up to are also known as servers. Toots (the Mastodon equivalent of tweets on Twitter) are also known more prosaically as posts, and officially as statuses. Toots can be favourited or liked (with stars, hearts or neither). They can also be boosted, reposted or reblogged (the equivalent of retweeting). A stream of toots is either a timeline or a feed. As on Twitter, you can have a profile pic, but these are sometimes called avatars (a term I prefer to avoid because of its appropriation from Hinduism).
Screenreader accessibility (part 1)
Before going any further, I should say that Toot! and Tootle are sadly likely to be unusable by low-vision users who rely on being able to increase the text size on their iPhones (rather than using screenreaders). Unfortunately, these apps don’t respect the settings on your phone, and don’t offer any way to change the font size within the app either. The developer of Toot! has known about this issue since 2018, but it clearly hasn’t been a priority to fix it.
I’m not a screenreader user, but I have done just enough playing around with VoiceOver (the iPhone’s built-in screenreader) to have at least some idea of what’s useful. Or at least I can spot when app developers have done things really badly! But I haven’t explored every aspect of these apps using VoiceOver, and I can only give a hint of how accessible these apps are.
The opening screens for Mercury, Metatext, Toot! and Tootle are all straightforwardly navigable from top to bottom using VoiceOver. Mastodon’s opening screen takes you straight to that ‘Get Started’ button. tooot’s opening screen works fine too, with the proviso that there’s no explanation of the mysterious labels beyond the ‘Login’ button (but these are as much of a mystery for those of us using the visual interface!).
Mast’s opening screen is navigable, but unfortunately highlights several user interface elements that are hidden visually and intended not to be seen or active at this point. You need to skip past no fewer than seven invisible and unusable elements – five buttons, a heading and a list – to get to the ‘Instance name’ text field. Not great.
Fedi’s VoiceOver support is haphazard from the start. On the opening screen, the label for that all-important instance text field is widely separated from the text field itself, and the app gives unnecessary description of a ‘screenshot’ before getting into the functionality. I did actually play with Fedi properly, using a couple of instances, but it didn’t have many redeeming qualities. I’m so unimpressed by the app that I don’t think it’s worth labouring descriptions of how well it behaves elsewhere. It is therefore eliminated at this stage. (I wasn’t planning to have elimination rounds, but the app forced my hand!)
Signing up or logging in to an instance
I said a few paragraphs ago that I’d look briefly at this aspect, but it seems I don’t do briefly at the moment! Fortunately, all of the apps share the same sign-up/login process, as this is delegated to the instance’s login page (which generally looks more or less the same from instance to instance – I’ve only seen minor customisations like colour changes).
If you haven’t already created an account on your chosen instance, you can choose the ‘Sign-up’ link here, which takes you to joinmastodon.org. Otherwise, you just need to enter your email address and password, and you’ll be asked to authorise the app to access your account. If you’ve set up two-factor authentication on your instance of choice, there may be another step here. And depending on the instance, you may also have to agree to abide by the instance’s rules.
There are some app-dependent wrinkles (of course!).
The official Mastodon app offers an alternative sign-up route, which happens if you tap the ‘Getting started’ button instead of the ‘Login’ button – here you are presented with the instance’s rules, and supply your display name, chosen username, email address and password within the app.
In Metatext, after you’ve typed the name of an instance, the ‘Log in’ button may be joined by another button, depending on the instance: ‘Request an invite’, in the case of an instance that requires you to be invited; ‘Browse’, in the case of instance that allows public browsing of its Local timeline and users; or ‘Join’, in the case of instance you can’t browse publicly but can sign up to without being invited.
Tootle also allows you to browse publicly accessible instances, using it’s ‘Take a look’ link, though this is unfortunately always active, and just pops up an unhelpful ‘Oops, something is wrong’ error when you try to look at an instance that doesn’t allow public browsing.
Toot! is very helpful in some ways, but its sign-up/login process feels a little tortuous at first (or at least it works very differently from the other apps). When you pick an instance, you are shown the instance’s rules and have to say you agree with them before proceeding. If the instance you have chosen allows public browsing, you then see its Local timeline, and can switch to its Federated timeline. (I’ll explain these later.) If on the other hand the instance you have chosen doesn’t allow public browsing, you’ll see a screen labeled ‘Local timeline’, but with no toots and an unhelpful message about ‘errors when loading’. In either case, if you want to sign up or log in, you need to take an extra step: the simplest way is to tap the dimmed ‘Home’, ‘Toot’ or ‘Notifications’ button at the bottom of the screen.
More than one instance?
All the apps reviewed support accounts on multiple instances. In four of them, to add an instance, you start with the same action used to switch between your instances. In Mastodon, Mercury or tooot, press and hold the ‘Profile’ button or profile picture at the bottom of the screen. In Tootle, tap the display name/instance name at the top of the screen.
In Metatext, you switch instances by pressing and holding the profile picture at the top, but to add a new one, you need to tap it instead and then choose ‘Accounts’. In Mast, you switch instances similarly by pressing and holding the ‘Profile’ button at the bottom, but adding a new one is a little more convoluted: tap the ‘Profile’ button, tap the cog at the top left, scroll down and choose ‘Accounts’.
Toot! is a little different. To add an instance, tap the ‘…’ at the top right, and choose ‘Servers’. But to switch instances, use the instance switcher button at the bottom right: either press and hold, or swipe left or right for a nice rotating transition between screens for different instances.
Both Metatext and Toot! allow you to treat a publicly browsable instance the same way as the instances you’re signed up to, as far as it makes sense to do that, which could be quite useful. Tootle doesn’t quite treat read-only instances on an equal footing, but allows you to add ‘tabs’ for such instances at the bottom of the screen. Mast also allows you to add what it calls ‘instance timelines’, hidden away under ‘Explore’.
Exploring the Fediverse
There are three basic timelines in Mastodon:
- Home. This is where you’ll see public toots (and possibly other kinds of posts) of all the people you follow, in the order that they’re posted. It’s more like Twitter’s ‘Latest tweets’ than its opaquely generated ‘Home’ view. (Note: the Home timeline doesn’t exist if you’re browsing a publicly browsable instance without logging in.)
- Local. Here you can see all the public toots on your instance, again in chronological order.
- Federated. This timeline is like the Local timeline except that instead of just the public toots on your instance, it includes the public toots on all instances that your instance is currently federated with. Unless you’ve chosen a very isolated instance, this is a fast-flowing stream of toots.
If you have just signed up on an instance, your Home timeline will be dispiritingly empty. No algorithmically suggested people to follow or anything like that. You’re in charge here! So you probably want to start by looking through your Local timeline – or the Federated timeline if you’re feeling brave!
In Mast, the three timelines are available under ‘Feed’, and are labelled with tabs across the top of the screen as ‘Home’, ‘Local’ and ‘All’ (i.e. Federated).
Metatext works similarly, except that the button at the bottom is labelled ‘Timelines’ rather than ‘Feed’, and the Federated tab is labelled ‘Federated’. It’s also nice that you can swipe left and right between the three timelines.
tooot devotes two buttons at the bottom to timelines: the house button is for the Home timeline, labelled ‘Following’, while the globe button is for a view with two tabs, ‘Federated’ and ‘Local’, and again you can swipe between them.
Toot! also reserves the house button for the Home timeline. To access the Local or Federated timeline, tap the instance switcher. You can choose between the two at the top of the screen.
Tootle has separate buttons on its configurable tab bar for the three timelines.
In Mercury, you switch between timelines by tapping on the ‘Timelines’ button, which reveals a slide-in menu, including the three timelines, and also a lot of other things that aren’t really timelines.
It may surprise you to find that there is no Federated timeline in the official Mastodon app, and even the Local timeline is hidden away under search, disguised as ‘Community’. Lead developer Eugen Rochko (who also runs the large instance mastodon.social) has tried to justify this decision, but I’m not at all convinced, and for me it counts as this app’s biggest negative point.
Direct message timelines
Direct messages are really just toots in Mastodon. So they appear in your Home timeline along with everything else. Their distinguishing feature is simply that they have their visibility set to direct (as opposed to public, unlisted or followers). This means they are visible only to people mentioned in them.
Nevertheless, most of the apps have a facility to show you just those toots with this property. Mast and Metatext have a ‘Messages’ button, Mercury has a ‘Conversations’ button, and Tootle has a ‘DM’ button. Toot! has a ‘Direct messages’ view accessible from the ‘…’ menu at the top of the screen.
Otherwise, direct messages are highlighted in various ways in your Home timeline: Mercury and tooot use an envelope icon, and change the boost button to a padlock and a subtly dimmed boost icon respectively (since you can’t boost direct messages). Metatext and Tootle show their envelope icon in place of the boost button. Toot!, by default, styles direct messages in conversation bubbles, and omits the boost button. It also notifies you of new direct messages using a little profile pic circle at the top right.
Mast uses a paper aeroplane icon for direct messages, but Mastodon doesn’t distinguish them from toots with other visibilities at all. Both these apps confusingly retain an active boost button. In Mastodon, this appears to work momentarily and is then immediately undone, but since you can’t tell otherwise that the toot is a direct message, this could be very frustrating. In Mast, it also seems to work, and updates the number of boosts to 1. But this is only a display bug (and unboosting straightaway leads to the number of boosts being −1). If you go to a different view and return, everything is fine.
By the way, Mast gets completely hung up if you send a direct message without any mentions – though why you’d do that only I can guess!
Screenreader accessibility (part 2)
Now, I have to concede ignorance about how people actually use screenreaders to navigate complex structures like Mastodon (or Twitter) timelines. So I may have approached this somewhat idiosyncratically! For one thing, I only tried the flat navigation style, whereas I can imagine grouped navigation being better in some situations. I did switch to the container rotor to move between major elements of the user interface with vertical swipes. Before I tried this, I had a lot of difficulty getting around parts of all the apps.
As a baseline, I compared the apps’ behaviour when selecting a toot in a timeline and letting VoiceOver ‘read all’ (default: two-finger swipe down), without considering how easy it was to select that first toot. Mastodon, Metatext and tooot all did a good job, with about the right amount of detail for an overview. Toot! felt ever-so-slightly verbose at times, but was basically fine. Mercury gave slightly more information than appeared on screen, and didn’t quite keep its visual and audible timelines in sync in some minor respects. Mast would have been ok, except that content warnings were completely ignored, which feels like a major failing. Tootle was fine with content warnings, which it just read as labelled buttons, but unfortunately it read everything else on the screen as well, which made browsing the timeline in this way very tedious.
Navigating through the timeline, element by element, Toot!, tooot and Tootle (from best to worst) all fared poorly. The container rotor didn’t often help, as the heading, timeline and button bar are not properly connected in the apps, and I couldn’t say how easy they would be to use at all for someone who relies on a screenreader. (I couldn’t access the button bar in any of these apps without actually tapping on it.)
Mast had one or two peculiarities. Saying how old a toot was, the ‘h’ for hours was read as ‘aitch’, the ‘m’ for minutes as ‘metres’, and the ‘s’ for seconds as a plural ending! Content warnings, as noted before, were not treated correctly, with VoiceOver simply diving in and reading the visually hidden content.
In Mastodon, content warnings did at least kept stuff hidden – just a little too well though!
Mercury was really awkward to navigate consistently – I couldn’t really work out the logic at all, which was very frustrating. Sensitive content was sometimes read out, while content warnings clung onto their secrets a little too tenaciously.
Some useful pieces of information, such as indications that toots are direct messages or have some other non-public visibility, seem to be omitted from VoiceOver support in most apps. Metatext fared better than most here.
Multilingual support is frankly appalling across all the apps here, and I suspect this is a longstanding problem with VoiceOver on iOS that simply hasn’t been addressed. What is frustrating is that the other screen-reading tool in iOS (‘Speak Selection’/‘Speak Screen’ in the ‘Spoken Content’ accessibility options) does a pretty good job of identifying languages and reading toots in a timeline accordingly. That tool, however, isn’t interactive, and simply reads until you tell it to stop. This isn’t just an issue with Mastodon apps, but equally with the Twitter app, and indeed any app that doesn’t have content explicitly marked for language (which would be normal good practice on the web).
In summary, VoiceOver accessibility isn’t great, with all the apps having failings in this area. I hope the developers will pay more attention to accessibility in future releases. I was going to say that the web interface is probably a better bet in the meantime, but I just tried it and it seems even worse! 🙁
Searching and browsing
Besides connecting with others on your instance’s Local and Federated timelines (which, of course, you can’t do if you’re using Mastodon!), you’ll probably want to explore further afield, at least at first.
All the apps have a search function, accessed in most cases using the familiar magnifying glass button (except in Toot!, where you need to tap ‘…’ and choose ‘Search’). If you enter a search term, you’ll usually get matches of people (the term is found in profiles in federated instances), hashtags (the term is found in hashtags that have been used at some point) and toots (the term is found in toots in the Federated timeline). You can choose between these using tabs in Mastodon, Mercury and Metatext. (In Mercury, you need to tap ‘search’ separately for each tab, which is slightly irritating.) Mastodon and Metatext also have an ‘All’ tab, which shows a selection of search results from each category, and this is essentially what tooot and Toot! show in their tab-free search results screens.
For hashtag results, Metatext and Toot! display little recent-usage graphs alongside each hashtag found.
In Mast, the search function in the current release is almost completely broken: after tapping the second magnifying glass, or pressing and holding the first, you get to the search field. It has tabs for ‘Toots’ and ‘Users’, but only manages to display two or three toots in an unscrollable list. If you tap ‘Users’, the search closes!
Tootle’s search is a little different, with no ‘All’ tab, but tabs (across the bottom) labelled ‘MyToot’, ‘Hashtag’, ‘Account’ and ‘Instance’. The middle two are self-explanatory, as is the last (though this addition doesn’t seem very useful). As far as I can tell ‘MyToot’ finds the search term in toots that you have posted, boosted or favourited.
Besides search functionality on their ‘Explore’ screens, Mast and Metatext let you browse profile directories for your instance – and in Mast, for instances federated to it too. This is the place to find the Local timeline in Mastodon too (‘Communities’).
Mastodon, Mast and Mercury also have some slightly opaque additional features on their ‘Explore’ screens, including what seem to me to be un-Fediverse-like suggestions of accounts to follow and news items. I haven’t explored these further.
There’s not a huge amount of difference in the usability of user profiles (and if you’re anything like me, you’ll spend a lot more time focusing on toots and threads than on people’s profiles). Coming from Twitter, most of the apps’ profile views will look fairly familiar, with a header image at the top, and a profile pic in a little frame beside the user’s display name and username. All the apps except Mercury, tooot and Tootle will enlarge the profile pic or header image if you tap on it, just as in the Twitter app. Mercury doesn’t show a header image when you’re viewing your own profile (but you can still edit it).
Some of the apps use a square frame rather than the twitter-like round frame for the profile pic, and the header image varies from app to app in how it is cropped, so there’s no one-size-fits-all approach that will work here. Tootle breaks the mould visually here (or perhaps it’s fairer to say that it predates the mould!), with (a variable part of) the header image used as a background for the profile pic and the entire bio. This does unfortunately render some bios extremely hard to read. (Note that bios can be up to 500 characters in length, compared to Twitter’s 160.)
Besides the bio, there may be a table of up to four rows containing user-defined information, possibly including links to websites, which can be ‘verified’ if they point back at the Mastodon account. This table usually appears just above or below the bio. But Mastodon hides it under an ‘About’ tab alongside ‘Posts’, ‘Posts and replies’ and ‘Media’). And Mast hides the individual rows of the table under its ‘Links’ menu item. Tootle doesn’t display this information at all. Of the apps that do, all but Mast and Mastodon indicate the ‘verified’ status of any web links. Only Toot! tells you when the link was verified.
All the apps have some way of showing you if you’re following or requesting to follow the person, usually doubling up as the button to follow or request to follow them. Toot! is the exception: it states separately whether you’re following the person, being followed by them, or following each other, which is actually quite helpful. Mastodon and Mercury don’t show you whether or not the person is following you (though if they are, they will appear in your list of followers). Metatext only tells you if a person is following you, not if they aren’t.
All the apps display the number of accounts the person follows, and the number of people following the account. All but Metatext and Toot! also display the total number of toots.
Only three of the apps – Mast, Metatext and tooot – show the date the person signed up to the instance. Mast is slightly overzealous in reporting the time as well, which isn’t actually recorded and always comes out as 00:00:00 UTC (GMT)!
If you have endorsed/featured a user (something you can only do in Mast or Toot!), you can see the endorsement status in their profile in Toot! This seems of limited use!
Most of the apps use a very similar layout for your own profile and other people’s profiles (apart from things which only make sense in one context or the other). tooot is the odd one out here: for your own profile, instead of the bio and other information, it gives access to various lists/timelines and settings.
Beneath the profile information, the apps display the user’s toots, most recent first (except in Mercury, where you have to tap on the ‘Toots’ option to view them on a separate screen). Any pinned tweets come before other tweets, except in Mast, Mastodon and Mercury. In Mast, there is a ‘Pinned’ menu item you can use to see these, which does feel a little awkward and counter to the idea of pinning things for everyone to notice.
Mastodon, Metatext and Toot by default omit toots that are replies to other toots, and have a separate toots-and-replies tab for all toots. Mastodon and Metatext also have a tab for toots containing media. Mast and Mercury have separate galleries of recent media below the basic profile information, with links to the toots containing them.
Interacting with a profile
The thing you’re most likely to want to do after checking out someone’s profile is follow them. And all the apps have some kind of follow button (which may request a follow if the account is set to require approval of followers). Tootle’s follow button disappears after use. To unfollow, you need to use a menu item instead. In all the other apps, the follow button turns into an unfollow button.
Although mentions are just toots that include a person’s username (beginning with @), and direct messages are just mentions with visibility set to direct, all the apps conveniently offer some means of doing one or both of these from either a button or menu item on a person’s profile. Offering both feels like overkill though, as you can easily convert either into the other by changing the visibility – public or direct – while composing the toot.
Profiles in Mercury and Metatext have a notification bell that you can tap presumably to be notified whenever that person toots, though I haven’t tested this.
Almost all the apps offer menu access to items that will be familiar from Twitter, principally mute, block, report and share. (Mercury doesn’t include block or report. Tootle doesn’t include report.) Reports go to the administrator of the instance the user’s account is on. Hopefully you won’t need to report or block users very often.
If you use an instance’s web interface, you can add your own private notes to other people’s profiles. Unfortunately, such notes can be neither created nor viewed in any of the apps here. That’s a shame, as you could use private notes to remind yourself why you followed – or blocked – someone, say.
Toots (and other posts)
Interacting with timelines
I’ll use the word timeline loosely here to include not only the chronologically ordered Home, Local and Federated timelines, but also lists of favourites and bookmarks, and lists of toots returned as the result of a search, or those under a profile. (But for now I’m only talking about lists of toots, so I’m not counting lists of notifications, hashtags etc.)
All the apps display timelines in a way that will feel familiar to Twitter users, with newer toots above older ones. Tootle, however, also (consistently, but confusingly) carries this over to its display of threads, with replies above original toots. The remaining apps follow the convention used in Twitter, and have replies in chronological order below original toots in the display of conversations/threads.
Mast and Mercury reduce visual clutter a little by eliminating the action buttons beneath the toots in this view. In Mast, these become visible in the ‘Detail’ view shown when you tap on a toot. In Mercury, they pop up beneath the toot when you tap on it. Toot!, as elsewhere in its interface, uses small caps text rather than icons, which looks quite stylish in my opinion.
Moving through a timeline is completely intuitive, with scrolling just as you’d expect in an iPhone app. Tootle is slightly frustrating though, as the timeline comes to a disappointingly abrupt halt when you flick-scroll up or down. It feels as though it could do with an oil!
As in the Twitter app, a timeline can sometimes have gaps in it, which you can fill in using a load-missing-toots button that sits in the gap. This button in Metatext or Toot! shows, by way of little arrows that rotate as you scroll the timeline, where the missing toots will be placed – either above the toot that is below the gap, or below the toot that is above the gap. This is incredibly helpful in reducing disorientation.
In most of the apps, tapping on an otherwise inactive part of a toot takes you to a detail view where you can see how the toot is connected to other toots – what it is in reply to, if anything, and any replies to it. Here is where toots with unlisted visibility show up, when they would be hidden from the Local timeline for instance.
Mercury is the exception: as just noted, tapping on a toot brings up the hidden action buttons for the toot. You can then tap the conversation button to see the detail view (which has ‘replies’ and ‘thread’ subviews). As an alternative to using these buttons, in Mercury you can use swipe gestures: a short swipe to the left is the equivalent to tapping the conversation button; a long swipe to the left is equivalent to tapping on the favourite button; a short swipe to the right is equivalent to tapping on the reply button; and a long swipe to the right is equivalent to tapping on the boost button.
These swipe gestures felt quite handy when I first came across them, but in many ways I’d rather see swipe to the right used as an equivalent to the back button, as it is in the Twitter app for instance. None of the apps do this.
The way connections between toots are indicated in the detail view for a toot varies from app to app. Toot!’s indication of a conversation is particularly innovative, using (by default coloured) vertical connecting lines linking the profile pics beside the toots. Fragments of these lines are also visible above and below profile pics in a timeline, to indicate that the toot is in reply to something or has replies. Not quite sure yet if it’s just a gimmick, or something that’s actually useful. But there’s much about Toot! that feels playful, and makes using it feel comfortable and enjoyable.
Viewing and listening to media
There can be up to four images in a toot. Alternatively, there can be audio (with an optional thumbnail image), video with audio, or silent video (such as an animated GIF).
Images, as shown in the screenshots, are dealt with in different ways by the apps, especially when there is more than one in a toot, and I’m not sure I could argue that any approach is better than the others. In Mercury, Metatext, Toot! and Tootle, alt text is displayed beneath (or sometimes partly overlaying) an image when it is enlarged. In Mast, you can only see the alt text by long-pressing on an image in the context of a toot (not when it is enlarged). As far as I can tell, Mastodon and tooot don’t display alt text.
Audio in toots can be played by all the apps except Mastodon and Tootle. Tootle does, however, show the thumbnail image! Only tooot shows the image and plays the audio. In Mast and Mercury, note that there is no sound when your iPhone is in silent mode. (The same applies to videos with audio in those two apps.) Mast and Metatext have standard controls for moving to different parts of the audio in their full-screen audio plays. Mercury lets you play audio within the timeline, and has a slidable bar showing how far through the audio you are.
Silent videos in a timeline play automatically on a loop in all the apps except Mast and Tootle. Tapping on a silent video in any of the apps enlarges it to the full screen width. Mast and Tootle use the standard iOS player for this, these two apps alone giving you controls for moving backwards and forwards through a silent video.
Only Metatext has silent auto-play in the timeline for video with audio, and it moves particularly smoothly between full screen and in-timeline views for both kinds of video. Toot! also has fluid transitions for video, but doesn’t keep the place between different views. All the apps except Toot! use the standard iOS player for video with audio.
Support for alt text with audio and video is patchier than for images (but I haven’t checked whether it is available in VoiceOver in either case). Metatext displays alt text for silent video only. Tootle shows the alt text for audio (for which it only displays the thumbnail!). Only Toot! displays alt text (in full screen) for audio and both kinds of video.
Mastodon allows media to be marked as sensitive, so that it is hidden or (in the case of images) blurred by default. And it also allows toots to be flagged with a content warning, hiding the main text. In Mast, a toot with a content warning takes up as much screen space as it would if the whole toot were there: it is effectively covered by a labelled black rectangle. (This probably explains why the screenreader reads the covered text anyway.) A similar approach (but without screenreader issues as far as I’m aware) is taken by Mastodon, Mercury and Toot!, but the other apps use a variable amount of screen space for a toot depending on whether the content is shown or hidden. Metatext’s buttons for content warnings feel very intrusive, dominating the timeline. All the apps except Mast allow you to hide material again after revealing it if you wish.
Interacting with toots
Sometimes you’ll come across toots in languages that you don’t understand. Only Mast offers anything like the convenience of Twitter’s machine-translation option. I’m not sure what it uses behind the scenes, but it seems effective, and readily copes with toots that switch languages. (It can also translate bios in profiles.) Mercury offers a translate option for toots, but this opens a web page in Safari, with the text being provided to Russian search engine Yandex, which typically tries to translate the text into Russian in the first place! If the text contains an apostrophe, only the text before this is copied to the translation site. In Mastodon, Metatext and Tootle, you can select some text (e.g. in a toot in detail view) and use the iOS translate option. This is a little clunky, but better than nothing. tooot and Toot! only allow you to copy the whole text of a toot, which you could then paste into the translation tool of your choice. Not exactly handy though.
All the apps have reply, boost and favourite buttons, which work pretty much as you’d expect. Metatext, Toot! and Tootle’s buttons have a bonus feature: if you long-press them, you get a menu asking which account you’d like to use to reply, boost or favourite. This is extremely convenient if you have more than one account. And in Toot!, you get the same menu when you tap on a button if you’re viewing an instance that you’re not logged in to.
Composing toots and threads
The toot buttons in tooot, Toot! and Tootle sit a little incongruously on the bar at the bottom of the screen (the other buttons there being for different views within the app rather than actions). Toot!’s button uniquely pops up a menu asking if you’d like to start with text, an existing image, or a photo taken using your phone’s camera. Given that most of us probably start with text most of the time, this feels like an unneeded extra step on the way to composing a toot. A minor quibble though. Mast, Mastodon and Mercury all have their toot buttons in the top right corner, while Metatext’s hovers over the bottom right corner, but not right at the bottom.
Whether you are launching a completely fresh toot out of the blue or replying to an existing one makes little difference at this stage, except that replies are usually pre-filled with mentions of the person or people you’re replying to (not in Mast). All the apps have a box for you to type, paste or speak into. They all show either the number of characters you’ve used so far or the number remaining of the maximum 500. (I believe some instances allow 1000 characters here.) And all except Tootle have some way of indicating when you’ve gone over the limit. That’s because in Tootle, you simply can’t exceed the limit. If you’re typing, it won’t accept another character beyond the 500th. If pasting or dictating text would take you over the limit, none of what you’ve pasted or dictated is included.
Tootle also counts characters a little differently: like Twitter, it treats emojis as two characters long (because their Unicode representations do in fact take more space to store). All the other apps (correctly for Mastodon) treat emojis as single characters. Tootle is joined by tooot in erroneously counting other Unicode characters according to their storage requirements.
Emojos are instance-specific custom emojis, some animated, which are represented in toots by names between a pair of colons. These appear to take up whatever space their name takes up, and you can use them either by choosing them from an emojo picker, or by typing their name. Metatext handily offers visual autocompletion suggestions as you type, which can make finding the right emojo that much easier.
Regardless of their actual length, all URLs in Mastodon are treated as if they were 23 characters long (and use of URL shorteners is officially discouraged). Mast, Mercury and Tootle all fail to count URLs correctly.
Finally, on the topic of counting, only the local part of a username (e.g. the ‘@transponderings’ of ‘@email@example.com’) is supposed to count towards your character allowance. Only Mercury, tooot and Toot! get this right. All the apps, incidentally, offer completion suggestions as you type usernames. Tootle’s seems to have less coverage than the others though.
While all the apps allow you to reply to toots you have written, only Metatext and Toot! let you write a thread of toots to be tooted more or less simultaneously. Writing long threads is arguably less useful on Mastodon than on Twitter, given that single toots can be much longer than tweets, but there may be times when it will be convenient. Unlike Twitter’s threads, a thread of your own toots can occur even in reply to someone else’s toot. Threads aren’t treated in a special way by Mastodon though: this is simply a convenience feature in these two apps.
Adding media to toots
Only Mast, Metatext and Toot! allow you to paste images in from elsewhere, but in all seven apps you can choose an image from your photo library. And when it comes to videos, only Toot! lets you paste a copied video into your toot. And none of the apps seem to let you paste audio!
In fact, only Mast and Metatext support inclusion of audio in toots. And only Metatext lets you add alt text to audio, or mark audio as sensitive media. Neither app supports the full range of audio formats that Mastodon supports.
Mast, Mastodon and Metatext allow you to browse for files containing images and video, whereas the other apps limit you to the Photos library on your iPhone.
When it comes to video, Mercury, tooot and Toot! all work well. But I had trouble posting videos from both Mast (which was taking forever) and Mastodon (which didn’t seem to want me to toot while there was video attached). I didn’t investigate this any further. Mastodon (if only it worked!), Mercury and Toot! let you add alt text to video. Only tooot and Toot! let you mark video as sensitive media.
Mastodon’s delete-and-redraft capability (introduced in June 2019) will be the envy of many people stuck on Twitter, as it’s very much like the oft-requested edit button. All the apps except Mastodon and Tootle support this.
In most apps, you can set the visibility of a toot to public, unlisted, followers or direct. However, thanks to the developer’s stance on Local and Federated timelines, you can’t create unlisted toots in Mastodon. This is a pity, particularly as I have seen a number of people recommending that toots in a thread after the first should be unlisted, as a courtesy, so as not to clutter up other people’s timelines.
All the apps allow you to add content warnings to toots (called spoilers in Mercury and tooot – and I suppose it makes sense to use them for both purposes).
All the apps apart from Tootle also allow you to include polls in your toots. Unlike Twitter’s polls, these can be set up so respondents can pick more than one of the two to four options. However, the official Mastodon app only allows single-choice polls.
Toots can be scheduled for later publication – they are uploaded to your instance immediately, but held back until a specified date/time. Of the apps reviewed, only Mast and Mercury support this.
When you are composing a toot (or a thread of toots) and tap elsewhere in the app, Mast, Mercury, tooot and Tootle all do what you’d expect if you’ve come from Twitter: they ask if you want to save your draft. In Mast, tooot and Tootle, there are buttons in the compose window to allow you to pick a draft from where you left off. In Mercury, you need to open the draft from the drafts ‘timeline’.
None of the remaining apps have a draft facility. At least Mastodon warns you that you’re about to discard your draft. Metatext and Toot! unceremoniously discard whatever you’ve been writing, whether a single toot or perhaps even a lengthy thread! Be very careful!
Mercury allows you to select video alongside other media from the Photos library. It will attempt to toot and erroneously state that it has succeeded. Mastodon also allows you to do select an untootable selection of media items, but it fails to make sense of the video in that case, before you toot. This is the only case I’ve come across where one of the apps has crashed though.
Just two of the apps, as far as I can tell, show announcements from your instance admin. Because these are pretty rare, I’m not sure if they appear elsewhere in other apps. In Metatext, announcements are available at the top right of the main ‘Timelines’ view. In tooot, you can find them under your profile.
Aside from these announcements and the special highlighting of new direct messages in Toot! that was noted earlier, each of the apps maintains a running list of notifications including mentions, follows (and follow requests), boosts, favourites and poll updates – yes, unlike in Twitter, you can be notified when a poll you’ve participated in ends!
In all but one of the apps, you can see your notifications by tapping the bell icon at the bottom of the screen. In Mercury, the notifications view is found among the timelines that you select from in the list that slides in from the left.
Mercury and Toot! have app settings to choose which kinds of notifications to receive. I presume (though I haven’t had the chance to test it) that these don’t only affect the notifications view, but also the live notifications that pop up if you’ve enabled them in your iPhone settings.
In tooot, if you tap on the filter button, you can choose to view or not view each of six types of notification. Mast also has a filter button for six types of notification, but you can only choose to few one type or all.
Mastodon, Metatext and Tootle offer a simple tabbed view giving a choice between all notifications and just mentions (also just follows, and ‘others’, in Tootle). Settings in each of these apps also offer finer control over the kinds of notifications you receive.
Only Tootle takes things to the next level in terms of interaction between the in-app notifications and iPhone notifications, with independent control over how mentions, boosts, favourites and follows are brought to your attention both inside and outside the app.
Neither the apps here nor the Twitter app do a particularly good job of showing you which notifications you have not yet seen. But one thing I miss from Twitter is the consolidation of notifications. It would be really good to know that 11 people had favourited a toot rather than knowing separately that A, B, C, … and K had favourited it. (On the flip side, the detail in Mastodon does mean that each favourite and boost has a time stamp, so you can tell when they all happened, which I suppose might be nice to know sometimes.)
According to the App Store, Mastodon, Metatext, Mercury and Toot! do not collect any data from app users. Zhiyuan Zheng, the developer of tooot, claims to collect ‘user content’, ‘identifiers’, ‘usage data’ and ‘diagnostics’ from app users, but ‘not linked to your identity’. (Oddly enough, tooot is also the only app to display a ‘privacy protection’ notice if you take a screenshot.) The developers of Mast and Tootle have not yet submitted privacy/data-handling policies to Apple.
Other bits and bobs
Five of the apps – Mast, Mercury, Metatext, tooot and Toot! – work in landscape orientation, though I’m unsure whether that’s ever going to be the best way to view Mastodon timelines. Still, if that’s your preference, it’s worth knowing.
There are other (non-screenreader-related) accessibility options in the apps’ settings, which I haven’t had time to explore here.
Three of the apps – Mast, Mastodon and Mercury – have additional menu items available from their icons on your iPhone’s home screen. From all three you can compose a toot, while two can take you straight to different timelines or other views. I’m not sure how useful this is.
All the apps feature in the ubiquitous iOS share menu, and their built-in share functionality is adequate for occasional use. If you frequently find yourself wanting to share things with your followers when you’re in other apps though, you might want to consider Linky for Twitter and Mastodon (£3.49). This allows you to use the iOS share menu to share text, photos etc. on Mastodon or Twitter, with markup options and various other features, and posting to multiple accounts simultaneously if required. (It doesn’t currently allow you to provide alt text for images, so you need to use the delete-and-redraft option subsequently to add this.)
Mast and Mercury both have iPhone widgets, but the former doesn’t really work, and the latter isn’t really particularly useful.
Tootle has a little play/pause button, which lets you see toots scrolling in continuously or else leave the timeline where you put it. The difference may only be noticeable on the Federated timeline!
Mastodon has an option to turn off animated emojis (there are a lot of instance-specific custom emojis in Mastodon), but it doesn’t work.
Mast and Tootle displays dates and times in US format regardless of the settings on your iPhone.
If you get fed up with looking at toots, Toot! has a couple of Easter eggs tucked away at the bottom of menus to keep you amused!
Summary – tl;dr
For various reasons, Fedi was eliminated from consideration at the Getting started stage (although I had also used it for a bit with my accounts, and didn’t find that it redeemed itself later on).
Mast’s search functionality is completely broken at this point, and many other aspects of the app are buggy. The app developer appears to have left it to rust, which is disappointing, as it does have one or two nice touches, notably the inclusion of in-app translation of bios and toots. But I can’t really recommend using this app at present.
The other six apps are all fairly straightforward to set up with accounts on one or more instances, most working in pretty much the same way. Metatext, Toot! and Tootle additionally let you have read-only access to publicly browsable instances alongside the instances you’ve signed up to.
Mercury has the clunkiest timeline support, while Toot!’s is definitely the coolest (and Toot! generally feels most fun to use of all the apps in general, with some delightful transitions). The official Mastodon app bizarrely doesn’t have a Federated timeline view at all.
While all apps support direct messages in your Home timeline, Mercury, Metatext, Toot! and Tootle also have filtered timelines that show just your direct messages.
All the apps have issues with VoiceOver accessibility, but Mastodon and Metatext probably fared better than the others (with the proviso that I’m not a regular screenreader user).
Scrolling through timelines of toots feels fairly comfortable in all apps, although Tootle can feel a little sluggish. Mercury has some nice swipe gestures, which reduce visual clutter in the timeline. Toot! shows conversation threading using (optionally colour-coded) connecting lines between toots.
Media support varies greatly among the apps. Metatext and Toot! probably come out on top, on balance, with Toot! being the only app to show alt text for all media types, and Metatext being the only app that allows you to compose toots with audio attachments.
Toot! and Tootle both make working with multiple instances easier, as you can reply, boost or favourite from another instance without leaving the instance you’re looking at.
Toot! is the only app that counts characters in toots correctly according to Mastodon’s rules when you’re composing a toot.
Both Metatext and Toot! have support for composing threads of toots. But beware: neither Metatext nor Toot will offer you any warning if you close a toot or thread you’re in the middle of composing. If you do that, it’s gone!
All the apps except Mastodon and Tootle support the delete-and-redraft feature, basically an edit button. (It preserves text, attachments, alt text, polls, visibility settings – everything except any replies, favourites or boosts.)
I’m not going to try to condense all this into a simple star rating, but I’ve personally found myself being most comfortable using Toot! and Metatext. Sadly, none of the apps do everything just right, and you may find the combination of features (and omissions and bugs) tips the balance in favour of one of the other apps. Some of the apps at least are being actively developed, so App Store reviews pointing out problems you’ve had might actually lead to changes being made.
Thanks to Heinz Skunk for pointing out that Metatext also has long-press reply, boost and favourite buttons for using an alternative instance.
Thanks to Avi for pointing out that Metatext does in fact indicate in their profile when someone is following you.
Thanks to Anna e só for pointing out that Toot! is problematic for low-vision users, as it doesn’t respect the iPhone text-size settings. I found that Tootle has the same issue.
Thanks to Camille for making me aware that Android’s Tusky app supports private notes on profiles. I had claimed before that none of the iOS apps did so because the Mastodon API didn’t support this. But I checked again and saw that it had been in the API since v3.2.0. (At the time of writing this review, Mastodon was at v3.5.2.)
Behind the scenes: the making of this blog post
As well as obtaining the eight apps (for the princely sum of £5.98, as noted), and tipping £0.89 for bonus functionality in one, I had to spend a fair bit of time researching the differences between the apps. I also invested in one or two additional tools to make the job of writing this a little easier. I used a 24-hour licence of Time.Graphics (£4.09) to make creating the timeline as hassle-free as possible – twice, in fact, because two of the apps were updated while I was writing it. And after a lot of searching (and skipping lots of web articles saying what I wanted to do wasn’t possible), I discovered KeyPad, a Mac app (£2.49 in-app purchase required) that lets me use the keyboard and trackpad on my MacBook to control my iPhone, meaning that, with a touch accessibility option turned on, videos could show where I’m tapping on the screen (but I didn’t actually use this in the end!).
I don’t mind spending a little less than £15 on this post. To be honest, it’s the time and the spoons involved that are more valuable to me. I don’t write blog posts for money, but in the hope that someone at least will find what I’ve written to be of value to them. If you have found this helpful, please like it if you’re able to, and if you can share it more widely, whether by tooting or tweeting a link, or by reblogging if you have a WordPress account, I’d really appreciate that. And if you do have a bit of spare cash, I’ll be extremely grateful for any tips received on my Ko-fi page! 😊