M SwapToMartech

team-chat

Slack alternatives: what each free edition actually caps

By Chris Li, Editor Last revisited How we rank

Slack Pro is $87 per seat per year. A self-hosted chat server is about $600 a year. That means the swap is a loss below 7 seats — so this page is about retention limits, mobile push paywalls, and the seat count where the arithmetic finally flips.

Comparison table (live data)

GitHub metrics snapshot: 2026-09-08

Project Stars Activity

Slack's free tier gives you 90 days of message history. Several of the most-recommended self-hosted replacements give you less than that. Not less disk space, less usable history: Mattermost's free Entry mode stops indexing after 10,000 messages across the whole server, and Rocket.Chat's Community edition caps you at 100 concurrent users. The 90-day window is what sells Slack Pro, and it is what most "open-source Slack alternative" lists never check.

We priced the swap before writing anything. Slack Pro is $87 per seat per year, read from Slack's own pricing page. A self-hosted chat server, with a realistic allowance for patching and backups, is about $600 a year however many people use it. The result is uncomfortable for a site that earns hosting commissions:

SeatsSlack Pro / yrvs $600 self-host floorvs $408 floor (4 GB, realistic at this size)
1$87−$513−$321
3$261−$339−$147
10$870+$270+$462

At one and three seats, self-hosting costs several hundred dollars a year more than Slack. At ten seats there is a $270 gap, which our scoring model grades C — positive, but too thin to justify a migration, and section 2 shows how it disappears. So this is not a savings guide. It is the retention and notification arithmetic, and the seat count where switching becomes defensible.

1. What each free edition actually caps

Slack Pro exists to sell unlimited searchable history, so that is the capability to compare against. Everything below was read from vendor docs on 28 July 2026.

Free editionSearchable historyThe binding limit
Slack Free (the baseline)Last 90 days90 days of everything, plus 10 app integrations
Mattermost Entry10,000 messages, server-wideOlder messages stay in the database but are not viewable or searchable; 10,000 pushes/mo; 40-minute calls; no HA
Mattermost Team EditionUnlimited (no documented cap)No SSO, and the vendor says SSO is being removed from Team Edition
Rocket.Chat CommunityUnlimited100 concurrent users; 10,000 pushes/mo; limited apps
Zulip FreeUnlimitedMobile push is "limited"; SSO and compliance exports are self-managed
Synapse / ESS CommunityUnlimited~100 users, non-commercial framing
Stoat (formerly Revolt)UnlimitedOfficial mobile clients do not support self-hosted instances

The Mattermost row is the one that should stop a migration. Mattermost's own editions page limits Entry — the free mode of the Enterprise binary, which is what a default install gives you — to "10,000 Channel messages history across all channels (older messages remain in the database but aren't viewable or searchable)." Not per channel. Across all channels. A ten-person team in a busy quarter passes that in weeks, and then search quietly stops finding things. "Unlimited search history" is a paid Professional feature on the same page.

You can avoid the cap with Team Edition, which the same page calls "free-to-use, open source … licensed under MIT" and intended for teams under 250 activated users "where single sign-on (SSO) is not required." The same paragraph adds it "is not recommended for government or sensitive commercial workloads," and elsewhere: "SSO is being removed from the Team Edition."

Zulip is the exception, and it deserves the credit. Unlimited searchable history on every self-hosted tier including Free, unlimited users, and — verified by reading the LICENSE file rather than the badge — Apache-2.0 across the whole repository with no enterprise subtree.

2. Mobile push is the hidden paywall

This is the constraint that decides the question, and we have not seen it priced anywhere else. Apple and Google only deliver a push notification for an app signed with that app's own certificates. A self-hosted server cannot sign mobile apps it did not publish, so it has two options: relay through the vendor's service, or ship your own apps. Three of the four candidates below meter or paywall the relay.

  • Mattermost — the hosted push service (HPNS) is for "Mattermost Enterprise, Professional, and Cloud customers." Free Entry gets 10,000 pushes a month. HPNS "only works with pre-built apps Mattermost deploys through the Apple App Store and Google Play Store," so running your own proxy means signing the apps yourself and obtaining push certificates for both platforms.
  • Rocket.Chatthe push docs: "Community workspaces include up to 10,000 free push notifications per month." And: "Once the monthly quota is exhausted, Rocket.Chat stops sending push notifications." The self-configured alternative "requires you to run your own push server and white-label the mobile app."
  • Zulip — a self-hosted server registers with Zulip's Mobile Push Notification Service, and "Organizations with more than 10 users must upgrade their plan in order to access" it. At 11 seats that is Basic at $42 per seat per year, so $462 a year.
  • Stoat (the rebranded Revolt) — its self-hosted README lists iOS and Android notifications as requiring Apple and Google developer accounts, and notes that "most official clients do not support self-hosted instances." In practice you get the web client.

The do-it-yourself route has a published price: the Apple Developer Program is 99 USD a year and Google Play registration a one-time 25 USD. Maintaining two white-labelled mobile apps on top of that is far more than 99 dollars of work.

Now redo the ten-seat sum. Zulip Basic for working push at 10 seats is $420 a year, turning a +$270 advantage into −$150. Grade D. Take the DIY route and the gap is +$171 before any labour — and the labour is the real cost. Or accept no mobile notifications, which is not a Slack replacement for a working team, and we will not pretend otherwise.

3. The licence and CVE picture, including the parts that hurt

We read every LICENSE file directly rather than trusting GitHub's badge, which is wrong here in an interesting way: three of these repositories report NOASSERTION, reading as "unlicensed" when the reality is several licences in one tree.

Mattermost is a multi-licence repository: the source is AGPL-3.0 or commercial at the vendor's grant, binaries Mattermost Inc compiles are MIT, several directories are Apache-2.0, and server/enterprise/ carries the Mattermost Source Available License, where production use requires a paid subscription. The honest label for the project as a whole is not OSI-licensed, even though Team Edition alone is MIT. Rocket.Chat is MIT (Expat) with its ee/ directories excluded and placed under the Rocket.Chat Enterprise Edition License. Synapse and element-web are AGPL-3.0, with a commercial licence offered alongside rather than a paywalled subtree.

On maintenance, none of these projects is coasting. Measured against the GitHub API on 28 July 2026: Rocket.Chat roughly 236 commits in four weeks, Mattermost 196, Zulip 142, Synapse 74. Nothing is archived or stalled. That is the strongest part of the case for these projects, and it does not help the money argument.

Security cuts the other way. Counts come from an NVD keyword search, which over-collects slightly because it also catches desktop and mobile clients — read them as an order of magnitude, not an audit.

ProjectCVEs, last 12 monthsHighest CVSS in that window
Mattermost1849.9 — OAuth code-exchange token not verified
Rocket.Chat229.8 — NoSQL injection leading to account takeover
Zulip57.1
Synapse9.2 (February 2026)

Mattermost and Rocket.Chat both belong in the "check the CVEs before you deploy" category, and our health rules cap both at grade B on that basis alone — a cap that never matters, because the money never reaches B. The tempo is the real signal: two of Mattermost's six most recent CVEs were published the day before this check.

Mostly: nobody will tell you.

VendorPaid self-hosted tierUSD / seat / yr
ZulipBasic$42 ($3.50/user/mo, billed monthly)
ZulipBusiness$80.04 ($6.67/user/mo annual, 25-user minimum)
MattermostProfessional / Enterpriseundisclosed
Rocket.ChatCommercial / Government / Defenseundisclosed
ElementESS Proundisclosed ("priced per seat/month")

Those are not omissions on our part. Both Mattermost pricing pages contain no dollar figures at all — every tier is a Contact Sales button. Rocket.Chat's pricing URL redirects to a plans page with no currency symbols, only "Get pricing" and "Talk to sales." Element's says "priced per seat/month" without a number. We do not use third-party price aggregators, so the honest answer is undisclosed rather than an estimate you might budget against.

One more cost the self-host column hides: Slack Pro includes huddles, and Zulip does not implement calls at all — its own feature matrix tells you to choose a provider such as Zoom or Jitsi, so you either keep paying someone else or self-host a second product.

5. The verdict, and the seat count that changes it

Below 7 seats, stay on Slack. That is not a hedge, it is arithmetic: $600 a year of server and upkeep divided by $87 per seat means Slack Pro only reaches the self-hosting floor at 7 seats ($609). Below that you pay more money for more work. And if the reason you are looking is the 90-day history window, the free tier's 90 days is more usable history than Mattermost Entry's 10,000-message cap.

7 seats is break-even, not a win. Break-even on cash while you take on patching, push plumbing, backups and a CVE feed is a bad trade. The gap only becomes worth the operational risk around 30 seats ($2,610), where the annual difference clears $2,000 and a migration can absorb a bad month.

If you are above that line, self-host Zulip. It is the recommendation on the merits, not on price: Apache-2.0 with no enterprise subtree, unlimited searchable history free, the cleanest CVE record of the group by a wide margin, and roughly 142 commits in the four weeks before we checked. Budget Basic at $42 per seat per year if your team is over 10 people and needs mobile notifications. Zulip's threaded model is a genuine product difference from Slack's channels rather than a clone, so trial it first.

Do not switch to save money at 3 seats. That is the most common recommendation in this category and, at $261 a year against a $600 floor, it is $339 wrong.

Sources: Slack's pricing page (fetched 25 July 2026; USD via a US-egress proxy, because Slack keys currency to request IP); Mattermost's editions, environment-configuration and push-proxy documentation; Rocket.Chat's push documentation; Zulip's plans page, mobile-push documentation and production requirements; LICENSE files read directly from raw.githubusercontent.com for mattermost/mattermost, RocketChat/Rocket.Chat, zulip/zulip, element-hq/synapse, element-hq/element-web and stoatchat/stoatchat; GitHub REST API repository metrics; NVD CVE keyword searches; Apple and Google developer registration pages. All fetched 25–28 July 2026. Paid self-hosted per-seat pricing for Mattermost, Rocket.Chat and Element is undisclosed by those vendors and is not estimated here.

Disclosure: we earn nothing from Slack, and nothing from any project compared here. This guide's conclusion is that most readers should keep paying Slack, which earns us nothing either.

Ready to deploy?

The self-host options above all run cleanly on modern VPS providers. Our recommended stack:

We earn a commission from DigitalOcean, Cloudways and Vultr when you sign up through the links above, and from some links in the article. We only include hosts we run production workloads on. Prices shown are the vendors' published rates; clicking through does not change what you pay. The OSS rankings above are independent of this section.

Related guides