Unlimited history

Your archive shouldn't expire on day 91.

Fluid Chat keeps every message readable and searchable, forever, on the free plan — because there is no other plan. Full-text search with real operators runs over all of it, not a rolling 90-day window.

Unlimited history, hosted or self-hosted, at $0.

message history
searchable range
90
days on Slack's free plan
$0
to keep all of it

The single most annoying sentence in team chat is “this message is not available on your plan.” You know the conversation happened. You were in it. You can even remember roughly what was said, which is the worst possible amount of remembering.

Fluid Chat has no history limit on any plan, because it has no plans. Every message you have ever sent stays readable and searchable, whether you self-host it or use the free hosted version.

What the 90-day limit actually does

Slack's free plan gives you access to roughly the last 90 days of messages and files. The older material isn't deleted — that's the important nuance, and also the frustrating one. It's retained, and it's yours, and you can't read it. Upgrading restores access; not upgrading means the archive is a rumour.

The practical effects show up in a fairly predictable order:

  1. 1Search stops being useful. Search is only valuable in proportion to how far back it reaches. A 90-day window turns your search box into a recent-activity filter.
  2. 2Onboarding gets worse. New hires can't read how the current architecture was argued into existence, so they ask, and someone senior re-explains it from memory. Every quarter.
  3. 3Decisions get relitigated. “Didn't we decide this already?” is unanswerable when the deciding happened in April.
  4. 4Incident history evaporates. The best runbook your team has is the thread from the last time it broke.
  5. 5People start hoarding. Screenshots in docs, pasted transcripts, a personal folder of “important threads.” This is what an archive looks like when the archive doesn't work.

Unlimited history, and unlimited search over it

Keeping messages is the easy half. A lot of tools will happily store years of chat and then hand you a search box that only really works on the last few weeks. Fluid runs Postgres full-text search across your entire history, with the operators you'd expect:

  • in:#channel — scope to one channel.
  • from:@person — scope to one human.
  • has:file and has:link — find the thing that was attached, not the chat around it.
  • is:pinned — the messages someone already thought were important.
  • before:, after:, during: — date ranges, over all of it, not over a rolling window.
  • Sort by recency or relevance, depending on whether you're trying to remember or trying to find.

Because search lives in the same Postgres as the messages, there's no separate search cluster to size, fund, or watch fall out of sync. That's a large part of why unlimited history is affordable to give away here.

Side by side

Fluid ChatSlack FreeSlack paid
Message history you can readAll of itLast ~90 daysUnlimited
Search rangeEntire historySame ~90-day windowEntire history
Search operatorsYesYesYes
Cost per person$0$0Monthly, per seat
Custom retention policiesIncludedNoYes
Full data exportIncludedLimitedYes
Where the archive livesYour server, or oursTheir cloudTheir cloud

Slack plan details are summarised from Slack's published plans and can change — check slack.com/pricing for current terms. Slack is a trademark of Salesforce; Fluid Chat is not affiliated with them.

Unlimited history is a retention decision, not a hoarding one

Worth saying plainly: keeping everything forever is a choice, and for some teams it's the wrong one. Legal, HR and regulated environments frequently want the opposite — messages that expire on a schedule.

So Fluid gives you retention policies on the free plan, alongside unlimited storage. Unlimited means the tool doesn't impose a limit; it doesn't mean you can't. The difference between those two sentences is the entire argument, and it's the difference between an archive you designed and a limit you're renting your way around.

  • Keep everything indefinitely, if that's your policy.
  • Set a retention window per workspace and let the worker enforce it.
  • Export the whole archive to JSONL, CSV and a file manifest whenever you want a copy that doesn't depend on us at all.

Stop paying rent on your own conversations.

Unlimited history is in the free plan because there is no other plan. Start a workspace, or run it on your own Postgres.

Moving an existing archive

The honest state of play: there is no Slack importer yet. Fluid exports its own data cleanly — JSONL, CSV and a file manifest — so getting data out is solved. Getting Slack's export in is the open piece, and it's a genuinely good first contribution if you need it.

What most teams do in the meantime is run the export from Slack for safekeeping, start fresh in Fluid, and keep the old archive as a searchable file rather than a live workspace. Not elegant. Considerably better than losing April.

FAQ

History limits, explained.

Does Slack delete messages after 90 days on the free plan?

No — they're hidden rather than deleted. Slack's free plan gives access to roughly the last 90 days of messages and files; older content is retained but not visible or searchable until the workspace moves to a paid plan. Check slack.com/pricing for current terms, as plan details change.

Which Slack alternatives have unlimited message history for free?

Fluid Chat keeps unlimited history on its free plan, hosted or self-hosted, and searches all of it. Self-hosted Mattermost, Rocket.Chat and Zulip also store unlimited history since you own the database, though each reserves some admin features for paid tiers.

Is search limited to recent messages in Fluid Chat?

No. Postgres full-text search runs over your entire history with operators including in:#channel, from:@person, has:file, has:link, is:pinned and before:/after:/during: date ranges, sortable by recency or relevance.

Can I set messages to expire instead?

Yes. Message retention policies are included on the free plan, so you can keep everything indefinitely or expire messages on a schedule. Unlimited means the tool imposes no limit, not that you can't impose your own.

Can I import my Slack history into Fluid Chat?

Not yet — a Slack importer isn't built. Fluid exports its own data as JSONL, CSV and a file manifest, so getting data out is solved; getting Slack's archive in is the open piece and a good first contribution.

Does unlimited history cost extra?

No. Fluid Chat is $0 hosted or self-hosted, and unlimited history is part of the free product because there is no paid product. Self-hosted, your only storage cost is the disk under your own Postgres.

Something not covered? Open an issue.

Keep the whole thing. Search the whole thing.

Unlimited history isn't a tier here. Start a free workspace, or run Fluid on your own Postgres and keep the archive on your own disk.