Moving from slack-export-viewer to SlackVault
slack-export-viewer reads an export you already hold, so you have what the importer needs.
The steps
- Set up SlackVault: Slack app setup, then Firebase setup, then the browser extension. The first sync is covered in Syncing & your archive.
- Load the same export:
SlackVault's Import page reads one JSON file, not a ZIP, so a Slack export needs merging first. Unzip it and run this
inside the folder that holds users.json and channels.json, with jq installed:
jq -n --slurpfile users users.json --slurpfile channels channels.json \
--slurpfile msgs <(for c in $(jq -r '.[] | "\(.id):\(.name)"' channels.json); do
jq -s --arg id "${c%%:*}" '{($id): add}' "${c#*:}"/*.json
done) \
'{users: $users[0], channels: $channels[0], messages: ($msgs | add)}' > slackvault-import.json
Then upload slackvault-import.json on the Import page of the web app, as described in
Search & export. Merge mode adds new records and updates
existing ones. Private channels and DMs need their own export files, which this command doesn't cover.
- Run a sync so history keeps building after the export's date.
Last checked November 7, 2026. Check slack-export-viewer for yourself. SlackVault is not affiliated with or endorsed by Slack.
Which one suits you
Choose slack-export-viewer if you already have a Slack export and only need a quick, readable way to scroll it or host it for the team.
Choose SlackVault if the problem is getting the history out in the first place, continuously and including private channels and DMs, not just viewing an export you already hold.
Prices
No price is stated on the pages we checked.
Side by side
| What you need | SlackVault | slack-export-viewer |
|---|---|---|
| Saves public channel messages | Yes | Yes: views whatever the export holds; Slack's free export is public channels Their page |
| Saves private channel messages | Yes | Not stated on the pages we checked |
| Saves direct messages and group DMs | Yes | Not stated on the pages we checked |
| Saves thread replies | Yes: A thread that fails to save is skipped, not retried | Not stated on the pages we checked |
| Saves shared files | Yes: File details always; copies only at a public link on our storage, when switched on | Not stated on the pages we checked |
| Runs on its own on a schedule | Yes: Every 15 minutes, while the browser runs | Not stated on the pages we checked |
| Copy lives in storage you control | Partly: Messages in your Firebase project; file copies are not in your storage | Yes: runs on your machine or your own server Their page |
| Search across the saved history | Yes: The most recent page of messages, up to 50 per query | Not stated on the pages we checked |
| Export to open file formats | Yes: JSON, CSV, HTML and Markdown | Yes: HTML for a static website Their page |
| Works without workspace admin rights | Partly: No admin scopes, though a workspace can require approval for new apps | Not stated on the pages we checked |
| Puts records back into Slack | No: No way yet to send records back into Slack | Not stated on the pages we checked |
| Free plan with no time limit | Yes | Not stated on the pages we checked |
What SlackVault does not do
- Messages, channels, members and file records go to your own Firebase project. Supabase is not supported yet.
- Files do not go to your Google Drive or your Firebase project. When file copying is switched on in our extension build, each file uploads to our file storage with its visibility set to public: the link is hard to guess, but anyone holding it can open the file without signing in. Where no storage key is set in the build, no copy is made, and your archive keeps the file’s details and Slack’s link, which works only while Slack serves that file.
- There is no way yet to send records back into Slack.
- The sync runs in a browser extension, every 15 minutes, only while that browser is running.
- SlackVault can copy only what Slack’s API still returns, so anything older than your plan’s window is out of reach unless an earlier sync already saved it.
- If saving one thread fails, the sync logs it and moves on without retrying those replies.
- Search checks the most recent page of messages, up to 50 per query, not the whole archive.
- The extension and the Android app have no store listing yet, and the source code is in a private repository.