FediSuite 2.3.0: What's New and All Functions at a Glance
First-run setup, campaign and label reports, legal pages for operators and a summary of every function of FediSuite
By Christin Löhner (opens in a new tab) 17 min read
FediSuite 2.3.0 was released on 12 November 2026. It brings a guided first-run setup, a rebuilt analytics section with reports for campaigns and labels, editable legal pages for operators and fixes for connecting instances that sit behind bot protection. This article describes the changes one by one and then sums up every function of FediSuite, from the composer to self-hosting. If you do not know FediSuite yet, you get the complete picture. If you already use it, you find what has happened since version 2.0.
By FediSuite's versioning rules 2.3.0 is a production release: the second digit of the version went up, and that is the moment production instances should update. The full list of every change is in the changelog.
What is new in FediSuite 2.3.0
Guided first-run setup
Anyone who signs in for the first time is guided through a short setup: a welcome screen, connecting the first Fediverse account through the usual connection flow, optionally time zone, language and color scheme, and a summary. The setup can be postponed and continued on any device. Existing users do not see it again, and anyone who already has access to an account through a team can carry on without connecting one of their own. The “Setup help” link in the footer opens the flow again later.
Pages that need an account, meaning dashboard, analytics, notifications, archive, calendar, posts and composer, now show a clear “Connect account” page while there is none. Error messages no longer appear there. The start page says that missing figures are normal while the first import of an account is still running.
Analytics as a section of its own
Analytics has its own submenu now: the overview, the campaign comparison, the campaign report, the label comparison and the label report. Campaigns and labels of teams are evaluated for every member who may read the connected accounts.
Campaigns with goals, status and reports
A campaign can now have goals for posts, reach and interactions. The campaign report shows how far the campaign has come, with a cumulative timeline, the accounts and labels involved, the best and the weakest posts and the comparison with the other posts and with the period before. The goal cards of a running campaign show whether the goals are on course at the pace so far. If some posts have no measured values, the goal card warns that progress for reach or interactions may come out too low.
Every campaign has a status: draft, running, paused or completed. There is also an optional goal from the list awareness, community, website visits, followers, information or custom. Running campaigns still show as upcoming, active or ended by their dates. The campaign list shows status, goal and the progress of the published posts towards the post goal, and it counts published and planned posts separately. The report names the goal of the campaign and the figures that matter for it.
The baseline for comparison is now made of posts that belong to no campaign. Posts that were sent from outside FediSuite are reported apart from untagged ones. A campaign can be duplicated with its goals, labels and scope, and the copy starts as a draft. The campaign comparison puts two to four campaigns side by side, measure by measure.
Tracking links with UTM parameters
The campaign report builds tracking links with UTM parameters. A campaign can store defaults for source, medium and campaign value and list its own domains. Links to those domains get the parameters automatically when a post of the campaign is published, and the composer shows how many links are affected. The defaults are part of the data export and of the move to another instance.
Label report
The label report compares labels across all accounts, shows how they develop and which pairs of labels are often assigned together. It also lists labels that were never used. Whoever deletes a label or a campaign now gets a warning first that the report is lost, with the advice to archive instead.
Exports and printing
Campaign and label reports can be exported as CSV and as raw data in JSON. The campaign report lists every measured post one by one, and the CSV files contain status, goal and tracking defaults. Every report page can be printed or saved as a PDF.
Reworked forms
Labels and campaigns have their own page for creating and editing now, and no narrow form column sits next to the list any more. Unsaved changes are checked when you leave the page. You choose the labels of a campaign in a search field with suggestions, and selected labels appear as badges inside the field. The field works with the keyboard and announces changes to screen readers. The label field of the composer uses the same search field and still creates a new label from typed text. The campaign form shows the basics first: name, goal, description, period, status and labels. Goal values, tracking defaults and own domains sit in folding advanced settings. The campaign choice in the composer no longer lists completed campaigns and marks drafts and paused campaigns.
For operators: legal pages, privacy, audit log
Admins now maintain the privacy policy and the imprint in the new “Legal pages” section of the admin area. Operator name, address, contact and details of data processing fill a German template, or each page is replaced by a text of your own. The pages are public at /?legal=privacy and /?legal=imprint. Registration requires accepting the privacy policy, and both pages are linked on the sign-in screen, in the footer and in the account menu.
The Liberapay donate button in the footer comes from the instance itself. FediSuite no longer loads images from liberapay.com and shields.io, so no visitor data goes to third parties. The audit log deletes entries after 30 days and writes one file per day. Plugins can no longer bring their own sign-in or registration, they only add functions and behavior inside FediSuite.
The page source now carries complete meta tags with description, author, website, repository and license, also as schema.org data. fediverse:creator for the developer and the project comes on top, so that Mastodon can attribute shared links correctly. The profile @FediSuite@lsbt.me is also linked in the footer and on the credits page.
Connecting instances
FediSuite now identifies itself to instances as FediSuite/<version> and no longer with a browser string. That helps with instances whose firewall or bot protection rejects browser-like clients, because those instances can be connected again. If an instance turns FediSuite away with “access denied” or a challenge page, the connection now says so plainly and asks the administrators of the instance to allow FediSuite. A challenge page is no longer taken for a Loops instance. A failed connection attempt leads back to FediSuite with an explanation: authorization refused, sign-in expired, access denied, bot protection or something else. The form puts the error at the address field, stacks on narrow screens and lets you cancel a stuck attempt.
Fixes
Importing a migration archive with a wrong recovery code or a damaged archive shows the explanatory message again. Campaign dates are limited to the years 2000 to 2100 and long timelines are capped, so absurd dates cannot produce huge reports. Reports count a published post only once, even if its row appears twice. Entries in the submenu of the sidebar no longer show stray bars on hover, and the links fill the whole row.
Development since version 2.0
The changes of 2.3.0 build on a series of releases that appeared within six weeks:
| Version | Date | Focus |
|---|---|---|
| 2.0.0 | 3 Oct 2026 | drafts, calendar, labels, campaigns, reuse, content and community analysis, encrypted credentials |
| 2.1.0 | 10 Oct 2026 | federation analysis |
| 2.1.1 | 24 Oct 2026 | public analytics cards, image editing in the composer |
| 2.1.2 | 26 Oct 2026 | moving to another instance |
| 2.2.0 | 9 Nov 2026 | teams, update notice for admins, scheduling to the minute |
| 2.2.1 | 9 Nov 2026 | accessibility to WCAG AA |
| 2.3.0 | 12 Nov 2026 | first-run setup, campaign and label reports, legal pages |
All functions of FediSuite at a glance
FediSuite is a one-person project: I develop it without a team and without venture capital, under the GPL-3.0, without advertising and without trackers in the app. The overview below follows the workflow of a post, from connecting the accounts to running the system.
Accounts and platforms
FediSuite connects more than 20 platforms: Mastodon, Pixelfed, Friendica, Pleroma, Akkoma, GoToSocial, Misskey with its forks Sharkey, Calckey, Firefish and Iceshrimp, PeerTube, Loops, vutuv and more. FediSuite recognizes the software and the abilities of an instance when you connect. Existing posts are imported in the background as far as the API of the platform hands them out, together with the follower history. You can connect any number of accounts on several instances and switch between them while you work. Bluesky is outside the Fediverse, and an optional plugin connects it too. The functions depend on what the platform and the instance provide, and the page about platforms lists what works where.
Writing in the composer
The composer writes one post for one or several accounts in one step. Character limit, media rules, content warning and visibility follow the strictest combination of all chosen targets, so a post arrives everywhere. Post language, order of media, alt text and image focus come with it. Alt text has a visible button on every image. Images in JPEG, PNG and WebP can be cropped, resized and re-encoded locally, one by one or with shared settings for several images. Before publishing or scheduling, FediSuite asks when media still lack alt text and leads straight to the missing description.
In supported networks FediSuite splits long texts into threads at paragraph, sentence or word boundaries. For Pleroma and Akkoma you pick the text format: plain text, Markdown or HTML. A post goes out at once or at a time you set to the minute in your own time zone. If sending fails for some accounts, you retry only those. The composer also shows up to five hints from the account's own data about text length, media, links and time, as well as similar posts of the last 60 days.
Planning and organizing
Drafts can be saved without a date, also for several accounts, with the stages Idea, In progress and Ready to plan. The composer saves changes by itself, and a draft is never published on its own. The calendar shows month and week, can be filtered by account, platform, status, label and campaign and moves scheduled posts by drag and drop with a question beforehand. It is a keyboard grid with arrow keys, and a visible switch shows it as a list.
You can send scheduled and failed posts at once or retry them, turn scheduled posts back into drafts and copy any post into a new draft. Labels are internal colored markers that are never published as hashtags. Campaigns give an action a frame of name, period, labels, goals and status. Both work as filters in the post list, the calendar and the archive and can be personal or shared with a team.
Archive and reuse
The archive searches the full text of every post FediSuite has ever seen for an account, including those that were never scheduled through FediSuite. The search finds matches in the middle of a word, so German compound words are found by their parts too. You filter by account, label and campaign and sort by date, interactions or estimated reach. An old post becomes a new draft on request. Posts that did clearly better than usual get the badge “Interesting again”, and drafts can be marked as evergreen. FediSuite never publishes anything from them on its own.
Analytics
The dashboard shows followers, posts, interactions and estimated reach with their history and the top posts by reach. Growth, interactions, interaction rate, hashtags and times as a heatmap of weekday and hour come on top. The “Content” tab compares posts with and without media or link, by text length, visibility, language and content warning. A difference appears only when enough posts exist and no single outlier explains it. Otherwise the tab says that there is no reliable difference.
The community analysis shows which accounts interact with your posts, which are new, which return and how high the return rate is. The “Federation” view shows which other instances send favourites, boosts and replies and how much of the resonance comes from outside your own instance. The tips derive concrete hints from the data of your account, each with comparison values, a recommendation, a next test and a note on how broad the data base is. Eight of them rest on net reach, among them the best time windows and weekdays, the question whether media or text posts travel further for you, a warning when your reach almost entirely comes from your own follower circle and a hint when reach falls.
How reach is calculated, with formula, worked examples and limits, is explained in the article Calculating Reach in the Fediverse. A short version of the method is on the page about reach analysis, and the best time to post has a page of its own.
Public analytics cards
If you want, you publish a public analytics card for every connected account and one more that adds up all accounts. Each card has a private preview, a page that search engines can read with Open Graph data and an image for social networks. It shows reach first and a trend line under every figure, and it says that these are Fediverse analytics and which platform the account comes from. The cards are voluntary and off by default.
Notifications
FediSuite loads the notifications of supported accounts and shows them in a section of their own, without a timeline having to be open. Depending on the platform these are favourites, boosts, mentions, new followers, follow requests and replies. For matching notifications you reply directly, like, mark them as read or open the post on the instance. Platforms without a notification interface, such as Loops, PeerTube and WordPress, name the reason.
Teams
Several people can work on the same accounts. Whoever connected an account assigns it to a team, and the members then see posts, drafts, calendar, archive, analytics and notifications, direct messages included. The roles are admin, editor and analyst: admins manage the team, editors write, publish and reply, analysts only read. Admins invite registered users by e-mail address. Only people who already have an account can be invited, so closed registration cannot be bypassed. Every FediSuite account can create one team, a team has at most ten members and an admin can send ten invitations per hour.
Labels and campaigns are personal or shared with a team. Every member sets a personal signature such as “(cl)” for each team, which is attached to every post on the accounts of the team and counts against the character limit in the composer. Public analytics cards can be published for team accounts, and the card goes offline at once when someone loses the role or leaves the team. The team features can be switched off with ENABLE_TEAMS.
Accessibility
FediSuite is built for keyboard and screen reader use, and a blind user has followed the operation in practice. There is no certificate. With version 2.2.1 FediSuite went through a large round against the criteria of the WCAG at level AA. Text, borders, buttons and chart colors reach the required contrast in the dark and in the light color scheme, and every control shows a visible focus ring. On narrow screens and at high zoom the sidebar becomes a menu with a drawer, so nothing scrolls sideways at 320 pixels.
Every page sets the title of the browser tab and moves the focus to its heading. Dialogs hold the focus, close with Escape and hand the focus back to their opener. Forms name their fields, mark required ones and tie error messages to the field. Charts and heatmaps have a text summary, a legend and a data table and do not rely on color alone. The color scheme follows the system until someone picks one, and increased contrast and forced colors are supported. The interface exists in German, English, Spanish, French and Italian, and languages with less than half of the texts translated do not appear in the list.
Security and privacy
The credentials of connected accounts are stored encrypted in the database, with a separate key that is required. If it is missing or wrong, the containers do not start. Verification and password reset tokens are stored only as SHA-256 digests, links expire after 24 hours and work once. Sign-ins expire after 30 days. Two-factor sign-in works with an authenticator app (TOTP), with recovery codes and, as a reserve, a code by e-mail. A list shows every device you are signed in on, and single sessions can be ended.
The GDPR data export creates a ZIP with the information under Article 15 and your data in readable and machine-readable form. Deleting your FediSuite account removes sign-in data, links, stored posts and statistics. Your Fediverse accounts and the posts published there stay untouched. The app runs without trackers and without advertising.
Moving to another instance
An encrypted archive takes along everything that can no longer be fetched from the platforms: posts, drafts, media with alt texts, labels, campaigns and preferences, plus the follower history, follow events and interactions of the connected accounts. Export and import run in the background with progress, a queue, cancellation and an e-mail for longer jobs. The finished export is downloaded by hand within 72 hours. The import can be repeated safely, because posts of accounts connected later are added without duplicates. Every refusal explains the reason and the next step. Team accounts and team content are not part of the move.
Self-hosting and operation
FediSuite runs with Docker Compose on your own infrastructure: the app, a PostgreSQL database and background workers, as a multi-arch image on Docker Hub. The workers publish scheduled posts, refresh posts and analytics and generate tips. When an instance reports limits, they postpone the requests. The admin area manages users, plugins and system information, shows a global notice in Markdown to all users of the instance and now contains the legal pages. Admins get an e-mail when a new FediSuite version is published, at most once a day, with the changelog and links to the update guide. Whole areas such as drafts, calendar, labels and campaigns, reuse, content and community analysis and teams can be switched off with an environment variable. Registration can be closed for a private instance. Operators can have their instance listed in the directory. The guide is the Docker installation.
Plugins, API, translations and Android
There has been a plugin system since version 1.2.4. Operators install and activate plugins in the admin area. A plugin can bring account connections, settings, pages of its own and widgets for the dashboard. The plugin API is documented, and the Bluesky connection is the first example. The HTTP API of the application is described in the API documentation. FediSuite is translated in the browser on Weblate, without Git and without a Forgejo account, and anyone can add a language. The Android app is native without a WebView and available through F-Droid, open source and without Google Play. Functionally it is behind the web interface, and a revision is planned.
Try FediSuite 2.3.0
The instance at app.fedisuite.com is free. On the instances page you create an account, connect your Mastodon account or an account on Pixelfed, Pleroma, GoToSocial, Friendica or another supported platform, and after the first import you see how your posts do. If you prefer to run FediSuite yourself, follow the Docker installation guide. Operators of an existing instance read the update guide before upgrading.
Tags
Share this post
Title, teaser, link and tags as hashtags are prepared for you. Nothing is sent until you press post in your own network.
More from the blog
11 min read
Calculating Reach in the Fediverse: Methods, Formula, Limits
The Fediverse has no impression counter. This article shows how to calculate reach anyway, which formula FediSuite and FediWings use and what it tells you about every post.