DEV Community

reapX
reapX

Posted on Edited on

1,182 Mastodon instances, and eight of them carry half the posts

The pitch for Mastodon is decentralisation: no single company owns the network, anyone
can run a server, and your account lives wherever you choose. That is true architecturally. It is
much less true in practice, and a sample of public posts shows how much less.

The concentration

Across 24,226 public posts collected from the network, the accounts posting them live on 1,182
distinct instances. That sounds like a healthy long tail until you count the posts per instance:

instance posts
mastodon.social 6,498
fosstodon.org 998
mastodon.world 855
hachyderm.io 822
infosec.exchange 812
mstdn.social 774
mas.to 715
techhub.social 684

Mastodon.social alone accounts for 26.9% of the posts. Take the top eight instances together and
you have crossed 50%. So a network with 1,182 servers in this sample routes half its visible
traffic through eight of them, and a quarter through the flagship instance the project itself
runs.

This is not a criticism of the design. It is what happens when signup defaults exist and network
effects are real. But if you are building anything that treats the fediverse as genuinely
distributed infrastructure, this is the number that should shape your rate limiting, your
caching, and your assumptions about what happens when one host has a bad day.

A quarter of the posts are bots

The accountIsBot field is set by account owners on their own profiles, and 6,051 of the 24,226
posts come from accounts that have set it. That is 25.0%.

I find this the most useful single column in the dataset, and it is worth understanding what it
does and does not mean. It is self declared, so it undercounts: nothing stops an unmarked
automation account from posting. But it is also honestly used, because the fediverse culture
around bot labelling is stronger than most networks, and instances will suspend accounts that
automate without declaring it. Treat it as a reliable floor rather than a true count.

For anyone sampling the network for research or sentiment work, a quarter of your corpus being
declared automation is not a rounding error. Filtering on that one boolean changes what you are
measuring.

Language, and the English default

Post language, as declared on the status:

language posts
en 18,377
de 1,247
fr 597
es 475
ja 352
ko 315
ru 271
pt 202

German being second by a clear margin is the fediverse showing its history. The network's early
adoption was disproportionately German speaking and the instance list still reflects it, which is
not what you would predict from any other social platform's language distribution.

One more structural detail: every single post in the sample carries visibility: public. That is
a property of how public timelines work rather than a finding about user behaviour, but it is
worth stating plainly, because it means nothing in this data represents followers only or
unlisted posts. You are looking at the public square and nothing else.

What a single account page looks like

Posts are grouped per account handle, so one page is one account's observed posts. As an example,
https://reapx.dev/data/mastodon-scraper/mastodon-social-qasimrashid/ holds 3 observations
gathered across 3 runs, and the account level fields on it read:

accountAcct         QasimRashid@mastodon.social
accountDisplayName  Qasim Rashid, Esq.
accountFollowers    92218
accountFollowing    106
accountStatusCount  4537
accountCreatedAt    2022-10-30
accountIsBot        False
Enter fullscreen mode Exit fullscreen mode

That follower to following ratio, 92,218 against 106, is the signature of a broadcast account
rather than a conversational one, and it is computable for every account in the set without
fetching anything extra. Each row also carries the post content, its creation timestamp,
favourites and reblog counts, hashtags, and any link the post pointed at.

Getting at it

Account pages are indexed at https://reapx.dev/data/mastodon-scraper/, keyed on the
instance and handle together, since a username is only unique within its instance. Every page
names the runs behind it. The whole collection sits at
https://huggingface.co/datasets/reapxdev/mastodon-scraper if you would rather compute over it
than browse it, which is what I did for the instance and language counts above.

Top comments (0)