Slack

Can you export your entire Slack history?

What a Slack export actually contains, what each plan lets you take, why DMs are the complicated part, and what to do with the JSON once you have it.

· 4 min read

“Can I export everything?” is the question people ask right before they migrate, right after a legal request, or in the specific hour after someone reads an article about vendor lock-in. The answer for Slack is a qualified yes, and every qualification is worth understanding before you rely on it.

Export scope varies by plan and by workspace settings and has changed over time — treat what follows as the shape of the thing, and verify the specifics against Slack's current documentation for your plan.

What a standard export contains

The baseline export available to workspaces covers public channel content: messages, timestamps, user IDs, reactions, and references to uploaded files. It arrives as a zip of JSON, organised by channel and by day.

  • Public channel messages — the main body of the export.
  • Channel and user metadata — enough to reconstruct who said what, where.
  • File references — usually URLs pointing at the files rather than the files themselves, which matters more than it sounds.
  • Reactions, edits and thread structure — present in the JSON, if not in a form you'd want to read directly.

The parts with asterisks

Private channels and DMs

This is the big one. Exporting private channels and direct messages is not part of the standard export on every plan — access to it is generally tied to higher plans and to a formal request process, on the entirely reasonable grounds that letting any admin silently download everyone's DMs would be a privacy catastrophe.

So if your mental model is “I'll export everything and switch tools,” recalibrate: you may be exporting the public half of your workspace. For most migrations that's genuinely the important half — the institutional knowledge lives in channels — but it's not everything.

The 90-day window on free plans

An export gives you what the workspace can currently access. On a free plan, that's the visible window rather than the full history, so an export won't retrieve messages already behind the wall.

It's JSON, not an archive you can read

A Slack export is a preservation format, not a reading format. Nobody is browsing 2026-03-14.json for the deploy discussion. If anyone will need to actually read this later, budget for a viewer, a script, or an import into something else.

A workable export routine

  1. 1Decide what you need, honestly. Compliance retention and “I want to keep the good threads” are very different requirements with very different solutions.
  2. 2Check your plan's scope in Slack's current export documentation, especially for private channels and DMs.
  3. 3Run the export from workspace settings and download the zip.
  4. 4Fetch the actual files referenced in the JSON, rather than trusting the URLs to outlive the archive.
  5. 5Store it somewhere backed up with a retention policy attached. An export sitting on one laptop is a story about a laptop, not a backup.
  6. 6Verify it once. Open a file, find a message you remember, confirm it's there. Nobody does this and it's the only step that tells you whether any of it worked.

What good export looks like in a chat tool

Since this article is on the site of a competing product, here's the standard being argued for rather than a sales pitch. A chat platform's export is good when:

  • It's available on every plan, including the free one. Export gated behind a tier isn't a feature, it's a deposit.
  • It covers the whole workspace, with the privacy controls around DMs made explicit rather than implicit.
  • It includes the actual files, or a manifest that makes fetching them mechanical.
  • It produces something machine-readable and something human-readable — JSONL for tooling, CSV for the person who just wants a spreadsheet.
  • It's documented, so you can write against it without reverse-engineering.

For the record, Fluid Chat's export produces JSONL, CSV and a file manifest covering the whole workspace, and it's on the free plan — which is to say every plan, since there's only one. The reason to care isn't that it's generous; it's that an export you can run at any time is what makes a tool switchable, and a tool you can leave is a tool you can trust.

Export on every plan, because there's one plan.

Fluid Chat exports the whole workspace as JSONL, CSV and a file manifest, free, whether you self-host or use the hosted version.

If you're exporting in order to migrate

The uncomfortable truth about chat migrations is that the export is the easy half. Getting a Slack archive into another product is the genuinely hard part, and support for it is thin across the whole category — Fluid doesn't have a Slack importer either.

The pragmatic pattern most teams land on: export from Slack and keep it as the historical record, start clean in the new tool, and give people a month of overlap. History you rarely read is fine as a file. History you read daily needs to be in the tool — and that history starts accumulating the day you switch.

FAQ

Questions people actually ask.

Can you export your entire Slack history?

Partially. The standard export covers public channel messages and metadata as JSON. Exporting private channels and direct messages is generally tied to higher plans and a formal request process. On a free plan, an export captures the currently accessible window rather than the full archive.

Are direct messages included in a Slack export?

Not in the standard export. DM and private channel export is typically restricted to higher plans with an approval process, which exists for good privacy reasons — an admin being able to silently download everyone's DMs would be a serious problem.

What format is a Slack export?

A zip of JSON files organised by channel and day, containing messages, timestamps, user references, reactions and thread structure. Uploaded files are commonly referenced by URL rather than embedded, so download them separately if the archive needs to outlive those links.

Can I import a Slack export into another chat app?

Support varies and it's the weakest link in most migrations. Fluid Chat does not have a Slack importer yet. The common pattern is to keep the Slack export as a historical record, start fresh in the new tool, and run both briefly in parallel.

Does Fluid Chat let me export everything?

Yes — data export produces JSONL, CSV and a file manifest covering the whole workspace, and it's available on the free plan, which is the only plan. Self-hosted, you also have direct access to the Postgres database underneath.

Something not covered? Open an issue.

A tool you can leave is a tool you can trust.

Full workspace export, free, documented, on every plan. Start a workspace and try exporting it on day one — genuinely, that's a good test.