Mastodon
The decentralized social web. Basic metrics only, but at least it's open source.
Mastodon is part of the Fediverse. It's decentralized, which means "analytics" is a loose concept. Each instance runs independently, and there's no central authority tracking impressions or views.
Supported Content Types
- Toots (Posts): text with optional media. Up to 4 files.
- Mixed images and videos allowed, but only 1 video max.
Quirks & Gotchas
Terminology
- Likes = Favourites (British spelling, because Mastodon).
- Shares = Reblogs (like retweets, but federated).
- Posts = Toots (or "statuses" in the API, because naming things is hard).
Character Limits
Character limits are instance-dependent — most instances default to 500, but some allow more. We can't know in advance what your user's instance allows.
Media Limits
| Constraint | Value |
|---|---|
| Files | 0–4 (images and/or videos, mixed allowed) |
| Max videos | 1 |
| Video max size | 99 MB |
| Video aspect ratio | 1:3 to 1:1 |
| Max images | 4 |
| Image max size | 16 MB each |
Text & Field Limits
| Field | Limit |
|---|---|
text | Max 30,000 characters |
spoiler | Max 50 characters |
Post Options
Send Mastodon-specific options inside data.MASTODON.
| Field | Type | Description |
|---|---|---|
text | string | Status text. Instance limits vary; Bulkit accepts up to 30,000 characters. |
uploadIds | string[] | Up to 4 uploaded media files. Only 1 video is allowed. |
thumbnail | string | Optional thumbnail image URL uploaded through Bulkit. |
privacy | enum | PUBLIC, UNLISTED, PRIVATE, or DIRECT. |
spoiler | string | Content warning text. Max 50 characters. |
{
"teamId": "team_123",
"title": "Mastodon update",
"status": "SCHEDULED",
"postDate": "2026-06-01T15:00:00.000Z",
"socialAccountTypes": ["MASTODON"],
"data": {
"MASTODON": {
"text": "Shipping a small but useful update today.",
"privacy": "PUBLIC",
"spoiler": "Product update"
}
}
}Analytics
Mastodon has very limited analytics capabilities. Being decentralized means there's no central tracking of impressions or views.
Profile Analytics
Period: Snapshot.
| Metric | Description | Note |
|---|---|---|
impressions | — | Returns 0 (not available) |
impressionsUnique | — | Returns 0 (not available) |
views | — | Returns 0 (not available) |
viewsUnique | — | Returns 0 (not available) |
likes | — | Returns 0 (not available at profile level) |
comments | — | Returns 0 (not available at profile level) |
postCount | Total toots | |
followers | Followers | |
following | Following |
Post Analytics
Period: Lifetime.
| Metric | Description | Note |
|---|---|---|
impressions | — | Returns 0 (not available) |
impressionsUnique | — | Returns 0 (not available) |
views | — | Returns 0 (not available) |
viewsUnique | — | Returns 0 (not available) |
likes | Favourites | |
comments | Replies | |
shares | Reblogs | |
saves | — | Returns 0 (not available) |
Quirks
- No impression or view metrics. The Fediverse doesn't track eyeballs the way corporate social media does.
- Only basic engagement metrics (favourites, replies, reblogs) are available per post.
- Profile-level engagement is not aggregated by Mastodon's API.
- This is by design, not a bug. Privacy-focused platform = limited tracking.